Presentation on theme: "Game Programming Loading assets, Materials, Lighting & Shading, Camera, Game Loop, Input Handling Informatics Engineering University of Brawijaya Eriq."— Presentation transcript:
1 Game ProgrammingLoading assets, Materials, Lighting & Shading, Camera, Game Loop, Input HandlingInformatics EngineeringUniversity of BrawijayaEriq Muhammad Adams J.
2 Agenda Loading assets Materials Lighting & Shading Camera Game Loop Input HandlingSkyDemo
3 Loading AssetsJME3 comes with a handy asset manager that helps you keep your assets structured.assets/Interface/assets/MatDefs/assets/Materials/assets/Models/assets/Scenes/assets/Shaders/assets/Sounds/assets/Textures/build.xmlsrc/...dist/...
5 Loading Assets (cont.)Load default fontLoading Texts and Fonts
6 Loading Assets (cont.)Load Ogre ModelLoading an Ogre XML Model
7 Loading Assets (cont.) Loading Assets From Custom Paths Load Local Zip FileLoading Assets From Custom PathsLoad Zip File via HTTP
8 .obj model didn’t came with materials Loading Assets (cont.)Ogre XML (.mesh.xml) and JME Binary (.j3o) Model included with Materials includedLoad models with materialsLoad models without materials.obj model didn’t came with materials
9 Loading Assets (cont.) Load Ogre Scene How to export OgreXML scenes from Blender to JME:https://docs.google.com/fileview?id=0B9hhZie2D-fENDBlZDU5MzgtNzlkYi00YmQzLTliNTQtNzZhYTJhYjEzNWNk&hl=en
10 MaterialsDefault Materials Definition (in jme/core-data/Common)
11 Create Unshaded Material Materials (cont.)Simple Unshaded TextureCreate Unshaded Material
13 Materials (cont.)You have to use lit material to get nice looks. n a lit material, the standard texture layer is referred to as Diffuse Map, any material can have it. A lit material can additionally have lighting effects such as Shininess used together with the Specular Map layer, and even a realistically bumpy or cracked surface with help of the Normal Map layer.
15 Materials (cont.) Create Lighting Material Set Diffuse Map Texture Set Normal Map TextureSet Shininess
16 Lighting & ShadingJME 3 has three types of light : point light, ambient light, directional light, and spot light.A PointLight has a location and shines from there in all directions as far as its radius reaches, like a lamp. The light intensity decreases with increased distance from the light source.Create Point Light
17 Lighting and Shading (cont.) A DirectionalLight has no position, only a direction. It is considered “infinitely” far away and sends out parallel beams of light. It can cast shadows. You typically use it to simulate sun light.Create Directional Light
18 Lighting and Shading (cont.) An AmbientLight influences the brightness of the whole scene globally. It has no direction and no location, and does not cast any shadow.SpotLight is WIP (Work In Progress) …CreateAmbient Light
19 Lighting and Shading (cont.) BasicShadowRenderer, Use the Shadow Renderer to make textured scene nodes cast and receive shadows.Switch Off default Shadow and Add BasicShadowRenderer Scene Processor
20 Lighting and Shading (cont.) Then you need set shadows for every scene that need shadows
21 Lighting and Shading (cont.) PSSM shadow renderer, The PSSM shadow renderer can cast real-time shadows on curved surfaces. To activate it, add a jME SceneProcessor named com.jme3.shadow.PssmShadowRenderer to the viewPort
22 Lighting and Shading (cont.) You can set the following properties on the pssmRenderer object:setDirection(Vector3f) – the direction of the lightsetLambda(0.65f) – Factor to use to reduce the split sizesetShadowIntensity(0.7f) – shadow darkness (1 black, 0 invisible)setShadowZextend() – distance how far away from camera shadows will still be computedThen you need set shadows for every scene that need shadows
23 CameraJME 3 have 3 types of built-in camera : Default Camera, FlyBy Camera, Chase Camera.Default Camera, The default com.jme3.renderer.Camera object is cam in com.jme3.app.Application. Has default settings.Width and height are set to the current Application's settings.getWidth() and settings.getHeight() values.Frustum Perspective:Frame of view angle of 45° along the Y axisAspect ratio of width divided by heightNear view plane of 1 wuFar view plane of 1000 wuStart location at (0f, 0f, 10f).Start direction is looking at the origin.
25 Camera (cont.)FlyBy Camera, The flyby camera is an extension of the default camera in com.jme3.app.SimpleApplication. It is preconfigured to respond to the WASD keys for walking forwards and backwards, and for strafing to the sides. Move the mouse to rotate the camera, scroll the mouse wheel for zooming in or out. The QZ keys raise or lower the camera.
27 Camera (cont.)Chase Camera, jME3 also supports a Chase Cam that can follow a moving target Spatial (com.jme3.input.ChaseCamera).
28 Camera (cont.)Multiple Camera Views, You can split the screen and look into the 3D scene from different camera angles at the same time. In this example, we create four views (2×2) with the same aspect ratio as the normal view, but half the size.
29 Camera (cont.)Setup first viewSetup 2nd – 4th view
30 Camera (cont.) Resizing and positioning viewport. See TestMultiViews.java
31 Game Loop Initialization (simpleInit()) If exit is requested, then cleanup and destroyInput handling (listeners)Update game stateApplication States updateUser update (simpleUpdate() method)Entity logical update (Custom Controls)renderApplication States renderingScene renderingUser rendering (simpleRender() method)Repeat (goto 2)
32 Input Handling3 types input handling that JME 3 support : Keyboard, Mouse, and Joystick.Type of Trigger :
34 Input Handling (cont.) Add trigger mapping One trigger One Action Multiple TriggerOne Action
35 Input Handling (cont.)Create Listeners, JME 3 has 2 type of listeners :com.jme3.input.controls.AnalogListenerUse for continuous and gradual actions.Examples: Walk, run, rotate, accelerate vehicle, strafe, (semi-)automatic weapon shotJME gives you access to:the name of the triggered action.a gradual value between 0-9 how long the key has been pressed.com.jme3.input.controls.ActionListenerUse for absolute “pressed or released?”, “on or off?” actions.Examples: Pause/unpause, a rifle or revolver shot, jump, click to select.a boolean whether the key is still pressed or has just been released.
36 Input Handling (cont.)Register Mappings to Listeners, To activate the mappings, you must register them to the Listener.
38 To Create Sky Box set sphere boolean value to false You can use any Node as sky, even complex sets of geometries and quads with animated clouds, blinking stars, city skylines, etc. But, if you want a simple method use SkyFactory in JME 3.To Create Sky Box set sphere boolean value to false