- update manual

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9510 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
nor..67 13 years ago
parent d63683d240
commit 6dbc85234f
  1. 31
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/audio.html
  2. 37
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/input_handling.html
  3. 14
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/loading_screen.html
  4. 8
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/logging.html
  5. 2
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/monkey_zone.html
  6. 12
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/nifty_gui_java_layout.html
  7. 2
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/nifty_gui_scenarios.html
  8. 28
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/nifty_gui_xml_layout.html
  9. 2
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/particle_emitters.html
  10. 15
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/advanced/swing_canvas.html
  11. 17
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_audio.html
  12. 33
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/beginner/hello_node.html
  13. BIN
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/external/blender-material-1.png
  14. BIN
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/external/blender-material-2.png
  15. BIN
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/external/blender-material-3.png
  16. BIN
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/external/blender-material-4.png
  17. 11
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/external/blender.html
  18. 86
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/intermediate/appsettings.html
  19. 29
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/intermediate/best_practices.html
  20. 2
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/intermediate/multi-media_asset_pipeline.html
  21. 2
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/jme3/intermediate/optimization.html
  22. 20
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/blender.html
  23. 8
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/code_editor.html
  24. 24
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/model_loader_and_viewer.html
  25. 82
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/project_creation.html
  26. 16
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/sdk/troubleshooting.html
  27. 2
      sdk/jme3-core/javahelp/com/jme3/gde/core/docs/wiki-map.xml

