|
@@ -1,11 +1,7 @@
|
|
|
= Frequently Asked Questions
|
|
|
-:author:
|
|
|
-:revnumber:
|
|
|
-:revdate: 2016/03/17 20:48
|
|
|
+:revnumber: 2.0
|
|
|
+:revdate: 2020/07/13
|
|
|
: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:*
|
|
|
|
|
|
-* <<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].
|
|
|
|
|
|
|
|
@@ -32,12 +28,12 @@ viewPort.setBackgroundColor(ColorRGBA.Blue);
|
|
|
|
|
|
=== 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:*
|
|
|
|
|
|
-* <<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?
|
|
@@ -46,7 +42,7 @@ You should break down your application logic into components by spreading it out
|
|
|
|
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/application_states#,Application States>>
|
|
|
+* xref:ROOT:jme3/advanced/application_states.adoc[Application States]
|
|
|
|
|
|
|
|
|
=== 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:*
|
|
|
|
|
|
-* <<jme3/advanced/application_states#,Application States>>
|
|
|
+* xref:ROOT:jme3/advanced/application_states.adoc[Application States]
|
|
|
|
|
|
|
|
|
=== How do I disable logger output to the console?
|
|
@@ -76,7 +72,7 @@ java.util.logging.Logger.getLogger("").setLevel(Level.SEVERE);
|
|
|
|
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/logging#,Logging>>
|
|
|
+* xref:ROOT:jme3/advanced/logging.adoc[Logging]
|
|
|
|
|
|
|
|
|
=== 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:*
|
|
|
|
|
|
-* <<jme3/advanced/asset_manager#,Asset Manager>>
|
|
|
+* xref:ROOT:jme3/advanced/asset_manager.adoc[Asset Manager]
|
|
|
|
|
|
|
|
|
=== What is java.lang.LinkageError: Version mismatch?
|
|
@@ -121,10 +117,10 @@ rootNode.detachChild(spatial); // remove from scene
|
|
|
|
|
|
*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/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.
|
|
|
|
|
|
-*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?
|
|
|
|
|
|
-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 sounds in an audio editor, for example, Audacity, and export them as WAVE or OGG.
|
|
|
|
|
|
*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://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)].
|
|
@@ -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?
|
|
|
|
|
|
-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]
|
|
|
----
|
|
@@ -184,11 +180,11 @@ Spatial ninja = assetManager.loadModel("Models/Ninja/Ninja.j3o");
|
|
|
|
|
|
*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/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:*
|
|
|
|
|
@@ -203,7 +199,7 @@ Use the simpleInitApp() method in SimpleApplication (or initApp() in Application
|
|
|
|
|
|
*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]
|
|
|
|
|
|
|
|
@@ -212,7 +208,7 @@ Use the simpleInitApp() method in SimpleApplication (or initApp() in Application
|
|
|
|
|
|
=== 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]
|
|
|
----
|
|
@@ -221,21 +217,21 @@ spatial.setLocalTranslation(1,-3,2.5f); spatial.rotate(0,3.14f,0); spatial.scale
|
|
|
|
|
|
*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?
|
|
|
|
|
|
-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:*
|
|
|
|
|
|
-* <<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:*
|
|
|
|
|
@@ -252,7 +248,7 @@ Geometry submesh = (Geometry) model.getChild("door 12");
|
|
|
|
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/spatial#,Spatial>>
|
|
|
+* xref:ROOT:jme3/advanced/spatial.adoc[Spatial]
|
|
|
|
|
|
|
|
|
=== How do I make procedural or custom shapes?
|
|
@@ -261,7 +257,7 @@ You can programmatically create com.jme3.scene.Mesh'es.
|
|
|
|
|
|
*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
|
|
@@ -307,9 +303,9 @@ Use the AssetManager to load Materials, and change material settings.
|
|
|
|
|
|
*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:*
|
|
|
|
|
@@ -323,10 +319,10 @@ Create Textures as image files. Use the AssetManager to load a Material and use
|
|
|
|
|
|
*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://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:*
|
|
|
|
|
|
-* <<jme3/advanced/light_and_shadow#,Light and Shadow>>
|
|
|
+* xref:ROOT:jme3/advanced/light_and_shadow.adoc[Light and Shadow]
|
|
|
|
|
|
*Code sample:*
|
|
|
|
|
@@ -365,8 +361,8 @@ material.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);
|
|
|
|
|
|
*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?
|
|
@@ -387,7 +383,7 @@ someNode.setCullHint(CullHint.Never);
|
|
|
|
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/spatial#,Spatial>>
|
|
|
+* xref:ROOT:jme3/advanced/spatial.adoc[Spatial]
|
|
|
|
|
|
|
|
|
=== Can I draw only an outline of the scene?
|
|
@@ -401,7 +397,7 @@ material.getAdditionalRenderState().setWireframe(true);
|
|
|
|
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/debugging#,Debugging>>.
|
|
|
+* xref:ROOT:jme3/advanced/debugging.adoc[Debugging]
|
|
|
|
|
|
|
|
|
== I want to control the camera
|
|
@@ -433,7 +429,7 @@ flyCam.setEnabled(true);
|
|
|
|
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/beginner/hello_collision#,Hello Collision>>
|
|
|
+* xref:beginner/hello_collision.adoc[Hello Collision]
|
|
|
|
|
|
*Code sample:*
|
|
|
|
|
@@ -473,11 +469,11 @@ Use Controls to define the behaviour of types of Spatials. Use Application State
|
|
|
|
|
|
*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?
|
|
@@ -486,8 +482,8 @@ Use com.jme3.input.KeyInput and a Input Listener.
|
|
|
|
|
|
*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?
|
|
@@ -496,10 +492,10 @@ Players typically click the mouse to pick up objects, to open doors, to shoot a
|
|
|
|
|
|
*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/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]
|
|
@@ -516,8 +512,8 @@ Create an animated OgreMesh model with bones in a 3-D mesh editor (e.g. Blender)
|
|
|
*Learn more:*
|
|
|
|
|
|
* 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]
|
|
|
|
|
|
*Code sample:*
|
|
@@ -531,8 +527,8 @@ Use collision detection. The most common solution is to use jme's physics integr
|
|
|
|
|
|
*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.]
|
|
|
* CapsuleCollisionShape versus CompoundCollisionShape, CharacterControl versus RigidBodyControl.
|
|
|
|
|
@@ -543,8 +539,8 @@ Add physics controls to Spatials and give them spherical or cylindrical bounding
|
|
|
|
|
|
*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-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]
|
|
@@ -571,7 +567,7 @@ You can use jBullet's CharacterControl that locks a physical object upright, so
|
|
|
|
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/walking_character#bettercharactercontrol,BetterCharacterControl>>
|
|
|
+* xref:ROOT:jme3/advanced/walking_character.adoc#bettercharactercontrol[BetterCharacterControl]
|
|
|
|
|
|
*Code Sample:*
|
|
|
|
|
@@ -585,7 +581,7 @@ Use a VehicleControl that supports suspension behavior.
|
|
|
|
|
|
*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]
|
|
|
|
|
|
*Code Sample:*
|
|
@@ -599,7 +595,7 @@ Use a PhysicsControl's hinges and joints.
|
|
|
|
|
|
*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.)
|
|
|
|
|
|
|
|
@@ -608,11 +604,7 @@ Use a PhysicsControl's hinges and joints.
|
|
|
|
|
|
=== 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?
|
|
@@ -632,7 +624,7 @@ Attach text and pictures to the orthogonal `guiNode` to create a heads-up displa
|
|
|
|
|
|
*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/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:*
|
|
|
|
|
|
-* <<jme3/advanced/nifty_gui#,Nifty GUI>>
|
|
|
+* xref:ROOT:jme3/advanced/nifty_gui.adoc[Nifty GUI]
|
|
|
|
|
|
*Code Sample:*
|
|
|
|
|
@@ -661,7 +653,7 @@ Instead of having a frozen frame while your games loads, you can have a loading
|
|
|
|
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/loading_screen#,Loading screen>>
|
|
|
+* xref:ROOT:jme3/advanced/loading_screen.adoc[Loading screen]
|
|
|
|
|
|
|
|
|
== 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?
|
|
|
|
|
|
-<<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
|
|
@@ -696,8 +688,8 @@ Use AudioRenderer, Listener, and AudioNode from com.jme3.audio..
|
|
|
|
|
|
*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:*
|
|
|
|
|
@@ -710,10 +702,10 @@ For swarm like effects you use particle emitters.
|
|
|
|
|
|
*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/ParticleEmitter.java[com.jme3.effect.ParticleEmitter.java]
|
|
|
|
|
@@ -730,8 +722,8 @@ Use a special post-processor renderer from com.jme3.water..
|
|
|
|
|
|
*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:*
|
|
|
|
|
@@ -747,7 +739,7 @@ Use special post-processor renderers from com.jme3.post..
|
|
|
|
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/effects_overview#,Effects Overview>>
|
|
|
+* xref:ROOT:jme3/advanced/effects_overview.adoc[Effects Overview]
|
|
|
|
|
|
|
|
|
=== 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:*
|
|
|
|
|
|
-* <<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:*
|
|
|
|
|
@@ -780,7 +772,7 @@ skyGeo.setQueueBucket(Bucket.Sky)
|
|
|
|
|
|
*Learn more:*
|
|
|
|
|
|
-* <<jme3/advanced/sky#,Sky>>
|
|
|
+* xref:ROOT:jme3/advanced/sky.adoc[Sky]
|
|
|
|
|
|
|
|
|
== I want to access to back-end properties
|
|
@@ -788,7 +780,7 @@ skyGeo.setQueueBucket(Bucket.Sky)
|
|
|
|
|
|
=== 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]
|
|
|
----
|
|
@@ -806,7 +798,7 @@ In your game, add
|
|
|
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.
|
|
|
|
|
|
|
|
@@ -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.
|
|
|
** 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.
|
|
|
|
|
|
** Example 2: `v.mult(b).add(b);`
|