|
@@ -1,11 +1,7 @@
|
|
= Frequently Asked Questions
|
|
= Frequently Asked Questions
|
|
-:author:
|
|
|
|
-:revnumber:
|
|
|
|
-:revdate: 2016/03/17 20:48
|
|
|
|
|
|
+:revnumber: 2.0
|
|
|
|
+:revdate: 2020/07/13
|
|
:keywords: documentation, faq
|
|
:keywords: documentation, faq
|
|
-:relfileprefix: ../
|
|
|
|
-:imagesdir: ..
|
|
|
|
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -18,7 +14,7 @@ Write a Java class that extends link:https://github.com/jMonkeyEngine/jmonkeyeng
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_simpleapplication#,Hello SimpleApplication>>
|
|
|
|
|
|
+* xref:beginner/hello_simpleapplication.adoc[Hello SimpleApplication]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/app/TestAppStateLifeCycle.java[TestAppStateLifeCycle].
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/app/TestAppStateLifeCycle.java[TestAppStateLifeCycle].
|
|
|
|
|
|
|
|
|
|
@@ -32,12 +28,12 @@ viewPort.setBackgroundColor(ColorRGBA.Blue);
|
|
|
|
|
|
=== Can I customize the SimpleApplication class?
|
|
=== Can I customize the SimpleApplication class?
|
|
|
|
|
|
-Yes! Actually, you MUST customize it! For your own games, you always create a custom base class that extends link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/app/SimpleApplication.java[com.jme3.app.SimpleApplication] class. From now on it's no longer a `simple application` – it's now your game. Configure your <<jme3/intermediate/appsettings#,application settings>>, implement methods, and customize away!
|
|
|
|
|
|
+Yes! Actually, you MUST customize it! For your own games, you always create a custom base class that extends link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/app/SimpleApplication.java[com.jme3.app.SimpleApplication] class. From now on it's no longer a `simple application` – it's now your game. Configure your xref:ROOT:jme3/intermediate/appsettings.adoc[application settings], implement methods, and customize away!
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/intermediate/simpleapplication#,SimpleApplication>>
|
|
|
|
-* <<jme3/intermediate/appsettings#,AppSettings>>
|
|
|
|
|
|
+* xref:ROOT:jme3/intermediate/simpleapplication.adoc[SimpleApplication]
|
|
|
|
+* xref:ROOT:jme3/intermediate/appsettings.adoc[AppSettings]
|
|
|
|
|
|
|
|
|
|
=== How can I switch between screens or states?
|
|
=== How can I switch between screens or states?
|
|
@@ -46,7 +42,7 @@ You should break down your application logic into components by spreading it out
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/application_states#,Application States>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/application_states.adoc[Application States]
|
|
|
|
|
|
|
|
|
|
=== How do I pause/unpause a game?
|
|
=== How do I pause/unpause a game?
|
|
@@ -55,7 +51,7 @@ You split up your application into several AppStates and implement the setEnable
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/application_states#,Application States>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/application_states.adoc[Application States]
|
|
|
|
|
|
|
|
|
|
=== How do I disable logger output to the console?
|
|
=== How do I disable logger output to the console?
|
|
@@ -76,7 +72,7 @@ java.util.logging.Logger.getLogger("").setLevel(Level.SEVERE);
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/logging#,Logging>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/logging.adoc[Logging]
|
|
|
|
|
|
|
|
|
|
=== Why does the executable crash with "Cannot locate resource"?
|
|
=== Why does the executable crash with "Cannot locate resource"?
|
|
@@ -85,7 +81,7 @@ Make sure to only load() models converted to .j3o binary format, not the origina
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/asset_manager#,Asset Manager>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/asset_manager.adoc[Asset Manager]
|
|
|
|
|
|
|
|
|
|
=== What is java.lang.LinkageError: Version mismatch?
|
|
=== What is java.lang.LinkageError: Version mismatch?
|
|
@@ -121,10 +117,10 @@ rootNode.detachChild(spatial); // remove from scene
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/the_scene_graph#,The Scene Graph>>
|
|
|
|
-* <<jme3/beginner/hello_node#,Hello Node>>
|
|
|
|
-* <<jme3/beginner/hello_asset#,Hello Asset>>
|
|
|
|
-* <<jme3/advanced/spatial#,Spatial>>
|
|
|
|
|
|
+* xref:ROOT:jme3/the_scene_graph.adoc[The Scene Graph]
|
|
|
|
+* xref:beginner/hello_node.adoc[Hello Node]
|
|
|
|
+* xref:beginner/hello_asset.adoc[Hello Asset]
|
|
|
|
+* xref:ROOT:jme3/advanced/spatial.adoc[Spatial]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/scene/Node.java[com.jme3.scene.Node]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/scene/Node.java[com.jme3.scene.Node]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/scene/Geometry.java[com.jme3.scene.Geometry]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/scene/Geometry.java[com.jme3.scene.Geometry]
|
|
|
|
|
|
@@ -152,21 +148,21 @@ this.assetManager.registerLocator("town.zip", ZipLocator.class);
|
|
|
|
|
|
Note that you should not register every single folder containing a texture as the assetmanager will not be able to discern between images with the same name anymore.
|
|
Note that you should not register every single folder containing a texture as the assetmanager will not be able to discern between images with the same name anymore.
|
|
|
|
|
|
-*Learn more:* <<jme3/advanced/asset_manager#,Asset Manager>>
|
|
|
|
|
|
+*Learn more:* xref:ROOT:jme3/advanced/asset_manager.adoc[Asset Manager]
|
|
|
|
|
|
|
|
|
|
=== How do I Create 3-D models, textures, sounds?
|
|
=== How do I Create 3-D models, textures, sounds?
|
|
|
|
|
|
-Follow our best practices for the <<jme3/intermediate/multi-media_asset_pipeline#,multi-media asset pipeline>>. +
|
|
|
|
-You create 3-D models in a 3-D mesh editor, for example Blender, and export it in one of the 3D model <<jme3/features#supported-external-file-types,Supported External File Types>> such as GLTF (animated objects, scenes) or Wavefront OBJ format (static objects, scenes).
|
|
|
|
|
|
+Follow our best practices for the xref:intermediate/multi-media_asset_pipeline.adoc[multi-media asset pipeline]. +
|
|
|
|
+You create 3-D models in a 3-D mesh editor, for example Blender, and export it in one of the 3D model xref:ROOT:jme3/features.adoc#supported-external-file-types[Supported External File Types] such as GLTF (animated objects, scenes) or Wavefront OBJ format (static objects, scenes).
|
|
You create textures in a graphic editor, for example Gimp, and export them as PNG or JPG.
|
|
You create textures in a graphic editor, for example Gimp, and export them as PNG or JPG.
|
|
You create sounds in an audio editor, for example, Audacity, and export them as WAVE or OGG.
|
|
You create sounds in an audio editor, for example, Audacity, and export them as WAVE or OGG.
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/3d_models#,3D Models>>
|
|
|
|
-* <<jme3/intermediate/multi-media_asset_pipeline#,Multi-Media Asset Pipeline>>
|
|
|
|
-* <<jme3/external/blender#,Creating assets in Blender3D>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/3d_models.adoc[3D Models]
|
|
|
|
+* xref:intermediate/multi-media_asset_pipeline.adoc[multi-media asset pipeline]
|
|
|
|
+* xref:ROOT:jme3/external/blender.adoc[Creating assets in Blender3D]
|
|
* link:http://blender.org[Download Blender]
|
|
* link:http://blender.org[Download Blender]
|
|
* link:http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro[Blender intro tutorial]
|
|
* link:http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro[Blender intro tutorial]
|
|
* link:http://en.wikipedia.org/wiki/Comparison_of_3D_computer_graphics_software#Features[Comparison of 3D graphic software features (Wikipedia)].
|
|
* link:http://en.wikipedia.org/wiki/Comparison_of_3D_computer_graphics_software#Features[Comparison of 3D graphic software features (Wikipedia)].
|
|
@@ -174,7 +170,7 @@ You create sounds in an audio editor, for example, Audacity, and export them as
|
|
|
|
|
|
=== How do I load a 3-D model into the scene?
|
|
=== How do I load a 3-D model into the scene?
|
|
|
|
|
|
-Export your model using one of the <<jme3/features#supported-external-file-types,Supported External File Types>> for 3D models. Convert to .j3o binary format. Load the .j3o file using the AssetManager.
|
|
|
|
|
|
+Export your model using one of the xref:ROOT:jme3/features.adoc#supported-external-file-types[Supported External File Types] for 3D models. Convert to .j3o binary format. Load the .j3o file using the AssetManager.
|
|
|
|
|
|
[source,java]
|
|
[source,java]
|
|
----
|
|
----
|
|
@@ -184,11 +180,11 @@ Spatial ninja = assetManager.loadModel("Models/Ninja/Ninja.j3o");
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_asset#,Hello Asset>>
|
|
|
|
-* <<jme3/advanced/asset_manager#,Asset Manager>>
|
|
|
|
|
|
+* xref:beginner/hello_asset.adoc[Hello Asset]
|
|
|
|
+* xref:ROOT:jme3/advanced/asset_manager.adoc[Asset Manager]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/asset/AssetManager.java[com.jme3.assets.AssetManager]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/asset/AssetManager.java[com.jme3.assets.AssetManager]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/scene/Geometry.java[com.jme3.scene.Geometry]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/scene/Geometry.java[com.jme3.scene.Geometry]
|
|
-* <<sdk/model_loader_and_viewer#,jMonkeyEngine SDK j3o converter>>
|
|
|
|
|
|
+* xref:sdk:model_loader_and_viewer.adoc[jMonkeyEngine SDK j3o converter]
|
|
|
|
|
|
*Code sample:*
|
|
*Code sample:*
|
|
|
|
|
|
@@ -203,7 +199,7 @@ Use the simpleInitApp() method in SimpleApplication (or initApp() in Application
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_simpleapplication#,Hello SimpleApplication>>
|
|
|
|
|
|
+* xref:beginner/hello_simpleapplication.adoc[Hello SimpleApplication]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/app/SimpleApplication.java[SimpleApplication.java]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/app/SimpleApplication.java[SimpleApplication.java]
|
|
|
|
|
|
|
|
|
|
@@ -212,7 +208,7 @@ Use the simpleInitApp() method in SimpleApplication (or initApp() in Application
|
|
|
|
|
|
=== How do I move or turn or resize a spatial?
|
|
=== How do I move or turn or resize a spatial?
|
|
|
|
|
|
-To move or turn or resize a spatial you use transformations. You can concatenate transformations (e.g. perform rotations around several axes in one step using a <<jme3/rotate.html#,Quaternion>> with `slerp()` or a com.jme3.math.Transform with interpolateTransforms().
|
|
|
|
|
|
+To move or turn or resize a spatial you use transformations. You can concatenate transformations (e.g. perform rotations around several axes in one step using a xref:intermediate/rotate.adoc[Quaternion] with `slerp()` or a com.jme3.math.Transform with interpolateTransforms().
|
|
|
|
|
|
[source,java]
|
|
[source,java]
|
|
----
|
|
----
|
|
@@ -221,21 +217,21 @@ spatial.setLocalTranslation(1,-3,2.5f); spatial.rotate(0,3.14f,0); spatial.scale
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_node#,Hello Node>>
|
|
|
|
-* <<jme3/advanced/spatial#,Spatial>>
|
|
|
|
-* <<jme3/math_for_dummies#,math_for_dummies>>
|
|
|
|
|
|
+* xref:beginner/hello_node.adoc[Hello Node]
|
|
|
|
+* xref:ROOT:jme3/advanced/spatial.adoc[Spatial]
|
|
|
|
+* xref:intermediate/math_for_dummies.adoc[Math For Dummies]
|
|
|
|
|
|
|
|
|
|
=== How do I make a spatial move by itself?
|
|
=== How do I make a spatial move by itself?
|
|
|
|
|
|
-Change the geometry's translation (position) live in the update loop using setLocalTranslation() for non-physical and applyForce() or setWalkDirection() for physical objects. You can also define and remote-control a spatial's motion using <<jme3/advanced/cinematics#,Cinematics>>, e.g. to record cutscenes, or to implement mobile platforms, elevators, airships, etc.
|
|
|
|
|
|
+Change the geometry's translation (position) live in the update loop using setLocalTranslation() for non-physical and applyForce() or setWalkDirection() for physical objects. You can also define and remote-control a spatial's motion using xref:ROOT:jme3/advanced/cinematics.adoc[Cinematics], e.g. to record cutscenes, or to implement mobile platforms, elevators, airships, etc.
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_main_event_loop#,Hello Loop>>
|
|
|
|
-* <<jme3/advanced/update_loop#,Update Loop>>
|
|
|
|
-* <<jme3/advanced/custom_controls#,Custom Controls>>
|
|
|
|
-* <<jme3/advanced/cinematics#,Cinematics>>
|
|
|
|
|
|
+* xref:beginner/hello_main_event_loop.adoc[Hello Loop]
|
|
|
|
+* xref:ROOT:jme3/advanced/update_loop.adoc[Update Loop]>
|
|
|
|
+* xref:ROOT:jme3/advanced/custom_controls.adoc[Custom Controls]
|
|
|
|
+* xref:ROOT:jme3/advanced/cinematics.adoc[Cinematics]
|
|
|
|
|
|
*Code sample:*
|
|
*Code sample:*
|
|
|
|
|
|
@@ -252,7 +248,7 @@ Geometry submesh = (Geometry) model.getChild("door 12");
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/spatial#,Spatial>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/spatial.adoc[Spatial]
|
|
|
|
|
|
|
|
|
|
=== How do I make procedural or custom shapes?
|
|
=== How do I make procedural or custom shapes?
|
|
@@ -261,7 +257,7 @@ You can programmatically create com.jme3.scene.Mesh'es.
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/custom_meshes#,Custom Meshes>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/custom_meshes.adoc[Custom Meshes]
|
|
|
|
|
|
|
|
|
|
== I want to change the surface of objects in the scene
|
|
== I want to change the surface of objects in the scene
|
|
@@ -307,9 +303,9 @@ Use the AssetManager to load Materials, and change material settings.
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_material#,Hello Material>>
|
|
|
|
-* <<jme3/intermediate/how_to_use_materials#,How To Use Materials>>
|
|
|
|
-* <<jme3/advanced/materials_overview#,Materials Overview>>, <<jme3/advanced/asset_manager#,Asset Manager>>
|
|
|
|
|
|
+* xref:beginner/hello_material.adoc[Hello Material]
|
|
|
|
+* xref:intermediate/how_to_use_materials.adoc[How To Use Materials]
|
|
|
|
+* xref:ROOT:jme3/advanced/materials_overview.adoc[Materials Overview], xref:ROOT:jme3/advanced/asset_manager.adoc[Asset Manager]
|
|
|
|
|
|
*Code sample:*
|
|
*Code sample:*
|
|
|
|
|
|
@@ -323,10 +319,10 @@ Create Textures as image files. Use the AssetManager to load a Material and use
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_material#,Hello Material>>
|
|
|
|
-* <<jme3/intermediate/how_to_use_materials#,How To Use Materials>>
|
|
|
|
-* <<jme3/advanced/materials_overview#,Materials Overview>>
|
|
|
|
-* <<jme3/advanced/asset_manager#,Asset Manager>>
|
|
|
|
|
|
+* xref:beginner/hello_material.adoc[Hello Material]
|
|
|
|
+* xref:intermediate/how_to_use_materials.adoc[How To Use Materials]
|
|
|
|
+* xref:ROOT:jme3/advanced/materials_overview.adoc[Materials Overview]
|
|
|
|
+* xref:ROOT:jme3/advanced/asset_manager.adoc[Asset Manager]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/asset/AssetManager.java[com.jme3.assets.AssetManager]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/asset/AssetManager.java[com.jme3.assets.AssetManager]
|
|
* link:https://archive.blender.org/wiki/index.php/Doc:Manual/Textures/Maps/Bump_and_Normal_Maps/[Blender: Creating Bump Maps and Normal Maps]
|
|
* link:https://archive.blender.org/wiki/index.php/Doc:Manual/Textures/Maps/Bump_and_Normal_Maps/[Blender: Creating Bump Maps and Normal Maps]
|
|
|
|
|
|
@@ -346,7 +342,7 @@ Use com.jme3.shadow.BasicShadowRenderer together with com.jme3.light.Directional
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/light_and_shadow#,Light and Shadow>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/light_and_shadow.adoc[Light and Shadow]
|
|
|
|
|
|
*Code sample:*
|
|
*Code sample:*
|
|
|
|
|
|
@@ -365,8 +361,8 @@ material.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_material#,Hello Material>>
|
|
|
|
-* <<jme3/intermediate/how_to_use_materials#,How To Use Materials>>
|
|
|
|
|
|
+* xref:beginner/hello_material.adoc[Hello Material]
|
|
|
|
+* xref:intermediate/how_to_use_materials.adoc[How To Use Materials]
|
|
|
|
|
|
|
|
|
|
=== How do I force or disable culling?
|
|
=== How do I force or disable culling?
|
|
@@ -387,7 +383,7 @@ someNode.setCullHint(CullHint.Never);
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/spatial#,Spatial>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/spatial.adoc[Spatial]
|
|
|
|
|
|
|
|
|
|
=== Can I draw only an outline of the scene?
|
|
=== Can I draw only an outline of the scene?
|
|
@@ -401,7 +397,7 @@ material.getAdditionalRenderState().setWireframe(true);
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/debugging#,Debugging>>.
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/debugging.adoc[Debugging]
|
|
|
|
|
|
|
|
|
|
== I want to control the camera
|
|
== I want to control the camera
|
|
@@ -433,7 +429,7 @@ flyCam.setEnabled(true);
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_collision#,Hello Collision>>
|
|
|
|
|
|
+* xref:beginner/hello_collision.adoc[Hello Collision]
|
|
|
|
|
|
*Code sample:*
|
|
*Code sample:*
|
|
|
|
|
|
@@ -473,11 +469,11 @@ Use Controls to define the behaviour of types of Spatials. Use Application State
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_main_event_loop#,Hello Loop>>
|
|
|
|
-* <<jme3/advanced/update_loop#,Update Loop>>
|
|
|
|
-* <<jme3/advanced/custom_controls#,Custom Controls>>
|
|
|
|
-* <<jme3/advanced/application_states#,Application States>>
|
|
|
|
-* <<jme3/advanced/cinematics#,Cinematics>>
|
|
|
|
|
|
+* xref:beginner/hello_main_event_loop.adoc[Hello Loop]
|
|
|
|
+* xref:ROOT:jme3/advanced/update_loop.adoc[Update Loop]
|
|
|
|
+* xref:ROOT:jme3/advanced/custom_controls.adoc[Custom Controls]
|
|
|
|
+* xref:ROOT:jme3/advanced/application_states.adoc[Application States]
|
|
|
|
+* xref:ROOT:jme3/advanced/cinematics.adoc[Cinematics]
|
|
|
|
|
|
|
|
|
|
=== How do I let players interact via keyboard?
|
|
=== How do I let players interact via keyboard?
|
|
@@ -486,8 +482,8 @@ Use com.jme3.input.KeyInput and a Input Listener.
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_input_system#,Hello Input>>
|
|
|
|
-* <<jme3/advanced/input_handling#,Input Handling>>
|
|
|
|
|
|
+* xref:beginner/hello_input_system.adoc[Hello Input]
|
|
|
|
+* xref:ROOT:jme3/advanced/input_handling.adoc[Input Handling]
|
|
|
|
|
|
|
|
|
|
=== How do I let players interact by clicking?
|
|
=== How do I let players interact by clicking?
|
|
@@ -496,10 +492,10 @@ Players typically click the mouse to pick up objects, to open doors, to shoot a
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_picking#,Hello Picking>>
|
|
|
|
-* <<jme3/advanced/mouse_picking#,Mouse Picking>>
|
|
|
|
-* <<jme3/advanced/collision_and_intersection#,Collision and Intersection>>
|
|
|
|
-* <<jme3/advanced/input_handling#,Input Handling>>
|
|
|
|
|
|
+* xref:beginner/hello_picking.adoc[Hello Picking]
|
|
|
|
+* xref:ROOT:jme3/advanced/mouse_picking.adoc[Mouse Picking]
|
|
|
|
+* xref:ROOT:jme3/advanced/collision_and_intersection.adoc[Collision and Intersection]
|
|
|
|
+* xref:ROOT:jme3/advanced/input_handling.adoc[Input Handling]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-core/src/main/java/com/jme3/bounding[com.jme3.bounding.]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-core/src/main/java/com/jme3/bounding[com.jme3.bounding.]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/math/Ray.java[com.jme3.math.Ray.java]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/math/Ray.java[com.jme3.math.Ray.java]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/math/Ray.java[com.jme3.collision.CollisionResults.java]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/math/Ray.java[com.jme3.collision.CollisionResults.java]
|
|
@@ -516,8 +512,8 @@ Create an animated OgreMesh model with bones in a 3-D mesh editor (e.g. Blender)
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-core/src/main/java/com/jme3/animation[com.jme3.animation.]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-core/src/main/java/com/jme3/animation[com.jme3.animation.]
|
|
-* <<jme3/beginner/hello_animation#,Hello Animation>>
|
|
|
|
-* <<jme3/advanced/animation#,Animation>>
|
|
|
|
|
|
+* xref:beginner/hello_animation.adoc[Hello Animation]
|
|
|
|
+* xref:ROOT:jme3/advanced/animation.adoc[Animation]
|
|
* link:https://archive.blender.org/wiki/index.php/Doc:Tutorials/Animation/BSoD/Character_Animation/[Blender animation tutorial]
|
|
* link:https://archive.blender.org/wiki/index.php/Doc:Tutorials/Animation/BSoD/Character_Animation/[Blender animation tutorial]
|
|
|
|
|
|
*Code sample:*
|
|
*Code sample:*
|
|
@@ -531,8 +527,8 @@ Use collision detection. The most common solution is to use jme's physics integr
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_collision#,Hello Collision>>
|
|
|
|
-* <<jme3/advanced/physics#,Physics>>
|
|
|
|
|
|
+* xref:beginner/hello_collision.adoc[Hello Collision]
|
|
|
|
+* xref:ROOT:jme3/advanced/physics.adoc[Physics]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-bullet/src/common/java/com/jme3/bullet[com.jme3.bullet.]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-bullet/src/common/java/com/jme3/bullet[com.jme3.bullet.]
|
|
* CapsuleCollisionShape versus CompoundCollisionShape, CharacterControl versus RigidBodyControl.
|
|
* CapsuleCollisionShape versus CompoundCollisionShape, CharacterControl versus RigidBodyControl.
|
|
|
|
|
|
@@ -543,8 +539,8 @@ Add physics controls to Spatials and give them spherical or cylindrical bounding
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_physics#,Hello Physics>>
|
|
|
|
-* <<jme3/advanced/physics#,Physics>>
|
|
|
|
|
|
+* xref:beginner/hello_physics.adoc[Hello Physics]
|
|
|
|
+* xref:ROOT:jme3/advanced/physics.adoc[Physics]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-core/src/main/java/com/jme3/bounding[com.jme3.bounding.]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-core/src/main/java/com/jme3/bounding[com.jme3.bounding.]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-bullet/src/main/java/com/jme3/bullet/collision[com.jme3.bullet.collisions]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-bullet/src/main/java/com/jme3/bullet/collision[com.jme3.bullet.collisions]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-bullet/src/common/java/com/jme3/bullet/control/RigidBodyControl.java[com.jme3.bullet.control.RigidBodyControl.java]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-bullet/src/common/java/com/jme3/bullet/control/RigidBodyControl.java[com.jme3.bullet.control.RigidBodyControl.java]
|
|
@@ -571,7 +567,7 @@ You can use jBullet's CharacterControl that locks a physical object upright, so
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/walking_character#bettercharactercontrol,BetterCharacterControl>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/walking_character.adoc#bettercharactercontrol[BetterCharacterControl]
|
|
|
|
|
|
*Code Sample:*
|
|
*Code Sample:*
|
|
|
|
|
|
@@ -585,7 +581,7 @@ Use a VehicleControl that supports suspension behavior.
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/vehicles#,Vehicles>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/vehicles.adoc[Vehicles]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-bullet/src/common/java/com/jme3/bullet/control/[com.jme3.bullet.control.VehicleControl]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-bullet/src/common/java/com/jme3/bullet/control/[com.jme3.bullet.control.VehicleControl]
|
|
|
|
|
|
*Code Sample:*
|
|
*Code Sample:*
|
|
@@ -599,7 +595,7 @@ Use a PhysicsControl's hinges and joints.
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/hinges_and_joints#,Hinges and Joints>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/hinges_and_joints.adoc[Hinges and Joints]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/bullet/TestPhysicsHingeJoint.java[TestPhysicsHingeJoint.java] (Press HK keys to turn, spacebar to swing.)
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/bullet/TestPhysicsHingeJoint.java[TestPhysicsHingeJoint.java] (Press HK keys to turn, spacebar to swing.)
|
|
|
|
|
|
|
|
|
|
@@ -608,11 +604,7 @@ Use a PhysicsControl's hinges and joints.
|
|
|
|
|
|
=== What are these FPS/Objects/Vertices/Triangles statistics?
|
|
=== What are these FPS/Objects/Vertices/Triangles statistics?
|
|
|
|
|
|
-At the bottom left of every default SimpleGame, you see the <<jme3/advanced/statsview#,StatsView>> and the FPS (frames per seconds) view. These views provide you with extra information during the development phase. For example, if you notice the object count is increasing and the FPS is decreasing, then you know that your code attaches too many objects and does not detach enough of them again (maybe a loop gone wild?).
|
|
|
|
-
|
|
|
|
-*Learn more:*
|
|
|
|
-
|
|
|
|
-* <<jme3/advanced/statsview#,StatsView>>
|
|
|
|
|
|
+At the bottom left of every default SimpleGame, you see the xref:ROOT:jme3/advanced/statsview.adoc[StatsView] and the FPS (frames per seconds) view. These views provide you with extra information during the development phase. For example, if you notice the object count is increasing and the FPS is decreasing, then you know that your code attaches too many objects and does not detach enough of them again (maybe a loop gone wild?).
|
|
|
|
|
|
|
|
|
|
=== How do I get rid of the FPS/Objects statistics?
|
|
=== How do I get rid of the FPS/Objects statistics?
|
|
@@ -632,7 +624,7 @@ Attach text and pictures to the orthogonal `guiNode` to create a heads-up displa
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/hud#,HUD>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/hud.adoc[HUD]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-core/src/main/java/com/jme3/font[com.jme3.font.]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-core/src/main/java/com/jme3/font[com.jme3.font.]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/ui/Picture.java[com.jme3.ui.Picture] guiNode.attachChild()
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/ui/Picture.java[com.jme3.ui.Picture] guiNode.attachChild()
|
|
|
|
|
|
@@ -648,7 +640,7 @@ You may want to display buttons to let the player switch between the game, setti
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/nifty_gui#,Nifty GUI>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/nifty_gui.adoc[Nifty GUI]
|
|
|
|
|
|
*Code Sample:*
|
|
*Code Sample:*
|
|
|
|
|
|
@@ -661,7 +653,7 @@ Instead of having a frozen frame while your games loads, you can have a loading
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/loading_screen#,Loading screen>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/loading_screen.adoc[Loading screen]
|
|
|
|
|
|
|
|
|
|
== Nifty GUI
|
|
== Nifty GUI
|
|
@@ -684,7 +676,7 @@ link:https://github.com/nifty-gui/nifty-gui[https://github.com/nifty-gui/nifty-g
|
|
|
|
|
|
=== Is there Java Doc for Nifty GUI?
|
|
=== Is there Java Doc for Nifty GUI?
|
|
|
|
|
|
-<<jme3/advanced/nifty_gui_java_interaction#useful_links,Nifty GUI 1.3 Java docs>>
|
|
|
|
|
|
+xref:ROOT:jme3/advanced/nifty_gui_java_interaction.adoc#useful_links[Nifty GUI 1.3 Java docs]
|
|
|
|
|
|
|
|
|
|
== I want to create an environment with sounds, effects, and landscapes
|
|
== I want to create an environment with sounds, effects, and landscapes
|
|
@@ -696,8 +688,8 @@ Use AudioRenderer, Listener, and AudioNode from com.jme3.audio..
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_audio#,Hello Audio>>
|
|
|
|
-* <<jme3/advanced/audio#,Audio>>
|
|
|
|
|
|
+* xref:ROOT:jme3/beginner/hello_audio.adoc[Hello Audio]
|
|
|
|
+* xref:ROOT:jme3/advanced/audio.adoc[Audio]
|
|
|
|
|
|
*Code sample:*
|
|
*Code sample:*
|
|
|
|
|
|
@@ -710,10 +702,10 @@ For swarm like effects you use particle emitters.
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_effects#,Hello Effects>>
|
|
|
|
-* <<jme3/advanced/particle_emitters#,Particle Emitters>>
|
|
|
|
-* <<jme3/advanced/bloom_and_glow#,Bloom and Glow>>
|
|
|
|
-* <<jme3/advanced/effects_overview#,Effects Overview>>
|
|
|
|
|
|
+* xref:beginner/hello_effects.adoc[Hello Effects]
|
|
|
|
+* xref:ROOT:jme3/advanced/particle_emitters.adoc[Particle Emitters]
|
|
|
|
+* xref:ROOT:jme3/advanced/bloom_and_glow.adoc[Bloom and Glow]
|
|
|
|
+* xref:ROOT:jme3/advanced/effects_overview.adoc[Effects Overview]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/effect/shapes/EmitterSphereShape.java[com.jme3.effect.EmitterSphereShape.java]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/effect/shapes/EmitterSphereShape.java[com.jme3.effect.EmitterSphereShape.java]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/effect/ParticleEmitter.java[com.jme3.effect.ParticleEmitter.java]
|
|
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/effect/ParticleEmitter.java[com.jme3.effect.ParticleEmitter.java]
|
|
|
|
|
|
@@ -730,8 +722,8 @@ Use a special post-processor renderer from com.jme3.water..
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/water#,Water>>
|
|
|
|
-* <<jme3/advanced/post-processor_water#,Post-Processor Water>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/water.adoc[Water]
|
|
|
|
+* xref:ROOT:jme3/advanced/post-processor_water.adoc[Post-Processor Water]
|
|
|
|
|
|
*Code sample:*
|
|
*Code sample:*
|
|
|
|
|
|
@@ -747,7 +739,7 @@ Use special post-processor renderers from com.jme3.post..
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/effects_overview#,Effects Overview>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/effects_overview.adoc[Effects Overview]
|
|
|
|
|
|
|
|
|
|
=== How do I generate a terrain?
|
|
=== How do I generate a terrain?
|
|
@@ -756,9 +748,9 @@ Use com.jme3.terrain.. The JMonkeyEngine also provides you with a Terrain Editor
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_terrain#,Hello Terrain>>
|
|
|
|
-* <<jme3/advanced/terrain#,Terrain>>
|
|
|
|
-* <<sdk/terrain_editor#,Terrain Editor>>
|
|
|
|
|
|
+* xref:beginner/hello_terrain.adoc[Hello Terrain]
|
|
|
|
+* xref:ROOT:jme3/advanced/terrain.adoc[Terrain]
|
|
|
|
+* xref:sdk:terrain_editor.adoc[Terrain Editor]
|
|
|
|
|
|
*Code sample:*
|
|
*Code sample:*
|
|
|
|
|
|
@@ -780,7 +772,7 @@ skyGeo.setQueueBucket(Bucket.Sky)
|
|
|
|
|
|
*Learn more:*
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/sky#,Sky>>
|
|
|
|
|
|
+* xref:ROOT:jme3/advanced/sky.adoc[Sky]
|
|
|
|
|
|
|
|
|
|
== I want to access to back-end properties
|
|
== I want to access to back-end properties
|
|
@@ -788,7 +780,7 @@ skyGeo.setQueueBucket(Bucket.Sky)
|
|
|
|
|
|
=== How do I read out graphic card capabilities?
|
|
=== How do I read out graphic card capabilities?
|
|
|
|
|
|
-If your game is heavily using features that older cards do not support, you can <<jme3/advanced/read_graphic_card_capabilites#,Read Graphic Card Capabilites>> in the beginning before starting the app, and then decide how to proceed.
|
|
|
|
|
|
+If your game is heavily using features that older cards do not support, you can xref:ROOT:jme3/advanced/read_graphic_card_capabilites.adoc[Read Graphic Card Capabilites] in the beginning before starting the app, and then decide how to proceed.
|
|
|
|
|
|
[source,java]
|
|
[source,java]
|
|
----
|
|
----
|
|
@@ -806,7 +798,7 @@ In your game, add
|
|
settings.setRenderer(AppSettings.LWJGL_OPENGL1)
|
|
settings.setRenderer(AppSettings.LWJGL_OPENGL1)
|
|
----
|
|
----
|
|
|
|
|
|
-to the <<jme3/intermediate/appsettings#,AppSettings>> (see details there). +
|
|
|
|
|
|
+to the xref:ROOT:jme3/intermediate/appsettings.adoc[AppSettings] (see details there). +
|
|
For the jMonkeyEngine SDK itself, choose Options > OpenGL, and check OpenGL1.
|
|
For the jMonkeyEngine SDK itself, choose Options > OpenGL, and check OpenGL1.
|
|
|
|
|
|
|
|
|
|
@@ -836,7 +828,7 @@ Many maths functions (mult(), add(), subtract(), etc) come as local and a non-lo
|
|
|
|
|
|
. Non-local means a new independent object is created (similar to clone()) as a return value. Use non-local methods if you want to keep using the old value of the object calling the method.
|
|
. Non-local means a new independent object is created (similar to clone()) as a return value. Use non-local methods if you want to keep using the old value of the object calling the method.
|
|
** Example 1: `Quaternion q1 = q2.mult(q3);`
|
|
** Example 1: `Quaternion q1 = q2.mult(q3);`
|
|
-*** Returns the result as a new <<jme3/rotate.html#,Quaternion>> q1.
|
|
|
|
|
|
+*** Returns the result as a new xref:intermediate/rotate.adoc[Quaternion] q1.
|
|
*** The involved objects q2 and q3 stay as they are and can be reused.
|
|
*** The involved objects q2 and q3 stay as they are and can be reused.
|
|
|
|
|
|
** Example 2: `v.mult(b).add(b);`
|
|
** Example 2: `v.mult(b).add(b);`
|