@ -8,11 +8,12 @@ There are two ways to handle audio data: Short audio files are to be stored enti
</p> </p>
<p> <p>
Place audio files in the <code>assets/Sound/</code> directory of your project. jME3 supports Ogg Vorbis (.ogg) and Wave (.wav) formats. Place audio files in the <code>assets/Sound/</code> directory of your project. jME3 supports Ogg Vorbis (.ogg) and Wave (.wav) formats. You can use for example <object classid="java:org.netbeans.modules.javahelp.BrowserDisplayer"><param name="content" value="http://audacity.sourceforge.net/"><param name="text" value="<html><u>Audacity</u></html>"><param name="textColor" value="blue"></object> to convert from other formats.
</p> </p>
</div> </div>
<!-- EDIT1 SECTION "Audio in jME3" [1-334] --> <!-- EDIT1 SECTION "Audio in jME3" [1-434] -->
<h2><a>Creating Audio Nodes: Streamed or Buffered</a></h2> <h2><a>Creating Audio Nodes: Streamed or Buffered</a></h2>
<div> <div>
@ -31,7 +32,7 @@ The main class to look at is <code>com.jme3.audio.AudioNode</code>.
</ul> </ul>
</div> </div>
<!-- EDIT2 SECTION "Creating Audio Nodes: Streamed or Buffered" [335-1026] --> <!-- EDIT2 SECTION "Creating Audio Nodes: Streamed or Buffered" [435-1126] -->
<h2><a>Getting AudioNode Properties</a></h2> <h2><a>Getting AudioNode Properties</a></h2>
<div> <div>
<div><table> <div><table>
@ -48,14 +49,14 @@ The main class to look at is <code>com.jme3.audio.AudioNode</code>.
<td>getPitch()</td><td>Returns the pitch. </td> <td>getPitch()</td><td>Returns the pitch. </td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT4 TABLE [1068-1240] --> <!-- EDIT4 TABLE [1168-1340] -->
<p> <p>
There are other obvious getters to poll the status of corresponding setters below. There are other obvious getters to poll the status of corresponding setters below.
</p> </p>
</div> </div>
<!-- EDIT3 SECTION "Getting AudioNode Properties" [1027-1325] --> <!-- EDIT3 SECTION "Getting AudioNode Properties" [1127-1425] -->
<h2><a>Setting AudioNode Properties</a></h2> <h2><a>Setting AudioNode Properties</a></h2>
<div> <div>
<div><table> <div><table>
@ -69,7 +70,7 @@ There are other obvious getters to poll the status of corresponding setters belo
<td>setPitch(1)</td><td>Makes the sound play in a higher or lower pitch. Default is 1. 2 is twice as high, .5f is half as high. </td> <td>setPitch(1)</td><td>Makes the sound play in a higher or lower pitch. Default is 1. 2 is twice as high, .5f is half as high. </td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT6 TABLE [1368-1617] --><div><table> <!-- EDIT6 TABLE [1468-1717] --><div><table>
<tr> <tr>
<th>AudioNode Method</th><th>Usage</th> <th>AudioNode Method</th><th>Usage</th>
</tr> </tr>
@ -85,13 +86,13 @@ Does not work for streamed sounds! </td>
setDirectional(false)</td><td>All 3D effects switched off. This sound is global and comes from everywhere. Good for environmental ambient sounds and background music.</td> setDirectional(false)</td><td>All 3D effects switched off. This sound is global and comes from everywhere. Good for environmental ambient sounds and background music.</td>
</tr> </tr>
<tr> <tr>
<td>setTimeOffset(0.5f)</td><td>Start playing the sound after waiting the given amount of seconds. Default is 0.</td> <td>setTimeOffset(0.5f)</td><td>Play the sound starting at a 0.5 second offset from the beginning. Default is 0.</td>
</tr> </tr>
<tr> <tr>
<td>setMaxDistance(100f)</td><td>Maximum distance the sound can be heard, in world units. Default is 20.</td> <td>setMaxDistance(100f)</td><td>Maximum distance the sound can be heard, in world units. Default is 20.</td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT7 TABLE [1619-2353] --><div><table> <!-- EDIT7 TABLE [1719-2453] --><div><table>
<tr> <tr>
<th>AudioNode Method</th><th>Usage</th> <th>AudioNode Method</th><th>Usage</th>
</tr> </tr>
@ -103,7 +104,7 @@ setLocalTranslation(…)</td><td>Activates 3D audio: The sound appears to come f
<td>setReverbEnabled(true)</td><td>A 3D echo effect that only makes sense to use with positional AudioNodes. The reverb effect is influenced by the environment that the audio renderer is in. See &quot;Setting Environment Properties&quot; below. </td> <td>setReverbEnabled(true)</td><td>A 3D echo effect that only makes sense to use with positional AudioNodes. The reverb effect is influenced by the environment that the audio renderer is in. See &quot;Setting Environment Properties&quot; below. </td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT8 TABLE [2355-2827] --><div><table> <!-- EDIT8 TABLE [2455-2927] --><div><table>
<tr> <tr>
<th>AudioNode Method</th><th>Usage</th> <th>AudioNode Method</th><th>Usage</th>
</tr> </tr>
@ -116,9 +117,9 @@ setDirection(…) </td><td>Activates 3D audio: This sound can only be heard from
setOuterAngle()</td><td>Set the angle in degrees for the directional audio. The angle is relative to the direction. Note: By default, both angles are 360° and the sound can be heard from all directions!</td> setOuterAngle()</td><td>Set the angle in degrees for the directional audio. The angle is relative to the direction. Note: By default, both angles are 360° and the sound can be heard from all directions!</td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT9 TABLE [2829-3356] --> <!-- EDIT9 TABLE [2929-3456] -->
</div> </div>
<!-- EDIT5 SECTION "Setting AudioNode Properties" [1326-3357] --> <!-- EDIT5 SECTION "Setting AudioNode Properties" [1426-3457] -->
<h2><a>Play, Pause, Stop</a></h2> <h2><a>Play, Pause, Stop</a></h2>
<div> <div>
@ -140,7 +141,7 @@ You can also start playing an instance of this AudioNode. Use the playInstance()
<pre>myAudioNode.playInstance&#40;&#41;;</pre> <pre>myAudioNode.playInstance&#40;&#41;;</pre>
</div> </div>
<!-- EDIT10 SECTION "Play, Pause, Stop" [3358-4062] --> <!-- EDIT10 SECTION "Play, Pause, Stop" [3458-4162] -->
<h2><a>The Listener</a></h2> <h2><a>The Listener</a></h2>
<div> <div>
@ -156,7 +157,7 @@ The default listener object is the user&#039;s ear in the scene. If you use posi
&#125;</pre> &#125;</pre>
</div> </div>
<!-- EDIT11 SECTION "The Listener" [4063-4607] --> <!-- EDIT11 SECTION "The Listener" [4163-4707] -->
<h2><a>Setting Environment Properties</a></h2> <h2><a>Setting Environment Properties</a></h2>
<div> <div>
@ -185,7 +186,7 @@ Optionally, You can choose from the following environmental presets from <code>c
<td>Closet </td><td>1.00f</td><td>1.0f</td><td>1.0f</td><td>1.00f</td><td>0.15f</td><td>1.0f</td><td>0.600f</td><td>0.0025f</td><td>0.500f</td><td>0.0006f</td> <td>Closet </td><td>1.00f</td><td>1.0f</td><td>1.0f</td><td>1.00f</td><td>0.15f</td><td>1.0f</td><td>0.600f</td><td>0.0025f</td><td>0.500f</td><td>0.0006f</td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT13 TABLE [4931-5420] --> <!-- EDIT13 TABLE [5031-5520] -->
<p> <p>
Activate the preset with setEnvironment(). E.g. in a dungeon environment: Activate the preset with setEnvironment(). E.g. in a dungeon environment:
@ -209,5 +210,5 @@ You can find more info about OpenAL and its advanced features here: <object clas
</span></div> </span></div>
</div> </div>
<!-- EDIT12 SECTION "Setting Environment Properties" [4608-] --> <!-- EDIT12 SECTION "Setting Environment Properties" [4708-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:advanced:audio?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:advanced:audio?do=export_xhtmlbody">view online version</a></em></p>

@ -26,6 +26,17 @@ This is how you add interaction to your game:
</div> </div>
<!-- EDIT1 SECTION "Input Handling" [1-561] --> <!-- EDIT1 SECTION "Input Handling" [1-561] -->
<h2><a>Code Samples</a></h2>
<div>
<ul>
<li><div> <object classid="java:org.netbeans.modules.javahelp.BrowserDisplayer"><param name="content" value="http://code.google.com/p/jmonkeyengine/source/browse/trunk/engine/src/test/jme3test/input/TestControls.java"><param name="text" value="<html><u>TestControls.java</u></html>"><param name="textColor" value="blue"></object></div>
</li>
<li><div> <object classid="java:org.netbeans.modules.javahelp.BrowserDisplayer"><param name="content" value="http://code.google.com/p/jmonkeyengine/source/browse/trunk/engine/src/test/jme3test/input/TestJoystick.java"><param name="text" value="<html><u>TestJoystick.java</u></html>"><param name="textColor" value="blue"></object></div>
</li>
</ul>
</div>
<!-- EDIT2 SECTION "Code Samples" [562-858] -->
<h2><a>1. Choose Trigger</a></h2> <h2><a>1. Choose Trigger</a></h2>
<div> <div>
@ -125,14 +136,14 @@ JoyButtonTrigger(0, JoyInput.AXIS_POV_Y) ? </td>
<td> Joystick Movement: Backward</td><td> JoyAxisTrigger(0, JoyInput.AXIS_POV_Z, false) </td> <td> Joystick Movement: Backward</td><td> JoyAxisTrigger(0, JoyInput.AXIS_POV_Z, false) </td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT3 TABLE [1098-3076] --> <!-- EDIT4 TABLE [1395-3373] -->
<p> <p>
In your IDE, use code completion to quickly look up Trigger literals. In the jMonkeyEngine <acronym title="Software Development Kit">SDK</acronym> for example, press ctrl-space or ctrl-/ after <code>KeyInput.|</code> to choose from the list of all keys. In your IDE, use code completion to quickly look up Trigger literals. In the jMonkeyEngine <acronym title="Software Development Kit">SDK</acronym> for example, press ctrl-space or ctrl-/ after <code>KeyInput.|</code> to choose from the list of all keys.
</p> </p>
</div> </div>
<!-- EDIT2 SECTION "1. Choose Trigger" [562-3271] --> <!-- EDIT3 SECTION "1. Choose Trigger" [859-3568] -->
<h2><a>2. Remove Default Trigger Mappings</a></h2> <h2><a>2. Remove Default Trigger Mappings</a></h2>
<div> <div>
<pre>inputManager.deleteMapping( SimpleApplication.INPUT_MAPPING_MEMORY );</pre> <pre>inputManager.deleteMapping( SimpleApplication.INPUT_MAPPING_MEMORY );</pre>
@ -153,9 +164,9 @@ In your IDE, use code completion to quickly look up Trigger literals. In the jMo
<td>INPUT_MAPPING_EXIT</td><td>KEY_ESCAPE</td><td>Closes the application by calling <code>stop();</code>. Typically you do not remove this, unless you replace it by another way of quitting gracefully.</td> <td>INPUT_MAPPING_EXIT</td><td>KEY_ESCAPE</td><td>Closes the application by calling <code>stop();</code>. Typically you do not remove this, unless you replace it by another way of quitting gracefully.</td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT5 TABLE [3404-3821] --> <!-- EDIT6 TABLE [3701-4118] -->
</div> </div>
<!-- EDIT4 SECTION "2. Remove Default Trigger Mappings" [3272-3822] --> <!-- EDIT5 SECTION "2. Remove Default Trigger Mappings" [3569-4119] -->
<h2><a>3. Add Custom Trigger Mapping</a></h2> <h2><a>3. Add Custom Trigger Mapping</a></h2>
<div> <div>
@ -181,7 +192,7 @@ inputManager.addMapping&#40;&quot;Right&quot;, new KeyTrigger&#40;KeyInput.KEY_D
...</pre> ...</pre>
</div> </div>
<!-- EDIT6 SECTION "3. Add Custom Trigger Mapping" [3823-4887] --> <!-- EDIT7 SECTION "3. Add Custom Trigger Mapping" [4120-5184] -->
<h2><a>4. Create Listeners</a></h2> <h2><a>4. Create Listeners</a></h2>
<div> <div>
@ -195,7 +206,7 @@ The jME3 input manager supports two types of event listeners for inputs: AnalogL
</p> </p>
</div> </div>
<!-- EDIT7 SECTION "4. Create Listeners" [4888-5361] --> <!-- EDIT8 SECTION "4. Create Listeners" [5185-5658] -->
<h3><a>ActionListener</a></h3> <h3><a>ActionListener</a></h3>
<div> <div>
@ -230,7 +241,7 @@ The jME3 input manager supports two types of event listeners for inputs: AnalogL
&#125;;</pre> &#125;;</pre>
</div> </div>
<!-- EDIT8 SECTION "ActionListener" [5362-6028] --> <!-- EDIT9 SECTION "ActionListener" [5659-6325] -->
<h3><a>AnalogListener</a></h3> <h3><a>AnalogListener</a></h3>
<div> <div>
@ -263,7 +274,7 @@ The jME3 input manager supports two types of event listeners for inputs: AnalogL
&#125;;</pre> &#125;;</pre>
</div> </div>
<!-- EDIT9 SECTION "AnalogListener" [6029-6665] --> <!-- EDIT10 SECTION "AnalogListener" [6326-6962] -->
<h2><a>4. Register Mappings to Listeners</a></h2> <h2><a>4. Register Mappings to Listeners</a></h2>
<div> <div>
@ -292,7 +303,7 @@ As you see, you can add several listeners in one String array. You can call the
</p> </p>
</div> </div>
<!-- EDIT10 SECTION "4. Register Mappings to Listeners" [6666-7914] --> <!-- EDIT11 SECTION "4. Register Mappings to Listeners" [6963-8211] -->
<h2><a>5. Implement Actions in Listeners</a></h2> <h2><a>5. Implement Actions in Listeners</a></h2>
<div> <div>
@ -312,7 +323,7 @@ Make use of the distinction between <code>if</code> and <code>else if</code> in
</ul> </ul>
</div> </div>
<!-- EDIT11 SECTION "5. Implement Actions in Listeners" [7915-8650] --> <!-- EDIT12 SECTION "5. Implement Actions in Listeners" [8212-8947] -->
<h3><a>ActionListener</a></h3> <h3><a>ActionListener</a></h3>
<div> <div>
@ -333,7 +344,7 @@ In the most common case, you want an action to be triggered once, in the moment
&#125;;</pre> &#125;;</pre>
</div> </div>
<!-- EDIT12 SECTION "ActionListener" [8651-9322] --> <!-- EDIT13 SECTION "ActionListener" [8948-9619] -->
<h3><a>AnalogListener</a></h3> <h3><a>AnalogListener</a></h3>
<div> <div>
@ -354,7 +365,7 @@ The following example shows how you define actions with an AnalogListener. Thies
&#125;;</pre> &#125;;</pre>
</div> </div>
<!-- EDIT13 SECTION "AnalogListener" [9323-9903] --> <!-- EDIT14 SECTION "AnalogListener" [9620-10200] -->
<h2><a>Let Users Remap Keys</a></h2> <h2><a>Let Users Remap Keys</a></h2>
<div> <div>
@ -373,5 +384,5 @@ The abstraction of separating triggers and mappings has the advantage that you c
</span></div> </span></div>
</div> </div>
<!-- EDIT14 SECTION "Let Users Remap Keys" [9904-] --> <!-- EDIT15 SECTION "Let Users Remap Keys" [10201-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:advanced:input_handling?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:advanced:input_handling?do=export_xhtmlbody">view online version</a></em></p>

@ -143,15 +143,13 @@ If you do all of this in a single frame, then it is sent to the graphics card on
</p> </p>
<p> <p>
The 3 main good solutions are: The 2 main good solutions are:
</p> </p>
<ol> <ol>
<li><div> Updating explicitly over many frames</div> <li><div> Updating explicitly over many frames</div>
</li> </li>
<li><div> Multi-threading</div> <li><div> Multi-threading</div>
</li> </li>
<li><div> Using a custom AppState</div>
</li>
</ol> </ol>
</div> </div>
@ -558,16 +556,6 @@ public class TestLoadingScreen1 extends SimpleApplication implements ScreenContr
&#125; &#125;
&#125;</pre> &#125;</pre>
</div>
<h4><a>Using Appstates</a></h4>
<div>
<p>
TO DO
</p>
</div> </div>
<!-- EDIT2 SECTION "Creating the bindings to use the Nifty XML" [4345-] --> <!-- EDIT2 SECTION "Creating the bindings to use the Nifty XML" [4345-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:advanced:loading_screen?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:advanced:loading_screen?do=export_xhtmlbody">view online version</a></em></p>

@ -4,7 +4,7 @@
</div> </div>
<!-- EDIT1 SECTION "Logging and Monitoring" [1-38] --> <!-- EDIT1 SECTION "Logging and Monitoring" [1-38] -->
<h2><a>Logging Like a Newb</a></h2> <h2><a>Logging Like a Newbie</a></h2>
<div> <div>
<p> <p>
@ -13,7 +13,7 @@ Many developers just use System.out.println() to print diagnostic strings to the
</p> </p>
</div> </div>
<!-- EDIT2 SECTION "Logging Like a Newb" [39-424] --> <!-- EDIT2 SECTION "Logging Like a Newbie" [39-426] -->
<h2><a>Logging Like a Pro</a></h2> <h2><a>Logging Like a Pro</a></h2>
<div> <div>
@ -67,7 +67,7 @@ More details about <object classid="java:org.netbeans.modules.javahelp.BrowserDi
</p> </p>
</div> </div>
<!-- EDIT3 SECTION "Logging Like a Pro" [425-2227] --> <!-- EDIT3 SECTION "Logging Like a Pro" [427-2229] -->
<h2><a>Switching the Logger on and off</a></h2> <h2><a>Switching the Logger on and off</a></h2>
<div> <div>
@ -95,5 +95,5 @@ To reactivate full logging, e.g. for debugging and testing:
<pre>Logger.getLogger&#40;””&#41;.setLevel&#40;Level.FINE&#41;;</pre> <pre>Logger.getLogger&#40;””&#41;.setLevel&#40;Level.FINE&#41;;</pre>
</div> </div>
<!-- EDIT4 SECTION "Switching the Logger on and off" [2228-] --> <!-- EDIT4 SECTION "Switching the Logger on and off" [2230-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:advanced:logging?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:advanced:logging?do=export_xhtmlbody">view online version</a></em></p>

@ -325,7 +325,7 @@ MonkeyZone is hosted at GoogleCode, where you can check out the jMonkeyEngine <a
<h2><a>Troubleshooting</a></h2> <h2><a>Troubleshooting</a></h2>
<div> <div>
<ol> <ol>
<li><div> After download error coud appear that in jme3tools.navmesh.util\NavMeshGenerator.java import com.jme3.terrain.Terrain is not known, you should correct this by setting Project Properties &gt; Libraries &gt; Add Library &gt; jme3-libraries-terrain </div> <li><div> After download, errors could appear because jme3tools.navmesh.util\NavMeshGenerator.java import com.jme3.terrain.Terrain is not known, you should correct this by setting Project Properties &gt; Libraries &gt; Add Library &gt; jme3-libraries-terrain </div>
</li> </li>
</ol> </ol>
<div><span> <div><span>

@ -501,7 +501,7 @@ In the <code>hud</code> screen&#039;s <code>foreground</code> layer, add the fol
&#125;&#125;&#41;;</pre> &#125;&#125;&#41;;</pre>
<p> <p>
Note that the width and height do not scale the bitmap font, but the make indirectly certain it is centered. If you want a different size for the font, you need to provide an extra bitmap font (they come with fixes sizes and don&#039;t scale well). Note that the width and height do not scale the bitmap font, but make indirectly certain it is centered. If you want a different size for the font, you need to provide an extra bitmap font (they come with fixes sizes and don&#039;t scale well).
</p> </p>
</div> </div>
@ -562,7 +562,7 @@ Nifty additionally offers many customizable controls such as check boxes, text f
</p> </p>
</div> </div>
<!-- EDIT10 SECTION "Add Controls" [13844-16781] --> <!-- EDIT10 SECTION "Add Controls" [13844-16777] -->
<h2><a>Intermediate Result</a></h2> <h2><a>Intermediate Result</a></h2>
<div> <div>
@ -580,7 +580,7 @@ When you preview this code in the jMonkeyEngine <acronym title="Software Develop
</p> </p>
</div> </div>
<!-- EDIT11 SECTION "Intermediate Result" [16782-17194] --> <!-- EDIT11 SECTION "Intermediate Result" [16778-17190] -->
<h2><a>Nifty Java Settings</a></h2> <h2><a>Nifty Java Settings</a></h2>
<div> <div>
@ -608,7 +608,7 @@ Before initializing the nifty screens, you set up properties and register media.
<td> setDebugOptionPanelColors(true);</td><td> Highlight all panels, makes it easier to arrange them. </td> <td> setDebugOptionPanelColors(true);</td><td> Highlight all panels, makes it easier to arrange them. </td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT13 TABLE [17309-17632] --> <!-- EDIT13 TABLE [17305-17628] -->
<p> <p>
Example: Example:
@ -616,7 +616,7 @@ Example:
<pre>nifty.registerMouseCursor&#40;&quot;hand&quot;, &quot;Interface/mouse-cursor-hand.png&quot;, 5, 4&#41;;</pre> <pre>nifty.registerMouseCursor&#40;&quot;hand&quot;, &quot;Interface/mouse-cursor-hand.png&quot;, 5, 4&#41;;</pre>
</div> </div>
<!-- EDIT12 SECTION "Nifty Java Settings" [17195-17737] --> <!-- EDIT12 SECTION "Nifty Java Settings" [17191-17733] -->
<h2><a>Next Steps</a></h2> <h2><a>Next Steps</a></h2>
<div> <div>
@ -638,5 +638,5 @@ Integrate the <acronym title="Graphical User Interface">GUI</acronym> into the g
</span></div> </span></div>
</div> </div>
<!-- EDIT14 SECTION "Next Steps" [17738-] --> <!-- EDIT14 SECTION "Next Steps" [17734-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:advanced:nifty_gui_java_layout?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:advanced:nifty_gui_java_layout?do=export_xhtmlbody">view online version</a></em></p>

@ -260,7 +260,7 @@ You can name the method (here <code>clicked</code>) what ever you like, as long
<p> <p>
The basic Nifty <acronym title="Graphical User Interface">GUI</acronym> example showed how to use the <code>nifty.fromXML()</code> method to load one <acronym title="Extensible Markup Language">XML</acronym> file containing all Nifty <acronym title="Graphical User Interface">GUI</acronym> screens. The basic Nifty <acronym title="Graphical User Interface">GUI</acronym> example showed how to use the <code>nifty.fromXML()</code> method to load one <acronym title="Extensible Markup Language">XML</acronym> file containing all Nifty <acronym title="Graphical User Interface">GUI</acronym> screens.
The following code sample shows how you can load several <acronym title="Extensible Markup Language">XML</acronym> files into one nifty object. Loading several files with <code>nifty.addXml()</code> allows you to split up each screen into one <acronym title="Extensible Markup Language">XML</acronym> file, insetad of all into one hard-to-read <acronym title="Extensible Markup Language">XML</acronym> file. The following code sample shows how you can load several <acronym title="Extensible Markup Language">XML</acronym> files into one nifty object. Loading several files with <code>nifty.addXml()</code> allows you to split up each screen into one <acronym title="Extensible Markup Language">XML</acronym> file, instead of all into one hard-to-read <acronym title="Extensible Markup Language">XML</acronym> file.
</p> </p>
<pre>NiftyJmeDisplay niftyDisplay = new NiftyJmeDisplay&#40;assetManager, inputManager, audioRenderer, viewPort&#41;; <pre>NiftyJmeDisplay niftyDisplay = new NiftyJmeDisplay&#40;assetManager, inputManager, audioRenderer, viewPort&#41;;
Nifty nifty = niftyDisplay.getNifty&#40;&#41;; Nifty nifty = niftyDisplay.getNifty&#40;&#41;;

@ -62,7 +62,7 @@ The StartScreen contains:
The HUD contains: The HUD contains:
</p> </p>
<ul> <ul>
<li><div> The background layer has a centered layout, and contains a the partially transparent HUD image.</div> <li><div> The background layer has a centered layout, and contains the partially transparent HUD image.</div>
</li> </li>
<li><div> The top layer has a horizontal layout, containing 2 panels: </div> <li><div> The top layer has a horizontal layout, containing 2 panels: </div>
<ul> <ul>
@ -75,7 +75,7 @@ The HUD contains:
</ul> </ul>
</div> </div>
<!-- EDIT2 SECTION "Plan Your GUI Layout" [479-1665] --> <!-- EDIT2 SECTION "Plan Your GUI Layout" [479-1663] -->
<h2><a>Implement Your GUI Layout</a></h2> <h2><a>Implement Your GUI Layout</a></h2>
<div> <div>
@ -89,7 +89,7 @@ Create an empty screen.xml file in the <code>assets/Interfaces/</code> directory
</p> </p>
</div> </div>
<!-- EDIT3 SECTION "Implement Your GUI Layout" [1666-2141] --> <!-- EDIT3 SECTION "Implement Your GUI Layout" [1664-2139] -->
<h3><a>Make Screens</a></h3> <h3><a>Make Screens</a></h3>
<div> <div>
@ -117,7 +117,7 @@ Every Nifty <acronym title="Graphical User Interface">GUI</acronym> must have a
</p> </p>
</div> </div>
<!-- EDIT4 SECTION "Make Screens" [2142-2866] --> <!-- EDIT4 SECTION "Make Screens" [2140-2864] -->
<h3><a>Make Layers</a></h3> <h3><a>Make Layers</a></h3>
<div> <div>
@ -149,7 +149,7 @@ In a layer, you can now add panels and arrange them. Panels are containers that
</p> </p>
</div> </div>
<!-- EDIT5 SECTION "Make Layers" [2867-3640] --> <!-- EDIT5 SECTION "Make Layers" [2865-3638] -->
<h3><a>Make Panels</a></h3> <h3><a>Make Panels</a></h3>
<div> <div>
@ -202,7 +202,7 @@ The result should look as follows:
</p> </p>
</div> </div>
<!-- EDIT6 SECTION "Make Panels" [3641-5523] --> <!-- EDIT6 SECTION "Make Panels" [3639-5521] -->
<h2><a>Adding Content to Panels</a></h2> <h2><a>Adding Content to Panels</a></h2>
<div> <div>
@ -212,7 +212,7 @@ See also <object classid="java:org.netbeans.modules.javahelp.BrowserDisplayer"><
</p> </p>
</div> </div>
<!-- EDIT7 SECTION "Adding Content to Panels" [5524-5702] --> <!-- EDIT7 SECTION "Adding Content to Panels" [5522-5700] -->
<h3><a>Add Images</a></h3> <h3><a>Add Images</a></h3>
<div> <div>
@ -257,13 +257,13 @@ This image is scaled to use 50% of the height and 30% of the width of its contai
</p> </p>
</div> </div>
<!-- EDIT8 SECTION "Add Images" [5703-7389] --> <!-- EDIT8 SECTION "Add Images" [5701-7387] -->
<h3><a>Add Static Text</a></h3> <h3><a>Add Static Text</a></h3>
<div> <div>
<p> <p>
The game title is a typical exmaple of static text. In the <code>start</code> screen, add the following text element: The game title is a typical example of static text. In the <code>start</code> screen, add the following text element:
</p> </p>
<pre> <span>&lt;panel id=&quot;panel_top&quot; height=&quot;25%&quot; width=&quot;75%&quot; align=&quot;center&quot; childLayout=&quot;center&quot;&gt;</span> <pre> <span>&lt;panel id=&quot;panel_top&quot; height=&quot;25%&quot; width=&quot;75%&quot; align=&quot;center&quot; childLayout=&quot;center&quot;&gt;</span>
@ -284,7 +284,7 @@ The font used is jME3&#039;s default font &quot;Interface/Fonts/Default.fnt&quot
</p> </p>
</div> </div>
<!-- EDIT9 SECTION "Add Static Text" [7390-8470] --> <!-- EDIT9 SECTION "Add Static Text" [7388-8468] -->
<h3><a>Add Controls</a></h3> <h3><a>Add Controls</a></h3>
<div> <div>
@ -310,7 +310,7 @@ In the <code>hud</code> screen&#039;s <code>foreground</code> layer, add the fol
<span><span>&lt;/panel&gt;</span></span></pre> <span><span>&lt;/panel&gt;</span></span></pre>
<p> <p>
Note that the width and height do not scale the bitmap font, but the make indirectly certain it is centered. If you want a different size for the font, you need to provide an extra bitmap font (they come with fixes sizes and don&#039;t scale well). Note that the width and height do not scale the bitmap font, but indirectly make certain it is centered. If you want a different size for the font, you need to provide an extra bitmap font (they come with fixed sizes and don&#039;t scale well).
</p> </p>
</div> </div>
@ -346,7 +346,7 @@ Nifty additionally offers many customizable controls such as check boxes, text f
</p> </p>
</div> </div>
<!-- EDIT10 SECTION "Add Controls" [8471-10443] --> <!-- EDIT10 SECTION "Add Controls" [8469-10437] -->
<h2><a>Intermediate Result</a></h2> <h2><a>Intermediate Result</a></h2>
<div> <div>
@ -364,7 +364,7 @@ Compare this result with the layout draft above.
</p> </p>
</div> </div>
<!-- EDIT11 SECTION "Intermediate Result" [10444-10804] --> <!-- EDIT11 SECTION "Intermediate Result" [10438-10798] -->
<h2><a>Next Steps</a></h2> <h2><a>Next Steps</a></h2>
<div> <div>
@ -386,5 +386,5 @@ Integrate the <acronym title="Graphical User Interface">GUI</acronym> into the g
</span></div> </span></div>
</div> </div>
<!-- EDIT12 SECTION "Next Steps" [10805-] --> <!-- EDIT12 SECTION "Next Steps" [10799-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:advanced:nifty_gui_xml_layout?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:advanced:nifty_gui_xml_layout?do=export_xhtmlbody">view online version</a></em></p>

@ -223,7 +223,7 @@ The following effect textures are available by default from <code>test-data.jar<
<p> <p>
Browse the full source code of all <object classid="java:org.netbeans.modules.javahelp.BrowserDisplayer"><param name="content" value="http://code.google.com/p/jmonkeyengine/source/browse/#svn/branches/jme3/src/test/jme3test/effect"><param name="text" value="<html><u>effect examples</u></html>"><param name="textColor" value="blue"></object> here. Browse the full source code of all <object classid="java:org.netbeans.modules.javahelp.BrowserDisplayer"><param name="content" value="http://code.google.com/p/jmonkeyengine/source/browse/#svn%2Ftrunk%2Fengine%2Fsrc%2Ftest%2Fjme3test%2Feffect"><param name="text" value="<html><u>effect examples</u></html>"><param name="textColor" value="blue"></object> here.
</p> </p>
<hr /> <hr />

@ -77,8 +77,15 @@ In the SwingCanvasTest&#039;s main() method, create a queued runnable(). It will
&#125;&#41;; &#125;&#41;;
&#125;</pre> &#125;</pre>
<p>
<p><div>Note that you have to use app.enqueue() when modifying objects in the scene from the AWT Event Queue like you have to use java.awt.EventQueue.invokeLater() from other threads (e.g. the update loop) when changing swing elements. This can get hairy quickly if you don’t have a proper threading model planned so you might want to use NiftyGUI as it is embedded in the update loop thread and is also cross-platform compatible (e.g. android etc.).
</div></p>
</p>
</div> </div>
<!-- EDIT3 SECTION "Main() and Runnable()" [2175-2792] --> <!-- EDIT3 SECTION "Main() and Runnable()" [2175-3260] -->
<h3><a>Creating the Canvas</a></h3> <h3><a>Creating the Canvas</a></h3>
<div> <div>
@ -113,7 +120,7 @@ Note that we have not called start() on the application, as we would usually do
</p> </p>
</div> </div>
<!-- EDIT4 SECTION "Creating the Canvas" [2793-4077] --> <!-- EDIT4 SECTION "Creating the Canvas" [3261-4545] -->
<h3><a>Creating the Swing Frame</a></h3> <h3><a>Creating the Swing Frame</a></h3>
<div> <div>
@ -163,7 +170,7 @@ Clean, build, and run!
</p> </p>
</div> </div>
<!-- EDIT5 SECTION "Creating the Swing Frame" [4078-5551] --> <!-- EDIT5 SECTION "Creating the Swing Frame" [4546-6019] -->
<h2><a>Navigation</a></h2> <h2><a>Navigation</a></h2>
<div> <div>
@ -177,5 +184,5 @@ Remember, to navigate in the scene, click and drag (!) the mouse, or press the W
</span></div> </span></div>
</div> </div>
<!-- EDIT6 SECTION "Navigation" [5552-] --> <!-- EDIT6 SECTION "Navigation" [6020-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:advanced:swing_canvas?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:advanced:swing_canvas?do=export_xhtmlbody">view online version</a></em></p>

@ -276,8 +276,13 @@ audio_nature = new AudioNode&#40;assetManager, &quot;Sound/Environment/Nature.og
Typically, you stream long sounds, and buffer short sounds. Typically, you stream long sounds, and buffer short sounds.
</p> </p>
<p>
Note that streamed sounds can not loop (i.e. setLooping will not work as you expect). Check the getStatus on the node and if it has stopped recreate the node.
</p>
</div> </div>
<!-- EDIT7 SECTION "Buffered or Streaming?" [9287-9709] --> <!-- EDIT7 SECTION "Buffered or Streaming?" [9287-9868] -->
<h2><a>Play() or PlayInstance()?</a></h2> <h2><a>Play() or PlayInstance()?</a></h2>
<div> <div>
<div><table> <div><table>
@ -294,9 +299,9 @@ Typically, you stream long sounds, and buffer short sounds.
<td>The same sound cannot play twice at the same time.</td><td>The same sounds can play multiple times and overlap.</td> <td>The same sound cannot play twice at the same time.</td><td>The same sounds can play multiple times and overlap.</td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT9 TABLE [9749-9993] --> <!-- EDIT9 TABLE [9908-10152] -->
</div> </div>
<!-- EDIT8 SECTION "Play() or PlayInstance()?" [9710-9994] --> <!-- EDIT8 SECTION "Play() or PlayInstance()?" [9869-10153] -->
<h2><a>Your Ear in the Scene</a></h2> <h2><a>Your Ear in the Scene</a></h2>
<div> <div>
@ -318,7 +323,7 @@ If you don&#039;t do that, the results of 3D audio will be quite random.
</p> </p>
</div> </div>
<!-- EDIT10 SECTION "Your Ear in the Scene" [9995-10697] --> <!-- EDIT10 SECTION "Your Ear in the Scene" [10154-10856] -->
<h2><a>Global, Directional, Positional?</a></h2> <h2><a>Global, Directional, Positional?</a></h2>
<div> <div>
@ -345,7 +350,7 @@ In short, you must choose in every situation whether it makes sense for a sound
</p> </p>
</div> </div>
<!-- EDIT11 SECTION "Global, Directional, Positional?" [10698-12056] --> <!-- EDIT11 SECTION "Global, Directional, Positional?" [10857-12215] -->
<h2><a>Conclusion</a></h2> <h2><a>Conclusion</a></h2>
<div> <div>
@ -380,5 +385,5 @@ See also:
</span></div> </span></div>
</div> </div>
<!-- EDIT12 SECTION "Conclusion" [12057-] --> <!-- EDIT12 SECTION "Conclusion" [12216-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:beginner:hello_audio?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:beginner:hello_audio?do=export_xhtmlbody">view online version</a></em></p>

@ -53,6 +53,7 @@ import com.jme3.scene.Node;
<span>/** Sample 2 - How to use nodes as handles to manipulate objects in the scene. <span>/** Sample 2 - How to use nodes as handles to manipulate objects in the scene.
* You can rotate, translate, and scale objects by manipulating their parent nodes. * You can rotate, translate, and scale objects by manipulating their parent nodes.
* The Root Node is special: Only what is attached to the Root Node appears in the scene. */</span> * The Root Node is special: Only what is attached to the Root Node appears in the scene. */</span>
&nbsp;
public class HelloNode extends SimpleApplication &#123; public class HelloNode extends SimpleApplication &#123;
&nbsp; &nbsp;
public static void main&#40;String&#91;&#93; args&#41;&#123; public static void main&#40;String&#91;&#93; args&#41;&#123;
@ -96,7 +97,7 @@ Build and run the code sample. You should see two colored boxes tilted at the sa
</p> </p>
</div> </div>
<!-- EDIT2 SECTION "Code Sample" [997-3000] --> <!-- EDIT2 SECTION "Code Sample" [997-3001] -->
<h2><a>Understanding the Terminology</a></h2> <h2><a>Understanding the Terminology</a></h2>
<div> <div>
@ -125,7 +126,7 @@ In this tutorial, you learn some new terms:
<td>Position/move, turn, or resize an object</td><td>Translate, rotate, scale an object. Transform an object.</td> <td>Position/move, turn, or resize an object</td><td>Translate, rotate, scale an object. Transform an object.</td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT4 TABLE [3089-3506] --> <!-- EDIT4 TABLE [3090-3507] -->
<p> <p>
Every JME3 application has a rootNode: Your game automatically inherits the <code>rootNode</code> object from SimpleApplication. Everything attached to the rootNode is part of the scene graph. The elements of the scene graph are Spatials. Every JME3 application has a rootNode: Your game automatically inherits the <code>rootNode</code> object from SimpleApplication. Everything attached to the rootNode is part of the scene graph. The elements of the scene graph are Spatials.
@ -152,9 +153,9 @@ Every JME3 application has a rootNode: Your game automatically inherits the <cod
<th> Examples: </th><td> A box, a sphere, a player, a building, a piece of terrain, a vehicle, missiles, NPCs, etc… </td><td> The <code>rootNode</code>, a floor node grouping several terrains, a custom vehicle-with-passengers node, a player-with-weapon node, an audio node, etc… </td> <th> Examples: </th><td> A box, a sphere, a player, a building, a piece of terrain, a vehicle, missiles, NPCs, etc… </td><td> The <code>rootNode</code>, a floor node grouping several terrains, a custom vehicle-with-passengers node, a player-with-weapon node, an audio node, etc… </td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT5 TABLE [3922-4415] --> <!-- EDIT5 TABLE [3923-4416] -->
</div> </div>
<!-- EDIT3 SECTION "Understanding the Terminology" [3001-4416] --> <!-- EDIT3 SECTION "Understanding the Terminology" [3002-4417] -->
<h2><a>Understanding the Code</a></h2> <h2><a>Understanding the Code</a></h2>
<div> <div>
@ -240,7 +241,7 @@ If you run the app with only the code up to here, you see two cubes: A red cube
</ol> </ol>
</div> </div>
<!-- EDIT6 SECTION "Understanding the Code" [4417-6683] --> <!-- EDIT6 SECTION "Understanding the Code" [4418-6684] -->
<h3><a>What is a Pivot Node?</a></h3> <h3><a>What is a Pivot Node?</a></h3>
<div> <div>
@ -259,7 +260,7 @@ You can transform (e.g. rotate) Geometries around their own center, or around a
</ul> </ul>
</div> </div>
<!-- EDIT7 SECTION "What is a Pivot Node?" [6684-8004] --> <!-- EDIT7 SECTION "What is a Pivot Node?" [6685-8005] -->
<h2><a>How do I Populate the Scenegraph?</a></h2> <h2><a>How do I Populate the Scenegraph?</a></h2>
<div> <div>
<div><table> <div><table>
@ -293,9 +294,9 @@ thing.setMaterial&#40;mat&#41;;</pre>
<td> Specify what should be loaded at the start </td><td> Everything you initialize and attach to the <code>rootNode</code> in the <code>simpleInitApp()</code> method is part of the scene at the start of the game. </td> <td> Specify what should be loaded at the start </td><td> Everything you initialize and attach to the <code>rootNode</code> in the <code>simpleInitApp()</code> method is part of the scene at the start of the game. </td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT9 TABLE [8052-9314] --> <!-- EDIT9 TABLE [8053-9315] -->
</div> </div>
<!-- EDIT8 SECTION "How do I Populate the Scenegraph?" [8005-9315] --> <!-- EDIT8 SECTION "How do I Populate the Scenegraph?" [8006-9316] -->
<h2><a>How do I Transform Spatials?</a></h2> <h2><a>How do I Transform Spatials?</a></h2>
<div> <div>
@ -319,7 +320,7 @@ To move a Spatial <em>to</em> specific coordinates, such as (0,40.2f,-2), use: <
</td><td>+right -left</td><td>+up -down</td><td>+forward -backward</td> </td><td>+right -left</td><td>+up -down</td><td>+forward -backward</td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT11 TABLE [9439-9955] --><div><table> <!-- EDIT11 TABLE [9440-9956] --><div><table>
<tr> <tr>
<th> Scaling resizes Spatials </th><th> X-axis </th><th> Y-axis </th><th> Z-axis </th> <th> Scaling resizes Spatials </th><th> X-axis </th><th> Y-axis </th><th> Z-axis </th>
</tr> </tr>
@ -331,7 +332,7 @@ To scale a Spatial 10 times longer, one tenth the height, and keep the same widt
</td><td>length</td><td>height</td><td>width</td> </td><td>length</td><td>height</td><td>width</td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT12 TABLE [9957-10446] --><div><table> <!-- EDIT12 TABLE [9958-10447] --><div><table>
<tr> <tr>
<th> Rotation turns Spatials </th><th> X-axis </th><th> Y-axis </th><th> Z-axis </th> <th> Rotation turns Spatials </th><th> X-axis </th><th> Y-axis </th><th> Z-axis </th>
</tr> </tr>
@ -347,9 +348,9 @@ To roll an object 180° around the z axis: <pre>thing.rotate&#40; 0f , 0f , 180*
</td><td>pitch = nodding your head</td><td>yaw = shaking your head</td><td>roll = cocking your head</td> </td><td>pitch = nodding your head</td><td>yaw = shaking your head</td><td>roll = cocking your head</td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT13 TABLE [10448-11229] --> <!-- EDIT13 TABLE [10449-11230] -->
</div> </div>
<!-- EDIT10 SECTION "How do I Transform Spatials?" [9316-11230] --> <!-- EDIT10 SECTION "How do I Transform Spatials?" [9317-11231] -->
<h2><a>How do I Troubleshoot Spatials?</a></h2> <h2><a>How do I Troubleshoot Spatials?</a></h2>
<div> <div>
@ -378,9 +379,9 @@ Did you rotate around the right axis? </td>
<td> A Geometry has an unexpected Color or Material. </td><td> Did you reuse a Material from another Geometry and have inadvertently changed its properties? (If so, consider cloning it: mat2 = mat.clone(); ) </td> <td> A Geometry has an unexpected Color or Material. </td><td> Did you reuse a Material from another Geometry and have inadvertently changed its properties? (If so, consider cloning it: mat2 = mat.clone(); ) </td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT15 TABLE [11362-12335] --> <!-- EDIT15 TABLE [11363-12336] -->
</div> </div>
<!-- EDIT14 SECTION "How do I Troubleshoot Spatials?" [11231-12336] --> <!-- EDIT14 SECTION "How do I Troubleshoot Spatials?" [11232-12337] -->
<h2><a>How do I Add Custom Data to Spatials?</a></h2> <h2><a>How do I Add Custom Data to Spatials?</a></h2>
<div> <div>
@ -413,7 +414,7 @@ By using different Strings keys (here the key is <code>pivot id</code>), you can
</p> </p>
</div> </div>
<!-- EDIT16 SECTION "How do I Add Custom Data to Spatials?" [12337-13702] --> <!-- EDIT16 SECTION "How do I Add Custom Data to Spatials?" [12338-13703] -->
<h2><a>Conclusion</a></h2> <h2><a>Conclusion</a></h2>
<div> <div>
@ -435,5 +436,5 @@ Since standard shapes like spheres and boxes get old fast, continue with the nex
</span></div> </span></div>
</div> </div>
<!-- EDIT17 SECTION "Conclusion" [13703-] --> <!-- EDIT17 SECTION "Conclusion" [13704-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:beginner:hello_node?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:beginner:hello_node?do=export_xhtmlbody">view online version</a></em></p>

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

@ -25,9 +25,9 @@ To export an animated model in Blender make sure the following conditions are me
</p> </p>
<ol> <ol>
<li><div> Apply Location, Rotation and Scate to the mesh on Blender: On 3D View editor on Blender, select the mesh in Object Mode and go to the 3D View Editor’s header → Object Menu → Apply → Location / Rotation / Location.</div> <li><div> Apply Location, Rotation and Scate to the mesh on Blender: On 3D View editor on Blender, select the mesh in Object Mode and go to the 3D View Editor’s header → Object Menu → Apply → Location / Rotation / Scale.</div>
</li> </li>
<li><div> Apply Location, Rotation and Scate to the armature on Blender: On 3D View editor on Blender, select the armature in Object Mode and go to the 3D View Editor’s header → Object Menu → Apply → Location / Rotation / Location.</div> <li><div> Apply Location, Rotation and Scate to the armature on Blender: On 3D View editor on Blender, select the armature in Object Mode and go to the 3D View Editor’s header → Object Menu → Apply → Location / Rotation / Scale.</div>
</li> </li>
<li><div> Set the mesh’s origin point in the bottom of the mesh (see the images bellow).</div> <li><div> Set the mesh’s origin point in the bottom of the mesh (see the images bellow).</div>
</li> </li>
@ -74,6 +74,13 @@ To export an animated model in Blender make sure the following conditions are me
<img src="nbdocs:/com/jme3/gde/core/docs/jme3/external/blender_finished.png"> <img src="nbdocs:/com/jme3/gde/core/docs/jme3/external/blender_finished.png">
</p> </p>
<p>
<img src="nbdocs:/com/jme3/gde/core/docs/jme3/external/blender-material-1.png">
<img src="nbdocs:/com/jme3/gde/core/docs/jme3/external/blender-material-2.png">
<img src="nbdocs:/com/jme3/gde/core/docs/jme3/external/blender-material-3.png">
<img src="nbdocs:/com/jme3/gde/core/docs/jme3/external/blender-material-4.png">
</p>
<p> <p>
Also check out these videos and resources: Also check out these videos and resources:

@ -13,29 +13,43 @@ Every class that extends jme3.app.SimpleApplication has properties that can be c
</div> </div>
<!-- EDIT1 SECTION "jME3 Application Display Settings" [1-465] --> <!-- EDIT1 SECTION "jME3 Application Display Settings" [1-465] -->
<h2><a>Code Sample</a></h2> <h2><a>Code Samples</a></h2>
<div> <div>
<p>
This is how you specify settinsg for MyGame (or Main or whatever you called your SimpleApplication instance) before the game starts:
</p>
<pre>public static void main&#40;String&#91;&#93; args&#41; &#123; <pre>public static void main&#40;String&#91;&#93; args&#41; &#123;
AppSettings settings = new AppSettings&#40;true&#41;; AppSettings settings = new AppSettings&#40;true&#41;;
settings.setResolution&#40;640,480&#41;; settings.setResolution&#40;640,480&#41;;
... // other properties see below // ... other properties, see below
&nbsp; MyGame app = new MyGame&#40;&#41;;
MyGame app = new MyGame&#40;&#41;; // or Main or whatever you called your SimpleApplication
app.setSettings&#40;settings&#41;; app.setSettings&#40;settings&#41;;
app.start&#40;&#41;; app.start&#40;&#41;;
&#125;</pre> &#125;</pre>
<p> <p>
Set the boolean in the AppSettings contructor to true if you want to keep the default settings for everything that you do not specify. Set this parameter to false if you want to change some of the settings, but otherwise want the application to load user settings from previous launches. Set the boolean in the AppSettings contructor to true if you want to keep the default settings for values that you do not specify. Set this parameter to false if you want the application to load user settings from previous launches. In either case you can still customize individual settings.
</p> </p>
<p> <p>
<p><div>Use <code>app.setShowSettings(true);</code> to present the user with a splashscreen and display settings dialog when starting the game, or <code>app.setShowSettings(false);</code> to hide the custom splashscreen. Set this boolean before calling <code>app.start()</code> on the SimpleApplication. This example toggles the settings to fullscreen while the game is already running. Then it restarts the game context (not the whole game) which applies the changed settings.
</div></p>
</p> </p>
<pre>public void toggleToFullscreen&#40;&#41; &#123;
GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment&#40;&#41;.getDefaultScreenDevice&#40;&#41;;
DisplayMode&#91;&#93; modes = device.getDisplayModes&#40;&#41;;
int i=0; // note: there are usually several, let's pick the first
settings.setResolution&#40;modes&#91;i&#93;.getWidth&#40;&#41;,modes&#91;i&#93;.getHeight&#40;&#41;&#41;;
settings.setFrequency&#40;modes&#91;i&#93;.getRefreshRate&#40;&#41;&#41;;
settings.setDepthBits&#40;modes&#91;i&#93;.getBitDepth&#40;&#41;&#41;;
settings.setFullscreen&#40;device.isFullScreenSupported&#40;&#41;&#41;;
app.setSettings&#40;settings&#41;;
app.restart&#40;&#41;; // restart the context to apply changes
&#125;</pre>
</div> </div>
<!-- EDIT2 SECTION "Code Sample" [466-1381] --> <!-- EDIT2 SECTION "Code Samples" [466-1941] -->
<h2><a>Properties</a></h2> <h2><a>Properties</a></h2>
<div> <div>
<div><table> <div><table>
@ -75,7 +89,7 @@ Set VSync to false to deactivate vertical syncing (faster, but possible page tea
60 fps</td> 60 fps</td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT4 TABLE [1406-3627] --><div><table> <!-- EDIT4 TABLE [1966-4187] --><div><table>
<tr> <tr>
<th>Settings Property (Input)</th><th>Description</th><th>Default</th> <th>Settings Property (Input)</th><th>Description</th><th>Default</th>
</tr> </tr>
@ -85,8 +99,14 @@ Set VSync to false to deactivate vertical syncing (faster, but possible page tea
<tr> <tr>
<td>setUseJoysticks(true)</td><td>Activate optional joystick support</td><td>false</td> <td>setUseJoysticks(true)</td><td>Activate optional joystick support</td><td>false</td>
</tr> </tr>
<tr>
<td>setEmulateMouse(true)</td><td>Enable or disable mouse emulation for touchscreen-based devices. Setting this to true converts taps on the touchscreen to clicks, and finger swiping gestures over the touchscreen into mouse axis events.</td><td>false</td>
</tr>
<tr>
<td>setEmulateMouseFlipAxis(true,true)</td><td>Flips the X or Y (or both) axes for the emulated mouse. Set the first parameter to true to flip the x axis, and the second to flip the y axis.</td><td>false,false</td>
</tr>
</table></div> </table></div>
<!-- EDIT5 TABLE [3629-3918] --><div><table> <!-- EDIT5 TABLE [4189-4903] --><div><table>
<tr> <tr>
<th>Settings Property (Audio)</th><th>Description</th><th>Default</th> <th>Settings Property (Audio)</th><th>Description</th><th>Default</th>
</tr> </tr>
@ -97,7 +117,7 @@ Set VSync to false to deactivate vertical syncing (faster, but possible page tea
<td>setStereo3D(true)</td><td>Enable 3D stereo. This feature requires hardware support from the GPU driver. See <object classid="java:org.netbeans.modules.javahelp.BrowserDisplayer"><param name="content" value="http://en.wikipedia.org/wiki/Quad_buffering"><param name="text" value="<html><u>Quad Buffering</u></html>"><param name="textColor" value="blue"></object>. Currently, your everday user&#039;s hardware does not support this, so you can ignore it for now.</td><td>false</td> <td>setStereo3D(true)</td><td>Enable 3D stereo. This feature requires hardware support from the GPU driver. See <object classid="java:org.netbeans.modules.javahelp.BrowserDisplayer"><param name="content" value="http://en.wikipedia.org/wiki/Quad_buffering"><param name="text" value="<html><u>Quad Buffering</u></html>"><param name="textColor" value="blue"></object>. Currently, your everday user&#039;s hardware does not support this, so you can ignore it for now.</td><td>false</td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT6 TABLE [3920-4344] --><div><table> <!-- EDIT6 TABLE [4905-5329] --><div><table>
<tr> <tr>
<th>Settings Property (Branding)</th><th>Description</th><th>Default</th> <th>Settings Property (Branding)</th><th>Description</th><th>Default</th>
</tr> </tr>
@ -106,26 +126,54 @@ Set VSync to false to deactivate vertical syncing (faster, but possible page tea
</tr> </tr>
<tr> <tr>
<td>setIcons(new BufferedImage[]{ <br/> <td>setIcons(new BufferedImage[]{ <br/>
ImageIO.read(new File(&quot;&quot;)), …});</td><td>This specifies the little application icon in the titlebar of the application. You should specify the icon in various sizes (256,128,32,16) to look good on each <acronym title="Operating System">OS</acronym>. Note: This is not the application icon on the desktop.</td><td>null</td> ImageIO.read(new File(&quot;&quot;)), …});</td><td>This specifies the little application icon in the titlebar of the application (unused in MacOS?). You should specify the icon in various sizes (256,128,32,16) to look good on various operating systems. Note: This is not the application icon on the desktop.</td><td>null</td>
</tr>
<tr>
<td>setSettingsDialogImage(&quot;Interface/mysplashscreen.png&quot;)</td><td>A custom splashscreen image in the <code>assets/Interface</code> directory which is displayed when the settings dialog is shown.</td><td>&quot;/com/jme3/app/Monkey.png&quot;</td>
</tr>
</table></div>
<!-- EDIT7 TABLE [5331-6038] -->
<p>
<p><div>You can use <code>app.setShowSettings(true);</code> and <code>setSettingsDialogImage(&quot;Interface/mysplashscreen.png&quot;)</code> to present the user with jme3&#039;s default display settings dialog when starting the game. Use <code>app.setShowSettings(false);</code> to hide the default settings screen. Set this boolean before calling <code>app.start()</code> on the SimpleApplication.
</div></p>
</p>
</div>
<!-- EDIT3 SECTION "Properties" [1942-6398] -->
<h2><a>Toggling and Activating Settings</a></h2>
<div>
<div><table>
<tr>
<th>SimpleApplication method</th><th>Description</th>
</tr>
<tr>
<td>app.setShowSettings(boolean)</td><td>Activate or deactivate the default settings screen before start()ing the game. If you let users use this screen, you do not need to modify the settings object. Note: Most developers implement their own custom settings screen, but the default one is useful during the alpha stages.</td>
</tr>
<tr>
<td>app.setSettings(settings)</td><td>After you have modified the properties on the settings object, you apply it to your application. Note that the settings are not automatically reloaded while the game is running.</td>
</tr>
<tr>
<td>app.start()</td><td>Every game calls start() in the beginning to initialize the game and apply the settings. Modify and set your settings before calling start().</td>
</tr> </tr>
<tr> <tr>
<td>setSettingsDialogImage(&quot;/path/to/splash.png&quot;)</td><td>A custom splashscreen image in the assets directory which is displayed when the settings dialog is shown.</td><td>&quot;/com/jme3/app/Monkey.png&quot;</td> <td>app.restart()</td><td>Restart()ing a running game restarts the game context and applies the updated settings object. (This does not restart or reinitialize the whole game.)</td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT7 TABLE [4346-4993] --> <!-- EDIT9 TABLE [6445-7326] -->
</div> </div>
<!-- EDIT3 SECTION "Properties" [1382-4994] --> <!-- EDIT8 SECTION "Toggling and Activating Settings" [6399-7327] -->
<h2><a>Saving and Loading Settings</a></h2> <h2><a>Saving and Loading Settings</a></h2>
<div> <div>
<p> <p>
An AppSettings object also supports the following methods: An AppSettings object also supports the following methods to save your settings under a unique key (in this example &quot;com.foo.MyCoolGame3&quot;):
</p> </p>
<ul> <ul>
<li><div> Use <code>settings.save(&quot;unique_key&quot;)</code> to save your settings via standard java.io serialization.</div> <li><div> Use <code>settings.save(&quot;com.foo.MyCoolGame3&quot;)</code> to save your settings via standard java.io serialization.</div>
</li> </li>
<li><div> Use <code>settings.load(&quot;unique_key&quot;)</code> to load your settings.</div> <li><div> Use <code>settings.load(&quot;com.foo.MyCoolGame3&quot;)</code> to load your settings.</div>
</li> </li>
<li><div> Use <code>settings2.copyFrom(settings)</code> to copy a settings object.</div> <li><div> Use <code>settings2.copyFrom(settings)</code> to copy a settings object.</div>
</li> </li>
@ -154,5 +202,5 @@ Provide the unique name of your jME3 application as the String argument. For exa
</ul> </ul>
</div> </div>
<!-- EDIT8 SECTION "Saving and Loading Settings" [4995-] --> <!-- EDIT10 SECTION "Saving and Loading Settings" [7328-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:intermediate:appsettings?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:intermediate:appsettings?do=export_xhtmlbody">view online version</a></em></p>

@ -307,9 +307,9 @@ As your SimpleApplication-based game grows more advanced, you find yourself putt
<ul> <ul>
<li><div> Each AppState calls its own <code>initialize()</code> and <code>cleanup()</code> methods when it is attached to or detached from the game. </div> <li><div> Each AppState calls its own <code>initialize()</code> and <code>cleanup()</code> methods when it is attached to or detached from the game. </div>
</li> </li>
<li><div> Each AppState runs its own <code>update()</code> loop that hooks into the main simpleUpdate() loop. </div> <li><div> Each AppState runs its own <em>thread-safe</em> <code>update()</code> loop that hooks into the main <code>simpleUpdate()</code> loop. </div>
</li> </li>
<li><div> You can specify what happens if an AppState is paused/unpaused.</div> <li><div> You specify what happens if an AppState is paused/unpaused.</div>
</li> </li>
<li><div> You can use an AppState to switch between sets of AppStates.</div> <li><div> You can use an AppState to switch between sets of AppStates.</div>
</li> </li>
@ -323,7 +323,7 @@ As your SimpleApplication-based game grows more advanced, you find yourself putt
<ul> <ul>
<li><div> Controls add a type of behaviour (methods and fields) to an individual Spatial (a player, an NPC). </div> <li><div> Controls add a type of behaviour (methods and fields) to an individual Spatial (a player, an NPC). </div>
</li> </li>
<li><div> Each Control runs its own <code>controlUpdate()</code> loop that hooks into the main <code>simpleUpdate()</code> loop. </div> <li><div> Each Control runs its own <em>thread-safe</em> <code>controlUpdate()</code> loop that hooks into the main <code>simpleUpdate()</code> loop. </div>
</li> </li>
<li><div> One Spatial can be influenced by several Controls. (!)</div> <li><div> One Spatial can be influenced by several Controls. (!)</div>
</li> </li>
@ -337,6 +337,11 @@ As your SimpleApplication-based game grows more advanced, you find yourself putt
<p> <p>
<p><div>A game contains algorithms that do not directly affect spatials (for example, AI pathfinding code that calculates and chooses paths, but does not actually move spatials). You do not need to put such non-spatial code in controls, you can run thse things in a new thread. Only the tranformation code that actually modifies the spatial must be called from a control, or must be enqueue()ed.
</div></p>
</p>
<p>
Controls and AppStates often work together: An AppState can reach up to the application and <code>get</code> all Spatials from the rootNode that carry a specific Control, and perform a global action on them. Example: In BulletPhysics, all physical Spatials that carry RigidBodyControls are steered by the overall BulletAppState. Controls and AppStates often work together: An AppState can reach up to the application and <code>get</code> all Spatials from the rootNode that carry a specific Control, and perform a global action on them. Example: In BulletPhysics, all physical Spatials that carry RigidBodyControls are steered by the overall BulletAppState.
</p> </p>
@ -350,7 +355,7 @@ Read all about <a href="/com/jme3/gde/core/docs/jme3/advanced/custom_controls.ht
</p> </p>
</div> </div>
<!-- EDIT13 SECTION "The Smart Way to Implement Game Logic" [10494-12862] --> <!-- EDIT13 SECTION "The Smart Way to Implement Game Logic" [10494-13296] -->
<h3><a>Optimize Application Performance</a></h3> <h3><a>Optimize Application Performance</a></h3>
<div> <div>
<ul> <ul>
@ -363,7 +368,7 @@ Read all about <a href="/com/jme3/gde/core/docs/jme3/advanced/custom_controls.ht
</ul> </ul>
</div> </div>
<!-- EDIT14 SECTION "Optimize Application Performance" [12863-13535] --> <!-- EDIT14 SECTION "Optimize Application Performance" [13297-13969] -->
<h3><a>Don&#039;t Mess With Geometric State</a></h3> <h3><a>Don&#039;t Mess With Geometric State</a></h3>
<div> <div>
@ -381,7 +386,7 @@ These tips are especially for users who already know jME2. Automatic handling of
</ul> </ul>
</div> </div>
<!-- EDIT15 SECTION "Don't Mess With Geometric State" [13536-13987] --> <!-- EDIT15 SECTION "Don't Mess With Geometric State" [13970-14421] -->
<h3><a>Maintain Internal Documentation</a></h3> <h3><a>Maintain Internal Documentation</a></h3>
<div> <div>
@ -404,7 +409,7 @@ Treat javadoc as messages to your future self. &quot;genNextVal() generates the
</p> </p>
</div> </div>
<!-- EDIT16 SECTION "Maintain Internal Documentation" [13988-14715] --> <!-- EDIT16 SECTION "Maintain Internal Documentation" [14422-15149] -->
<h2><a>Debugging and Test Phase</a></h2> <h2><a>Debugging and Test Phase</a></h2>
<div> <div>
@ -430,12 +435,12 @@ Treat javadoc as messages to your future self. &quot;genNextVal() generates the
</p> </p>
</div> </div>
<!-- EDIT17 SECTION "Debugging and Test Phase" [14716-17201] --> <!-- EDIT17 SECTION "Debugging and Test Phase" [15150-17635] -->
<h2><a>Release Phase</a></h2> <h2><a>Release Phase</a></h2>
<div> <div>
</div> </div>
<!-- EDIT18 SECTION "Release Phase" [17202-17228] --> <!-- EDIT18 SECTION "Release Phase" [17636-17662] -->
<h3><a>Pre-Release To-Do List</a></h3> <h3><a>Pre-Release To-Do List</a></h3>
<div> <div>
<ul> <ul>
@ -460,7 +465,7 @@ Treat javadoc as messages to your future self. &quot;genNextVal() generates the
</ul> </ul>
</div> </div>
<!-- EDIT19 SECTION "Pre-Release To-Do List" [17229-18041] --> <!-- EDIT19 SECTION "Pre-Release To-Do List" [17663-18475] -->
<h3><a>Distributing the Executables</a></h3> <h3><a>Distributing the Executables</a></h3>
<div> <div>
@ -498,7 +503,7 @@ Decide whether you want to release your game as WebStart, Desktop JAR, or Applet
(.APK)</td><td>Game runs on Android devices.</td><td>Android devices do not support post-procesor effects.</td> (.APK)</td><td>Game runs on Android devices.</td><td>Android devices do not support post-procesor effects.</td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT21 TABLE [18475-19695] --> <!-- EDIT21 TABLE [18909-20129] -->
<p> <p>
Which ever method you choose, a Java-Application works on the main operating systems: Windows, Mac <acronym title="Operating System">OS</acronym>, Linux, Android. Which ever method you choose, a Java-Application works on the main operating systems: Windows, Mac <acronym title="Operating System">OS</acronym>, Linux, Android.
@ -510,5 +515,5 @@ The distribution appears in a newly generated <code>dist</code> directory inside
</p> </p>
</div> </div>
<!-- EDIT20 SECTION "Distributing the Executables" [18042-] --> <!-- EDIT20 SECTION "Distributing the Executables" [18476-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:intermediate:best_practices?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/jme3:intermediate:best_practices?do=export_xhtmlbody">view online version</a></em></p>

@ -222,7 +222,7 @@ Use the jMonkeyEngine SceneComposer to add these properties.</div>
<p> <p>
<p><div>Important: Unoptimized external model files (.mesh.xml, .material, .obj, .mat, etc) are not bundled when you build your application! If you try to run the JAR with code referring to non-j3o models, you get a <strong>Runtime Error</strong> because the resource is not found. The final application code should only reference .j3o files. <p><div>Important: Unoptimized external model files (.mesh.xml, .material, .obj, .mat, .blend, etc) are not bundled by the default build script into the final executables! If you try to run executables containing code that loads non-.j3o models, you get a <strong>Runtime Error</strong> (resource not found). The final application code should only reference .j3o files. (Note that you will not get this runtime error when running development builds straight from the <acronym title="Software Development Kit">SDK</acronym>!)
</div></p> </div></p>
</p> </p>

@ -92,7 +92,7 @@ Genereally jME3 is well optimized and optimizes these things correctly. The norm
<ul> <ul>
<li><div> If the (S) values are significantly higher than the (F) values, that means there are a lot of extra switches happening which can cause a performance loss. Switches happen for instance if you have many transparent materials in your scene. In that case this tells you that you should use fewer transparent materials.</div> <li><div> If the (S) values are significantly higher than the (F) values, that means there are a lot of extra switches happening which can cause a performance loss. Switches happen for instance if you have many transparent materials in your scene. In that case this tells you that you should use fewer transparent materials.</div>
</li> </li>
<li><div> If the (M) values are much higher than the (F) values, that means a lot more GL objects are in memory than are actually used. This can happen in rare cases, such as extremely large scenes (&gt; 2000 wu). In this case, you should can optimize performance by identifying spatials to cull or detach.</div> <li><div> If the (M) values are much higher than the (F) values, that means a lot more GL objects are in memory than are actually used. This can happen in rare cases, such as extremely large scenes (&gt; 2000 wu) with lots of spatials or lots of different materials. In this case, you should can optimize performance by identifying spatials to cull or detach.</div>
</li> </li>
<li><div> The Object Count (Batch Count) is a very important value that indicates how many geometries were rendered in the last frame. In general, try to keep the object count around 100-200 to keep your game fast and responsive. If the count is permanently higher, hand-code rules that detach remote objects, or optimize a complex multi-material scene using: <pre>GeometryBatchFactory.optimize(complexNode, true);</pre> <li><div> The Object Count (Batch Count) is a very important value that indicates how many geometries were rendered in the last frame. In general, try to keep the object count around 100-200 to keep your game fast and responsive. If the count is permanently higher, hand-code rules that detach remote objects, or optimize a complex multi-material scene using: <pre>GeometryBatchFactory.optimize(complexNode, true);</pre>
</div> </div>

@ -156,6 +156,8 @@ By default a BlenderModelLoader is registered with your assetManager to load ble
<h2><a>Planned features.</a></h2> <h2><a>Planned features.</a></h2>
<div> <div>
<ol> <ol>
<li><div> Loading BMesh.</div>
</li>
<li><div> Loading sky.</div> <li><div> Loading sky.</div>
</li> </li>
<li><div> Full support for scale and offset in texture input mapping.</div> <li><div> Full support for scale and offset in texture input mapping.</div>
@ -171,16 +173,18 @@ By default a BlenderModelLoader is registered with your assetManager to load ble
</ol> </ol>
</div> </div>
<!-- EDIT5 SECTION "Planned features." [4058-4318] --> <!-- EDIT5 SECTION "Planned features." [4058-4337] -->
<h2><a>Known bugs/problems.</a></h2> <h2><a>Known bugs/problems.</a></h2>
<div> <div>
<ol> <ol>
<li><div> RGB10 and RGB9E5 texture types are not supported in texture merging operations (which means that you can use this as a single texture on the model, but you should not combine it with other images or generated textures).</div> <li><div> RGB10 and RGB9E5 texture types are not supported in texture merging operations (which means that you can use this as a single texture on the model, but you should not combine it with other images or generated textures).</div>
</li> </li>
<li><div> If an armature is attached to a mesh that has more than one material the vertices of the mesh might be strongly displaced. Hope to fix that soon.</div>
</li>
</ol> </ol>
</div> </div>
<!-- EDIT6 SECTION "Known bugs/problems." [4319-4576] --> <!-- EDIT6 SECTION "Known bugs/problems." [4338-4744] -->
<h2><a>Using BlenderLoader instead of BlenderModelLoader</a></h2> <h2><a>Using BlenderLoader instead of BlenderModelLoader</a></h2>
<div> <div>
@ -241,7 +245,7 @@ You can use ModelKey as well. This will give the same result as using default Bl
</p> </p>
</div> </div>
<!-- EDIT7 SECTION "Using BlenderLoader instead of BlenderModelLoader" [4577-6313] --> <!-- EDIT7 SECTION "Using BlenderLoader instead of BlenderModelLoader" [4745-6481] -->
<h2><a>How does it work?</a></h2> <h2><a>How does it work?</a></h2>
<div> <div>
@ -287,7 +291,7 @@ Here is the list of how blender features are mapped into jme.
<td>Surface </td><td>Node </td><td>The surface is transformed to the proper mesh</td> <td>Surface </td><td>Node </td><td>The surface is transformed to the proper mesh</td>
</tr> </tr>
</table></div> </table></div>
<!-- EDIT9 TABLE [6787-7138] --> <!-- EDIT9 TABLE [6955-7306] -->
<p> <p>
Using BlenderLoader can allow you to use blend file as your local assets repository. Using BlenderLoader can allow you to use blend file as your local assets repository.
@ -297,7 +301,7 @@ Probably versions before 2.49 will work pretty well too, but I never checked tha
</p> </p>
</div> </div>
<!-- EDIT8 SECTION "How does it work?" [6314-7473] --> <!-- EDIT8 SECTION "How does it work?" [6482-7641] -->
<h2><a>Notes</a></h2> <h2><a>Notes</a></h2>
<div> <div>
@ -306,6 +310,10 @@ I know that the current version of loader is not yet fully functional, but beliv
Hope I will meet your expectations. Hope I will meet your expectations.
</p> </p>
<p>
Be mindful of the result model vertices amount. The best results are achieved when the model is smooth and has no texture. Then the vertex amount is equal to the vertex amount in blender. If the model is not smooth or has a generated texture applied then the amount of vertices is 3 times larger than mesh&#039;s triangles amount. If a 2d texture is applied with UV mapping then the vertex count will vary depending on how much the UV map is fragmented.
</p>
<p> <p>
Cheers, Cheers,
Marcin Roguski (Kaelthas) Marcin Roguski (Kaelthas)
@ -334,5 +342,5 @@ See also:
</span></div> </span></div>
</div> </div>
<!-- EDIT10 SECTION "Notes" [7474-] --> <!-- EDIT10 SECTION "Notes" [7642-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/sdk:blender?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/sdk:blender?do=export_xhtmlbody">view online version</a></em></p>

@ -204,7 +204,9 @@ Keyboard Shortcuts save you time when when you need to repeat common actions suc
</li> </li>
<li><div> Open in Projects / Files / Favorites window: <strong>Ctrl-Shift-1 / 2 / 3</strong></div> <li><div> Open in Projects / Files / Favorites window: <strong>Ctrl-Shift-1 / 2 / 3</strong></div>
</li> </li>
<li><div> Build&amp;Run Project / File: <strong>F6 / Shift-F6</strong></div> <li><div> Build&amp;Run the main class of the Project: <strong>F6</strong> </div>
</li>
<li><div> Run the open file: <strong>Shift-F6</strong> </div>
</li> </li>
<li><div> Switch to Editor / Projects / Files / Navigator: <strong>Ctrl-0 / 1 / 3 / 7</strong></div> <li><div> Switch to Editor / Projects / Files / Navigator: <strong>Ctrl-0 / 1 / 3 / 7</strong></div>
</li> </li>
@ -222,7 +224,7 @@ By default, jMonkeyEngine uses the same <object classid="java:org.netbeans.modul
</ul> </ul>
</div> </div>
<!-- EDIT8 SECTION "Keyboard Shortcuts" [4279-4994] --> <!-- EDIT8 SECTION "Keyboard Shortcuts" [4279-5036] -->
<h2><a>Tips and Tricks</a></h2> <h2><a>Tips and Tricks</a></h2>
<div> <div>
<ul> <ul>
@ -254,5 +256,5 @@ See also
</span></div> </span></div>
</div> </div>
<!-- EDIT9 SECTION "Tips and Tricks" [4995-] --> <!-- EDIT9 SECTION "Tips and Tricks" [5037-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/sdk:code_editor?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/sdk:code_editor?do=export_xhtmlbody">view online version</a></em></p>

@ -34,13 +34,19 @@ The jMonkeyEngine <acronym title="Software Development Kit">SDK</acronym> includ
</li> </li>
</ol> </ol>
<p>
Also check out <a href="/com/jme3/gde/core/docs/jme3/external/blender.html">how to create compatible models in blender</a> and <a href="/com/jme3/gde/core/docs/jme3/intermediate/multi-media_asset_pipeline.html">how to organize your assets</a>.
</p>
</div> </div>
<!-- EDIT2 SECTION "Installing the OgreXML Exporter in Blender" [712-1144] --> <!-- EDIT2 SECTION "Installing the OgreXML Exporter in Blender" [712-1311] -->
<h2><a>Importing and Viewing a Model</a></h2> <h2><a>Importing and Viewing a Model</a></h2>
<div> <div>
</div> </div>
<!-- EDIT3 SECTION "Importing and Viewing a Model" [1145-1186] --> <!-- EDIT3 SECTION "Importing and Viewing a Model" [1312-1353] -->
<h3><a>Using the Model Importer Tool</a></h3> <h3><a>Using the Model Importer Tool</a></h3>
<div> <div>
@ -76,7 +82,7 @@ The model is converted to j3o and all necessary files are copied to the project
</p> </p>
</div> </div>
<!-- EDIT4 SECTION "Using the Model Importer Tool" [1187-2052] --> <!-- EDIT4 SECTION "Using the Model Importer Tool" [1354-2219] -->
<h3><a>Using the model files directly</a></h3> <h3><a>Using the model files directly</a></h3>
<div> <div>
@ -113,7 +119,7 @@ Note: If the SceneViewer doesn&#039;t work refer to <a href="/com/jme3/gde/core/
</p> </p>
</div> </div>
<!-- EDIT5 SECTION "Using the model files directly" [2053-3270] --> <!-- EDIT5 SECTION "Using the model files directly" [2220-3437] -->
<h2><a>Working With a Model</a></h2> <h2><a>Working With a Model</a></h2>
<div> <div>
<ul> <ul>
@ -128,17 +134,17 @@ Note: If the SceneViewer doesn&#039;t work refer to <a href="/com/jme3/gde/core/
</ul> </ul>
</div> </div>
<!-- EDIT6 SECTION "Working With a Model" [3271-3606] --> <!-- EDIT6 SECTION "Working With a Model" [3438-3773] -->
<h2><a>Notes About Model Assets</a></h2> <h2><a>Notes About Model Assets</a></h2>
<div> <div>
<p> <p>
The original OgreXML <code>.mesh.xml</code>, <code>.scene</code>, <code>.material</code> and <code>.skeleton.xml</code> model files <strong>will not be included</strong> in the distribution <code>assets.jar</code> file of your distributed game, they are only available in the assets folder so you are able to recreate the <code>.j3o</code> file from the original if you ever come to change it in blender and have to export it again. The original OgreXML <code>.mesh.xml</code>, <code>.scene</code>, <code>.material</code>, <code>.skeleton.xml</code> and <code>.blend</code> model files <strong>will not be included</strong> in the distribution <code>assets.jar</code> file of your distributed game, they are only available in the assets folder so you are able to recreate the <code>.j3o</code> file from the original if you ever come to change it in blender and have to export it again.
</p> </p>
</div> </div>
<!-- EDIT7 SECTION "Notes About Model Assets" [3607-4011] --> <!-- EDIT7 SECTION "Notes About Model Assets" [3774-4190] -->
<h2><a>About the SceneViewer and SceneExplorer window</a></h2> <h2><a>About the SceneViewer and SceneExplorer window</a></h2>
<div> <div>
@ -152,7 +158,7 @@ Most plugins will deliver their own UI elements to modify the scene so the Scene
</p> </p>
</div> </div>
<!-- EDIT8 SECTION "About the SceneViewer and SceneExplorer window" [4012-4531] --> <!-- EDIT8 SECTION "About the SceneViewer and SceneExplorer window" [4191-4710] -->
<h3><a>About the projects AssetManager</a></h3> <h3><a>About the projects AssetManager</a></h3>
<div> <div>
@ -176,5 +182,5 @@ To have a valid jME3 object, the paths to textures and other assets belonging to
</span></div> </span></div>
</div> </div>
<!-- EDIT9 SECTION "About the projects AssetManager" [4532-] --> <!-- EDIT9 SECTION "About the projects AssetManager" [4711-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/sdk:model_loader_and_viewer?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/sdk:model_loader_and_viewer?do=export_xhtmlbody">view online version</a></em></p>

@ -111,7 +111,7 @@ Now let&#039;s have a look at the project&#039;s file structure in the File Expl
Right-Click the project to open the Project properties. Right-Click the project to open the Project properties.
</p> </p>
<ul> <ul>
<li><div> In the Run section, specify the main class of your project. </div> <li><div> In the Run section, specify the main class of your project. (Pressing F6 runs this main class.) </div>
</li> </li>
<li><div> In the Run section, you can optionally configure JVM options and command line parameters.</div> <li><div> In the Run section, you can optionally configure JVM options and command line parameters.</div>
</li> </li>
@ -122,53 +122,42 @@ Right-Click the project to open the Project properties.
</ul> </ul>
</div> </div>
<!-- EDIT4 SECTION "Project Configuration" [2976-3466] --> <!-- EDIT4 SECTION "Project Configuration" [2976-3502] -->
<h3><a>Adding external jar libraries</a></h3> <h3><a>Clean, Build and Run Cycle</a></h3>
<div> <div>
<p> <p>
You may want to use external Java libraries in your jME project, for example content generators or artificial intelligence implementations. <img src="nbdocs:/com/jme3/gde/core/docs/sdk/jmonkeyplatform-docu-5.png">
</p> </p>
<p> <p>
Add the library to the global library list: <p><div>Pressing <strong>F6 builds &amp; runs</strong> the <em>main</em> class of the <em>main project</em>. If there are several classes, or several projects, you have to specify which one you want F6 to run. Right-click a project and choose Set As Main Project, then right-click the project again and choose Properties &gt; Run and choose a Main Class. <br/>
To build and run the main() of <em>any file that is open in the editor</em>, press <strong>Shift-F6</strong> !
</div></p>
</p> </p>
<ul> <ul>
<li><div> Select Tools→Libraries in the main menu.</div> <li><div> Right-Click the project and use the context-menu to clean all generated classes and JARs.</div>
</li>
<li><div> Click &quot;New Library&quot;, enter a name for the library, and press OK</div>
</li>
<li><div> In the &quot;Classpath&quot; tab, press &quot;Add JAR/Folder&quot; and select the jar file(s) needed for the library</div>
</li>
<li><div> (Optional) In the &quot;JavaDoc&quot; tab, press &quot;Add ZIP/Folder&quot; and select the javadoc for the library, as zip file or folder.</div>
</li> </li>
<li><div> (Optional) In the &quot;Sources&quot; tab you can select a folder or jar file containing the source files of the library.</div> <li><div> Right-Click individual files with a main method to build and run them. (Shift-F6)</div>
</li> </li>
<li><div> Press OK</div> <li><div> Press the Run button (green arrow in the toolbar) to build and run the project. (F6) </div>
</li> </li>
</ul> </ul>
<p> <p>
Add the library to a project: <strong>More than one project open?</strong> The toolbar buttons and the F-keys are bound to the main project, which is shown in bold in the Project Explorer. Right-click a project and select Set As Main Project to make it respond to the toolbar buttons and F-keys.
</p> </p>
<ul>
<li><div> Right-Click your project and select &quot;Properties&quot;</div>
</li>
<li><div> Select &quot;Libaries&quot; on the left and then press &quot;Add Library&quot;</div>
</li>
<li><div> Select the library from the list and press OK</div>
</li>
</ul>
<p> <p>
<strong>Worried About Proprietary Lock-in?</strong> You are never locked into the jMonkeyEngine <acronym title="Software Development Kit">SDK</acronym>: At any time, you can change into your project directory on the command line, and clean, build, and run your project, using non-proprietary Apache Ant commands:
That&#039;s it, your project can now use the external library. If you also linked the javadoc and sources, the <acronym title="Software Development Kit">SDK</acronym> will assist you with javadoc popups, code completion (ctrl-space) and source navigation (ctrl-click).
</p> </p>
<pre>ant clean; ant jar; ant run;</pre>
</div> </div>
<!-- EDIT5 SECTION "Adding external jar libraries" [3467-4570] --> <!-- EDIT5 SECTION "Clean, Build and Run Cycle" [3503-4839] -->
<h3><a>Development Process</a></h3> <h3><a>Development Process</a></h3>
<div> <div>
<ul> <ul>
@ -191,36 +180,53 @@ That&#039;s it, your project can now use the external library. If you also linke
</ul> </ul>
</div> </div>
<!-- EDIT6 SECTION "Development Process" [4571-5756] --> <!-- EDIT6 SECTION "Development Process" [4840-6025] -->
<h3><a>Clean, Build and Run Cycle</a></h3> <h3><a>Adding external jar libraries</a></h3>
<div> <div>
<p> <p>
<img src="nbdocs:/com/jme3/gde/core/docs/sdk/jmonkeyplatform-docu-5.png"> You may want to use external Java libraries in your jME project, for example content generators or artificial intelligence implementations.
</p>
<p>
Add the library to the global library list:
</p> </p>
<ul> <ul>
<li><div> Right-Click the project and use the context-menu to clean all generated classes and JARs.</div> <li><div> Select Tools→Libraries in the main menu.</div>
</li> </li>
<li><div> Right-Click individual files with a main method to build and run them. (Shift-F6)</div> <li><div> Click &quot;New Library&quot;, enter a name for the library, and press OK</div>
</li>
<li><div> In the &quot;Classpath&quot; tab, press &quot;Add JAR/Folder&quot; and select the jar file(s) needed for the library</div>
</li> </li>
<li><div> Press the Run button (green arrow in the toolbar) to build and run the project. (F6)</div> <li><div> (Optional) In the &quot;JavaDoc&quot; tab, press &quot;Add ZIP/Folder&quot; and select the javadoc for the library, as zip file or folder.</div>
</li>
<li><div> (Optional) In the &quot;Sources&quot; tab you can select a folder or jar file containing the source files of the library.</div>
</li>
<li><div> Press OK</div>
</li> </li>
</ul> </ul>
<p> <p>
<strong>More than one project open?</strong> The toolbar buttons and the F-keys are bound to the main project, which is shown in bold in the Project Explorer. Right-click a project and select Set As Main Project to make it respond to the toolbar buttons and F-keys. Add the library to a project:
</p> </p>
<ul>
<li><div> Right-Click your project and select &quot;Properties&quot;</div>
</li>
<li><div> Select &quot;Libaries&quot; on the left and then press &quot;Add Library&quot;</div>
</li>
<li><div> Select the library from the list and press OK</div>
</li>
</ul>
<p> <p>
<strong>Worried About Proprietary Lock-in?</strong> You are never locked into the jMonkeyEngine <acronym title="Software Development Kit">SDK</acronym>: At any time, you can change into your project directory on the command line, and clean, build, and run your project, using non-proprietary Apache Ant commands:
That&#039;s it, your project can now use the external library. If you also linked the javadoc and sources, the <acronym title="Software Development Kit">SDK</acronym> will assist you with javadoc popups, code completion (ctrl-space) and source navigation (ctrl-click).
</p> </p>
<pre>ant clean; ant jar; ant run;</pre>
</div> </div>
<!-- EDIT7 SECTION "Clean, Build and Run Cycle" [5757-6655] --> <!-- EDIT7 SECTION "Adding external jar libraries" [6026-7129] -->
<h3><a>Application Deployment</a></h3> <h3><a>Application Deployment</a></h3>
<div> <div>
<ul> <ul>
@ -229,7 +235,7 @@ That&#039;s it, your project can now use the external library. If you also linke
</ul> </ul>
</div> </div>
<!-- EDIT8 SECTION "Application Deployment" [6656-6875] --> <!-- EDIT8 SECTION "Application Deployment" [7130-7349] -->
<h2><a>Running Sample Projects</a></h2> <h2><a>Running Sample Projects</a></h2>
<div> <div>
@ -258,5 +264,5 @@ Choose samples from the TestChooser and try out the included demos.</div>
</span></div> </span></div>
</div> </div>
<!-- EDIT9 SECTION "Running Sample Projects" [6876-] --> <!-- EDIT9 SECTION "Running Sample Projects" [7350-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/sdk:project_creation?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/sdk:project_creation?do=export_xhtmlbody">view online version</a></em></p>

@ -56,7 +56,7 @@ On some Linux and Windows systems, the <acronym title="Software Development Kit"
</div> </div>
<h5><a>Graphics Driver</a></h5> <h4><a>Graphics Driver</a></h4>
<div> <div>
<p> <p>
@ -65,7 +65,7 @@ On Windows and Linux make sure you have the latest driver installed. Make sure i
</div> </div>
<h5><a>Heavyweight Canvas</a></h5> <h4><a>Heavyweight Canvas</a></h4>
<div> <div>
<p> <p>
@ -78,7 +78,7 @@ If you cannot start the <acronym title="Software Development Kit">SDK</acronym>,
</div> </div>
<h5><a>Look and Feel</a></h5> <h4><a>Look and Feel</a></h4>
<div> <div>
<p> <p>
@ -89,7 +89,7 @@ The <acronym title="Operating System">OS</acronym>-built-in look and feel might
</div> </div>
<h5><a>Compiz</a></h5> <h4><a>Compiz</a></h4>
<div> <div>
<p> <p>
@ -98,16 +98,16 @@ Compiz on Linux might cause issues, if you set its rendering quality to &quot;me
</p> </p>
</div> </div>
<!-- EDIT4 SECTION "Stability / Graphics issues" [1257-2762] --> <!-- EDIT4 SECTION "Stability / Graphics issues" [1257-2770] -->
<h3><a>Updating problems</a></h3> <h3><a>Updating problems</a></h3>
<div> <div>
<p> <p>
If you have problems updating the <acronym title="Software Development Kit">SDK</acronym>, try deleting all files from jmonkeyplatform/update/download or [settings folder]/update/download depending on your system (look above for the settings folder location). If you have problems updating the <acronym title="Software Development Kit">SDK</acronym>, try deleting all files from <code>jmonkeyplatform/update/download</code> and/or <code>[settings folder]/update/download</code> depending on your system (look above for the settings folder location).
</p> </p>
</div> </div>
<!-- EDIT5 SECTION "Updating problems" [2763-2999] --> <!-- EDIT5 SECTION "Updating problems" [2771-3019] -->
<h3><a>Known Issues</a></h3> <h3><a>Known Issues</a></h3>
<div> <div>
@ -124,5 +124,5 @@ For a list of known issues and possible workarounds see the following link:
</span></div> </span></div>
</div> </div>
<!-- EDIT6 SECTION "Known Issues" [3000-] --> <!-- EDIT6 SECTION "Known Issues" [3020-] -->
<p><em><a href="http://jmonkeyengine.org/wiki/doku.php/sdk:troubleshooting?do=export_xhtmlbody">view online version</a></em></p> <p><em><a href="http://jmonkeyengine.org/wiki/doku.php/sdk:troubleshooting?do=export_xhtmlbody">view online version</a></em></p>

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save