View
56
Download
0
Category
Preview:
DESCRIPTION
Game Programming. Loading assets, Materials, Lighting & Shading, Camera, Game Loop , Input Handling. Informatics Engineering University of Brawijaya. Eriq Muhammad Adams J. eriq.adams@ub.ac.id. Agenda. Loading assets Materials Lighting & Shading Camera Game Loop Input Handling - PowerPoint PPT Presentation
Citation preview
Game Programming
Loading assets, Materials, Lighting & Shading, Camera, Game Loop,
Input Handling
Eriq Muhammad Adams J.eriq.adams@ub.ac.id
Informatics EngineeringUniversity of Brawijaya
Loading assets Materials Lighting & Shading Camera Game Loop Input Handling Sky Demo
Agenda
JME3 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.xml src/... dist/...
Loading Assets
Loading Textures
Loading Assets (cont.)
Add box image texture
“BrickWall.jpg”
Loading Texts and Fonts
Loading Assets (cont.)
Load default
font
Loading an Ogre XML Model
Loading Assets (cont.)
Load Ogre Model
Loading Assets From Custom Paths
Loading Assets (cont.)
Load Local Zip
File
Load Zip File
via HTTP
Load models with materials
Load models without materials
Loading Assets (cont.)Ogre XML
(.mesh.xml) and JME Binary (.j3o) Model included with Materials
included
.obj model didn’t came
with materials
Load Ogre Scene
How to export OgreXML scenes from Blender to JME:
https://docs.google.com/fileview?id=0B9hhZie2D-fENDBlZDU5MzgtNzlkYi00YmQzLTliNTQtNzZhYTJhYjEzNWNk&hl=en
Loading Assets (cont.)
Load ogre
scene
Default Materials Definition (in jme/core-data/Common)
Materials
Simple Unshaded Texture
Materials (cont.)
Create Unshade
d Material
Transparent Unshaded Texture
Materials (cont.)
Create Unshade
d Material
Activate Transparen
cy
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.
Materials (cont.)
Materials (cont.)
Materials (cont.)
Create Lighting Material
Set Diffuse Map
Texture
Set Normal Map
TextureSet Shininess
JME 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.
Lighting & Shading
Create Point Light
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.
Lighting and Shading (cont.)
Create Directional Light
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) …
Lighting and Shading (cont.)
Create Ambient
Light
BasicShadowRenderer, Use the Shadow Renderer to make textured scene nodes cast and receive shadows.
http://code.google.com/p/jmonkeyengine/source/browse/trunk/engine/src/test/jme3test/light/TestShadow.java
Lighting and Shading (cont.)
Switch Off default Shadow and Add
BasicShadowRenderer Scene Processor
Then you need set shadows for every scene that need shadows
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
Lighting and Shading (cont.)
You can set the following properties on the pssmRenderer object: setDirection(Vector3f) – the direction of the light setLambda(0.65f) – Factor to use to reduce the split size setShadowIntensity(0.7f) – shadow darkness (1 black, 0
invisible) setShadowZextend() – distance how far away from
camera shadows will still be computed Then you need set shadows for every scene that need
shadows http://code.google.com/p/jmonkeyengine/source/browse/trunk/engine/src/test/jme3test/light/TestPssmShado
w.java
Lighting and Shading (cont.)
JME 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 axis Aspect ratio of width divided by height Near view plane of 1 wu Far view plane of 1000 wu Start location at (0f, 0f, 10f). Start direction is looking at the origin.
Camera
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.
Camera (cont.)
Camera (cont.)
Chase Camera, jME3 also supports a Chase Cam that can follow a moving target Spatial (com.jme3.input.ChaseCamera).
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.
Camera (cont.)
Setup first view
Setup 2nd – 4th view
Camera (cont.)
Resizing and positioning viewport.
See TestMultiViews.java
Camera (cont.)
1. Initialization (simpleInit())2. If exit is requested, then cleanup and destroy3. Input handling (listeners)4. Update game state
Application States update User update (simpleUpdate() method) Entity logical update (Custom Controls)
5. render Application States rendering Scene rendering User rendering (simpleRender() method)
6. Repeat (goto 2)
Game Loop
3 types input handling that JME 3 support : Keyboard, Mouse, and Joystick.
Type of Trigger :
Input Handling
Input Handling (cont.)
Add trigger mapping
Input Handling (cont.)
One trigger
One Action
Multiple Trigger
One Action
Create Listeners, JME 3 has 2 type of listeners :com.jme3.input.controls.AnalogListener
Use for continuous and gradual actions.Examples: Walk, run, rotate, accelerate vehicle, strafe, (semi-)automatic weapon shot
JME 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.JME gives you access to:
the name of the triggered action.a boolean whether the key is still pressed or has just been released.
Input Handling (cont.)
Register Mappings to Listeners, To activate the mappings, you must register them to the Listener.
Input Handling (cont.)
Implements Action
Input Handling (cont.)
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.
Sky
To Create Sky Box set sphere boolean value
to false
DemoScene.zip
Demo
Recommended