mitm001 5 лет назад
Родитель
Сommit
29afb22e56
31 измененных файлов с 78 добавлено и 92 удалено
  1. 1 1
      docs/modules/ROOT/pages/documentation.adoc
  2. 3 7
      docs/modules/ROOT/pages/jme3/advanced/nifty_gui_java_layout.adoc
  3. 4 9
      docs/modules/ROOT/pages/jme3/advanced/nifty_gui_xml_layout.adoc
  4. 1 1
      docs/modules/ROOT/pages/jme3/matrix.adoc
  5. 3 3
      docs/modules/ROOT/pages/jme3/quaternion.adoc
  6. 1 1
      docs/modules/ROOT/pages/jme3/simpleapplication_from_the_commandline.adoc
  7. 4 4
      docs/modules/ROOT/pages/jme3/the_scene_graph.adoc
  8. 1 1
      docs/modules/core/pages/animation/animation.adoc
  9. 1 1
      docs/modules/core/pages/asset/asset_manager.adoc
  10. 2 2
      docs/modules/core/pages/gui/nifty_gui.adoc
  11. 1 1
      docs/modules/core/pages/material/material_definitions.adoc
  12. 1 1
      docs/modules/core/pages/material/materials_overview.adoc
  13. 1 1
      docs/modules/core/pages/scene/shape/shape.adoc
  14. 3 3
      docs/modules/core/pages/scene/spatial.adoc
  15. 1 1
      docs/modules/sdk/pages/model_loader_and_viewer.adoc
  16. 12 12
      docs/modules/tutorials/nav.adoc
  17. 4 9
      docs/modules/tutorials/pages/advanced/articles/pbr/pbr_part1.adoc
  18. 1 1
      docs/modules/tutorials/pages/advanced/modeling/3dsmax/3dsmax.adoc
  19. 1 1
      docs/modules/tutorials/pages/advanced/modeling/blender/blender.adoc
  20. 1 1
      docs/modules/tutorials/pages/advanced/modeling/blender/blender_gltf.adoc
  21. 1 1
      docs/modules/tutorials/pages/advanced/modeling/blender/blender_ogre_export.adoc
  22. 1 1
      docs/modules/tutorials/pages/beginner/beginner.adoc
  23. 1 1
      docs/modules/tutorials/pages/beginner/hello_asset.adoc
  24. 1 1
      docs/modules/tutorials/pages/beginner/hello_input_system.adoc
  25. 1 1
      docs/modules/tutorials/pages/beginner/hello_material.adoc
  26. 2 2
      docs/modules/tutorials/pages/beginner/hello_node.adoc
  27. 2 2
      docs/modules/tutorials/pages/concepts/best_practices.adoc
  28. 8 8
      docs/modules/tutorials/pages/concepts/faq.adoc
  29. 4 4
      docs/modules/tutorials/pages/concepts/math.adoc
  30. 7 7
      docs/modules/tutorials/pages/concepts/terminology.adoc
  31. 3 3
      docs/modules/tutorials/pages/concepts/transparency_sorting.adoc

+ 1 - 1
docs/modules/ROOT/pages/documentation.adoc

@@ -84,7 +84,7 @@ a| xref:jme3/external/blender.adoc[Blender Modeling Guide]
 
 a| <<jme3.adoc#documentation-for-advanced-users,jME3 advanced documentation>>
 <a|
-a| xref:tutorials:intermediate/faq.adoc[Answers to Frequently Asked Questions]
+a| xref:tutorials:concepts/faq.adoc[Answers to Frequently Asked Questions]
 
 |===
 

+ 3 - 7
docs/modules/ROOT/pages/jme3/advanced/nifty_gui_java_layout.adoc

@@ -1,11 +1,7 @@
 = Laying Out the GUI in Java
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
+:revnumber: 2.0
+:revdate: 2020/07/23
 :keywords: gui, documentation, nifty, hud
-:relfileprefix: ../../
-:imagesdir: ../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
 
 
 .  <<jme3/advanced/nifty_gui#,Nifty GUI Concepts>>
@@ -135,7 +131,7 @@ public class MyStartScreen extends BaseAppState {
 == Implement Your GUI Layout
 
 
-image::jme3/advanced/gui-layout-draft.png[gui-layout-draft.png,width="",height="",align="left"]
+image::gui/gui-layout-draft.png[gui-layout-draft.png,width="",height="",align="left"]
 
 
 In this tutorial, you recreate the same screen as in the <<jme3/advanced/nifty_gui_xml_layout#, Laying out the GUI in XML>> example.

+ 4 - 9
docs/modules/ROOT/pages/jme3/advanced/nifty_gui_xml_layout.adoc

@@ -1,12 +1,7 @@
 = Laying out the GUI in XML
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
+:revnumber: 2.0
+:revdate: 2020/07/23
 :keywords: gui, documentation, nifty, hud
-:relfileprefix: ../../
-:imagesdir: ../..
-:experimental:
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
 
 
 .  <<jme3/advanced/nifty_gui#,Nifty GUI Concepts>>
@@ -21,7 +16,7 @@ You can "`draw`" the +++<abbr title="Graphical User Interface">GUI</abbr>+++ to
 == Plan Your GUI Layout
 
 
-image::jme3/advanced/gui-layout-draft.png[gui-layout-draft.png,width="",height="",align="left"]
+image::gui/gui-layout-draft.png[gui-layout-draft.png,width="",height="",align="left"]
 
 
 In this tutorial, you want to create two game screens: An out-of-game StartScreen that the players see before the game starts; and an in-game link:http://en.wikipedia.org/wiki/HUD_%28video_gaming%29[HUD] that displays info during the game. Before writing code, you plan the +++<abbr title="Graphical User Interface">GUI</abbr>+++ layout, either on paper or in a graphic application.
@@ -50,7 +45,7 @@ The HUD contains:
 == Implement Your GUI Layout
 
 
-image::jme3/advanced/nifty-screen-layer-panel.png[nifty-screen-layer-panel.png,width="366",height="136",align="left"]
+image::gui/nifty-screen-layer-panel.png[nifty-screen-layer-panel.png,width="366",height="136",align="left"]
 
 Create an empty *screen*.xml file in the `assets/Interface/` directory of your project.
 

+ 1 - 1
docs/modules/ROOT/pages/jme3/matrix.adoc

@@ -109,7 +109,7 @@ jME includes two types of Matrix classes: Matrix3f and Matrix4f. Matrix3f is a 3
 
 === Transformations
 
-Multiplying a xref:tutorials:intermediate/terminology.adoc#vectors[Vector] with a Matrix allows the Vector to be transformed. Either rotating, scaling or translating that Vector.
+Multiplying a xref:tutorials:concepts/terminology.adoc#vectors[Vector] with a Matrix allows the Vector to be transformed. Either rotating, scaling or translating that Vector.
 
 
 ==== Scaling

+ 3 - 3
docs/modules/ROOT/pages/jme3/quaternion.adoc

@@ -78,7 +78,7 @@ s.getLocalRotation().fromAngles(angles);
 
 === Three Axes
 
-If you have three axes that define your rotation, where the axes define the left axis, up axis and directional axis respectively) you can make use of `fromAxes` to generate the Quaternion. It should be noted that this will generate a new xref:jme3/matrix.adoc[Matrix] object that is then garbage collected, thus, this method should not be used if it will be called many times. Again, `toAxes` will populate a xref:tutorials:intermediate/terminology.adoc#vectors[Vector3f] array.
+If you have three axes that define your rotation, where the axes define the left axis, up axis and directional axis respectively) you can make use of `fromAxes` to generate the Quaternion. It should be noted that this will generate a new xref:jme3/matrix.adoc[Matrix] object that is then garbage collected, thus, this method should not be used if it will be called many times. Again, `toAxes` will populate a xref:tutorials:concepts/terminology.adoc#vectors[Vector3f] array.
 
 
 ==== Example - Rotate a Spatial Using fromAxes
@@ -99,7 +99,7 @@ s.getLocalRotation().fromAxes(axes);
 
 === Rotation Matrix
 
-Commonly you might find yourself with a xref:jme3/matrix.adoc[Matrix] defining a xref:tutorials:intermediate/rotate.adoc#[rotation]. In fact, it's very common to contain a rotation in a Matrix, create a Quaternion, rotate the Quaternion, and then get the Matrix back. Quaternion contains a `fromRotationMatrix` method that will create the appropriate Quaternion based on the given Matrix. The `toRotationMatrix` will populate a given Matrix.
+Commonly you might find yourself with a xref:jme3/matrix.adoc[Matrix] defining a xref:tutorials:concepts/rotate.adoc#[rotation]. In fact, it's very common to contain a rotation in a Matrix, create a Quaternion, rotate the Quaternion, and then get the Matrix back. Quaternion contains a `fromRotationMatrix` method that will create the appropriate Quaternion based on the given Matrix. The `toRotationMatrix` will populate a given Matrix.
 
 
 ==== Example - Rotate a Spatial Using a Rotation Matrix
@@ -139,4 +139,4 @@ Quaternion q3 = q1.slerp(q2, 0.5f);
 ----
 
 ---
-*  See xref:tutorials:intermediate/rotate.adoc[3D-Rotations] for troubleshooting and extra information on using quaternions.
+*  See xref:tutorials:concepts/rotate.adoc[3D-Rotations] for troubleshooting and extra information on using quaternions.

+ 1 - 1
docs/modules/ROOT/pages/jme3/simpleapplication_from_the_commandline.adoc

@@ -239,7 +239,7 @@ If a settings dialog pops up, confirm the default settings. You should now see a
 
 == Recommended Asset Directory Structure
 
-For xref:tutorials:intermediate/multi-media_asset_pipeline.adoc[multi-media files, models, and other assets], we recommend creating the following project structure:
+For xref:tutorials:concepts/multi-media_asset_pipeline.adoc[multi-media files, models, and other assets], we recommend creating the following project structure:
 
 [source]
 ----

+ 4 - 4
docs/modules/ROOT/pages/jme3/the_scene_graph.adoc

@@ -4,9 +4,9 @@
 :keywords: spatial, node, mesh, geometry, scenegraph, rootnode
 
 
-Before you start making games, make sure you understand general xref:tutorials:intermediate/terminology.adoc[3D Graphics terminology].
+Before you start making games, make sure you understand general xref:tutorials:concepts/terminology.adoc[3D Graphics terminology].
 
-Second, if you are a beginner, we recommend our xref:tutorials:intermediate/scenegraph_for_dummies.adoc[Scene Graph for Dummies] presentation for a visual introduction to the concept of a scene graph.
+Second, if you are a beginner, we recommend our xref:tutorials:concepts/scenegraph_for_dummies.adoc[Scene Graph for Dummies] presentation for a visual introduction to the concept of a scene graph.
 
 Then continue learning about jME3 concepts here.
 
@@ -14,7 +14,7 @@ Then continue learning about jME3 concepts here.
 == Coordinate System
 
 [.right]
-image::tutorials:intermediate/coordinate-system.png[coordinate-system.png,width="235",height="210",align="right"]
+image::tutorials:concepts/coordinate-system.png[coordinate-system.png,width="235",height="210",align="right"]
 
 
 The jMonkeyEngine uses a right-handed coordinate system, just as OpenGL does.
@@ -90,7 +90,7 @@ These default settings are called "`WASD`" keys and "`Mouse`" Look. You can cust
 The _scene graph_ represents your 3D world. Objects in the jME3 scene graph are called xref:jme3/advanced/spatial.adoc[Spatial]s. Everything attached to the parent _rootNode_ is part of your scene. Your game inherits the `rootNode` object from the `SimpleApplication` class.
 
 
-image::tutorials:intermediate/scene-graph.png[scene-graph.png,width="",height="",align="center"]
+image::tutorials:concepts/scene-graph.png[scene-graph.png,width="",height="",align="center"]
 
 
 *  _Attaching_ a Spatial to the rootNode (or its child nodes) adds it to the scene;

+ 1 - 1
docs/modules/core/pages/animation/animation.adoc

@@ -10,7 +10,7 @@ In 3D games, you do not only load static 3D models, you also want to be able to
 
 JME3 only loads and plays animated models, it does not create them.
 
-What is required for an animated model? (xref:tutorials:intermediate/terminology.adoc#animation[See also: Animation terminology]
+What is required for an animated model? (xref:tutorials:concepts/terminology.adoc#animation[See also: Animation terminology]
 
 .  For each model, you have to segment the model into a skeleton (*bone rigging*).
 .  For each motion, you have to specify how the animation distorts parts of the model (*skinning*).

+ 1 - 1
docs/modules/core/pages/asset/asset_manager.adoc

@@ -31,7 +31,7 @@ jMonkeyProjects/MyGame/test/      # You store test classes here (optional)
 
 ----
 
-See also xref:tutorials:intermediate/best_practices.adoc[Best Practices].
+See also xref:tutorials:concepts/best_practices.adoc[Best Practices].
 
 
 === Usage

+ 2 - 2
docs/modules/core/pages/gui/nifty_gui.adoc

@@ -5,7 +5,7 @@
 
 
 
-image::jme3/advanced/nifty-gui-13.png[nifty-gui-13.png,width="276",height="217",align="left"]
+image::gui/nifty-gui-13.png[nifty-gui-13.png,width="276",height="217",align="left"]
 
 
 You may want your players to press a button to save a game, you want a scrolling text field for highscores, a text label to display the score, drop-downs to select keymap preferences, or checkboxes to specify multi-media options. Usually you solve these tasks by using Swing controls. Although it is possible to embed a xref:jme3/advanced/swing_canvas.adoc[jME3 canvas] in a Swing +++<abbr title="Graphical User Interface">GUI</abbr>+++, a 3D game typically runs full-screen, or in a window of its own.
@@ -34,7 +34,7 @@ Learn to add a Nifty +++<abbr title="Graphical User Interface">GUI</abbr>+++ to
 
 == Must Know: Nifty GUI Concepts
 
-image:jme3/advanced/nifty-screen-layer-panel.png[nifty-screen-layer-panel.png,width="",height=""]
+image:gui/nifty-screen-layer-panel.png[nifty-screen-layer-panel.png,width="",height=""]
 
 Nifty GUIs are made up of the following *elements*:
 

+ 1 - 1
docs/modules/core/pages/material/material_definitions.adoc

@@ -77,7 +77,7 @@ myGeometryMesh.scaleTextureCoordinates(new Vector2f(2f, 2f));
 ----
 
 
-For details see also: xref:tutorials:intermediate/how_to_use_materials.adoc[How to Use Materials]
+For details see also: xref:tutorials:concepts/how_to_use_materials.adoc[How to Use Materials]
 
 
 === Examples

+ 1 - 1
docs/modules/core/pages/material/materials_overview.adoc

@@ -12,7 +12,7 @@ In jMonkeyEngine 3, colors and textures are represented as Material objects.
 
 [TIP]
 ====
-Find out quickly xref:tutorials:intermediate/how_to_use_materials.adoc[How to Use Materials], including the most commonly used code samples and RenderStates. +
+Find out quickly xref:tutorials:concepts/how_to_use_materials.adoc[How to Use Materials], including the most commonly used code samples and RenderStates. +
 Or find more background info on xref:jme3/advanced/material_definitions.adoc[How to use Material Definitions].
 ====
 

+ 1 - 1
docs/modules/core/pages/scene/shape/shape.adoc

@@ -184,4 +184,4 @@ rootNode.attachChild(geom);                    // attach geometry to a node
 
 == See also
 
-* xref:tutorials:intermediate/optimization.adoc[Optimization] – The GeometryBatchFactory class combines several of your shapes with the same texture into one mesh with one texture.
+* xref:tutorials:concepts/optimization.adoc[Optimization] – The GeometryBatchFactory class combines several of your shapes with the same texture into one mesh with one texture.

+ 3 - 3
docs/modules/core/pages/scene/spatial.adoc

@@ -8,7 +8,7 @@ This is an introduction to the concept of Spatials, the elements of the 3D scene
 
 The rootNode is the central element of the scene graph. Even if the scene graph is empty, it always contains at least the rootNode. We _attach_ Spatials to the rootNode. Attached Spatials are always in a _parent-child relationship_. Every time you attach a Spatial to something, it is implicitly detached from its previous parent. A Spatial can have only one parent. A Spatial can have several children.
 
-If you think you need to understand the scene graph concept better, please read xref:tutorials:intermediate/scenegraph_for_dummies.adoc[Scenegraph for dummies] first.
+If you think you need to understand the scene graph concept better, please read xref:tutorials:concepts/scenegraph_for_dummies.adoc[Scenegraph for dummies] first.
 
 
 == Node versus Geometry
@@ -16,7 +16,7 @@ If you think you need to understand the scene graph concept better, please read
 In your Java code, a Spatial is either an instance of `com.jme3.scene.Node` or a `com.jme3.scene.Geometry` instance. You use the two types of Spatials for different purposes:
 
 
-image::tutorials:intermediate/scene-graph.png[scene-graph.png,width="",height="",align="center"]
+image::tutorials:concepts/scene-graph.png[scene-graph.png,width="",height="",align="center"]
 
 [cols="10,45,45", options="header"]
 |===
@@ -212,5 +212,5 @@ spatial.setCullHint(CullHint.Never); // always drawn
 
 == See also
 
-*  xref:tutorials:intermediate/optimization.adoc[Optimization] – The GeometryBatchFactory class batches several Geometries into meshes with each their own texture.
+*  xref:tutorials:concepts/optimization.adoc[Optimization] – The GeometryBatchFactory class batches several Geometries into meshes with each their own texture.
 *  xref:jme3/advanced/traverse_scenegraph.adoc[Traverse SceneGraph] – Find any Node or Geometry in the scenegraph.

+ 1 - 1
docs/modules/sdk/pages/model_loader_and_viewer.adoc

@@ -23,7 +23,7 @@ The jMonkeyEngine SDK includes a tool to install the correct exporter tools in B
 .  If you are presented a filechooser, select the folder where your blender scripts reside.
 .  Press "`Install`" in the window that opens.
 
-Also check out xref:ROOT:jme3/external/blender.adoc[how to create compatible models in blender] and xref:tutorials:intermediate/multi-media_asset_pipeline.adoc[how to organize your assets].
+Also check out xref:ROOT:jme3/external/blender.adoc[how to create compatible models in blender] and xref:tutorials:concepts/multi-media_asset_pipeline.adoc[how to organize your assets].
 
 
 == Using the model files directly

+ 12 - 12
docs/modules/tutorials/nav.adoc

@@ -13,18 +13,18 @@
 ** xref:beginner/hello_effects.adoc[Hello Effects]
 ** xref:beginner/hello_physics.adoc[Hello Physics]
 * Key Concepts
-** xref:intermediate/best_practices.adoc[Best Practices]
-** xref:intermediate/optimization.adoc[Optimization]
-** xref:intermediate/faq.adoc[Frequently Asked Questions]
-** xref:intermediate/math_for_dummies.adoc[Math for Dummies]
-** xref:intermediate/math.adoc[Math overview]
-** xref:intermediate/math_cheet_sheet.adoc[3D math "cheat sheet"]
-** xref:intermediate/rotate.adoc[3-D Rotation]
-** xref:intermediate/math_video_tutorials.adoc[Math video tutorial series]
-** xref:intermediate/multi-media_asset_pipeline.adoc[Multi-Media Asset Pipeline]
-** xref:intermediate/scenegraph_for_dummies.adoc[Scene Graph for Dummies]
-** xref:intermediate/terminology.adoc[3D Graphics Terminology]
-** xref:intermediate/transparency_sorting.adoc[Transparency Sorting]
+** xref:concepts/best_practices.adoc[Best Practices]
+** xref:concepts/optimization.adoc[Optimization]
+** xref:concepts/faq.adoc[Frequently Asked Questions]
+** xref:concepts/math_for_dummies.adoc[Math for Dummies]
+** xref:concepts/math.adoc[Math overview]
+** xref:concepts/math_cheet_sheet.adoc[3D math "cheat sheet"]
+** xref:concepts/rotate.adoc[3-D Rotation]
+** xref:concepts/math_video_tutorials.adoc[Math video tutorial series]
+** xref:concepts/multi-media_asset_pipeline.adoc[Multi-Media Asset Pipeline]
+** xref:concepts/scenegraph_for_dummies.adoc[Scene Graph for Dummies]
+** xref:concepts/terminology.adoc[3D Graphics Terminology]
+** xref:concepts/transparency_sorting.adoc[Transparency Sorting]
 * Articles and How-to's
 ** How to Model
 *** xref:advanced/modeling/3dsmax/3dsmax.adoc[3dsmax]

+ 4 - 9
docs/modules/tutorials/pages/advanced/articles/pbr/pbr_part1.adoc

@@ -1,11 +1,6 @@
 = Physically Based Rendering – Part one
-:author:
-:revnumber:
-:revdate: 2018/01/15 23:16
-:relfileprefix: ../../
-:imagesdir: ../..
-:experimental:
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
+:revnumber: 2.0
+:revdate: 2020/07/23
 
 
 I’ve been looking at Physically Based Rendering (PBR from now on) since a few weeks, because that’s what all the cool kids are talking about these days. I read almost all the interweb about it and finally somehow wrapped my head around the mechanics behind the concept.
@@ -63,14 +58,14 @@ A material can now be described with 3 parameters :
 
 *Metalness :* The degree of metallicity of the material. What does that mean? is your material rather metallic or rather not (non metallic materials are called dielectric materials in the literature). Some implementation calls that parameter “specular”, but I found it pretty misleading as it’s completely different as the specular we know today. In practice, just start out with extreme values to get the feel for it: 1 for metallic, 0 for dielectric.
 
-image::jme3/advanced/metalness.png[metalness,width="320",height="250",align="center"]
+image::articles/pbr/metalness.png[metalness,width="320",height="250",align="center"]
 Here is the same material with metalness of 0 (dielectric) on the left and 1 (metallic) on the right.
 
 Of course there are intermediary values, but from my reading, most dielectric material should vary from 0.04 and 0.1, and metallic are usually 1. Those values are based on real life measures and you can find some references about them link:https://seblagarde.wordpress.com/2012/04/30/dontnod-specular-and-glossiness-chart/[here] and link:https://seblagarde.wordpress.com/2014/04/14/dontnod-physically-based-rendering-chart-for-unreal-engine-4/[here]. Note that those values are not subject to interpretation, and are “known” factors and artist may follow them if they want to keep realistic look.
 
 *Roughness :* The degree of roughness of the material : Is your material smooth or rough. 0 means smooth, 1 means rough. Some implementations refer to this as Smoothness or Glossiness. That’s essentially the same except it’s the other way around. 1 is smooth and 0 is rough. I find the term “Roughness” pretty much self explanatory and doesn’t leave room for misinterpretation.
 
-image::jme3/advanced/Roughness.png[Roughness,width="320",height="250",align="center"]
+image::articles/pbr/Roughness.png[Roughness,width="320",height="250",align="center"]
 Here is the same material with different level of roughness from 0 (left) to 1 (right). As opposed to metalness, this parameter is very artist driven. The roughness of a material does not really depend on physics, it’s more related to micro scratches, wearing, etc… So that’s where artists should be creative!
 
 These parameters are the basics of PBR. Of course, each of them can be stored in a texture, and more common additional parameters can be used.

+ 1 - 1
docs/modules/tutorials/pages/advanced/modeling/3dsmax/3dsmax.adoc

@@ -6,7 +6,7 @@
 
 == Asset Management
 
-For the managing of assets in general, be sure to read the xref:tutorials:intermediate/multi-media_asset_pipeline.adoc[Asset Pipeline Documentation]. It contains vital information on how to manage your asset files.
+For the managing of assets in general, be sure to read the xref:tutorials:concepts/multi-media_asset_pipeline.adoc[Asset Pipeline Documentation]. It contains vital information on how to manage your asset files.
 
 
 == Creating models in 3dsMax

+ 1 - 1
docs/modules/tutorials/pages/advanced/modeling/blender/blender.adoc

@@ -8,7 +8,7 @@ This section discusses how to create and import models from Blender3D (2.78+, se
 
 == Asset Management
 
-For the managing of assets in general, be sure to read the xref:tutorials:intermediate/multi-media_asset_pipeline.adoc[Asset Pipeline Documentation]. It contains vital information on how to manage your asset files.
+For the managing of assets in general, be sure to read the xref:tutorials:concepts/multi-media_asset_pipeline.adoc[Asset Pipeline Documentation]. It contains vital information on how to manage your asset files.
 
 
 == Creating Models

+ 1 - 1
docs/modules/tutorials/pages/advanced/modeling/blender/blender_gltf.adoc

@@ -24,7 +24,7 @@ Details of how to create models in Blender that are compatible with jME are give
 
 Before exporting a model all transforms need to be applied. This performs the required transforms on the vertices in a mesh to reset the transforms on the object. To apply all transforms in Blender 2.8, select each object (in object mode, not edit mode) then choose from the `Object` menu `Apply/All Transforms`.
 
-As always, see xref:tutorials:intermediate/best_practices.adoc[Best Practices] for additional information.
+As always, see xref:tutorials:concepts/best_practices.adoc[Best Practices] for additional information.
 
 [TIP]
 ====

+ 1 - 1
docs/modules/tutorials/pages/advanced/modeling/blender/blender_ogre_export.adoc

@@ -14,7 +14,7 @@ To export your models as Ogre XML meshes with materials:
 
 . jMonkeyEngine requires a material file to be named the same name as the model so prior to opening the export dialog make it so. The model will export files named `ModelName.mesh.xml` with a `ModelName.material`, plus (optionally) `ModelName.skeleton.xml`, and some JPG files.
 .  Open the menu `menu:File[Export > Ogre3D]` to open the exporter dialog.
-.  In the `File Path` field: Select a target sub-directory of your `Project Assets/Textures/` directory. E.g. `Project Assets/Textures/ModelName/`. See xref:tutorials:intermediate/best_practices.adoc[Best Practices].
+.  In the `File Path` field: Select a target sub-directory of your `Project Assets/Textures/` directory. E.g. `Project Assets/Textures/ModelName/`. See xref:tutorials:concepts/best_practices.adoc[Best Practices].
 .  In the panel at the bottom left of the export window toggle the following export settings:
 -  Swap Axis: xz-y
 - [*] Separate materials

+ 1 - 1
docs/modules/tutorials/pages/beginner/beginner.adoc

@@ -13,5 +13,5 @@ Note that Test apps in this example project are not necessarily the recommended
 image::beginner/beginner-physics.png[beginner-physics.png,width="360",height="291"]
 
 *  Get the source code at link:https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-examples/src/main/java/jme3test/helloworld[jme3-examples/src/main/java/jme3test/helloworld/].
-*  Make sure you are familiar with basic xref:intermediate/terminology.adoc[3D game development concepts] such as xref:ROOT:jme3/the_scene_graph.adoc[the scene graph].
+*  Make sure you are familiar with basic xref:concepts/terminology.adoc[3D game development concepts] such as xref:ROOT:jme3/the_scene_graph.adoc[the scene graph].
 *  If you need help, try searching the wiki (search box is at the top of every wiki page) or using the link:https://hub.jmonkeyengine.org/search?expanded=true[forum search]. If that doesn't work try asking on the link:https://hub.jmonkeyengine.org/[forum] itself, make sure you learn link:https://hub.jmonkeyengine.org/t/how-to-type-code-blocks/31155[how to use code blocks] before doing so.

+ 1 - 1
docs/modules/tutorials/pages/beginner/hello_asset.adoc

@@ -414,6 +414,6 @@ Now you know how to populate the scenegraph with static shapes and models, and h
 *See also:*
 
 *  xref:ROOT:jme3/external/blender.adoc[The definitive Blender import tutorial]
-*  xref:intermediate/multi-media_asset_pipeline.adoc[Asset pipeline introduction]
+*  xref:concepts/multi-media_asset_pipeline.adoc[Asset pipeline introduction]
 *  If you want to learn how to load sounds, see xref:beginner/hello_audio.adoc[Hello Audio]
 *  If you want to learn more about loading textures and materials, see xref:beginner/hello_material.adoc[Hello Material]

+ 1 - 1
docs/modules/tutorials/pages/beginner/hello_input_system.adoc

@@ -366,7 +366,7 @@ inputManager.addMapping("Pause",  new KeyTrigger(usersPauseKey));
 ----
 .  Switch off the flyCam and override the WASD keys.
 +
-TIP: Use xref:tutorials:intermediate/faq.adoc#how-do-i-switch-between-third-person-and-first-person-view[flyCam.setEnabled(false);]
+TIP: Use xref:tutorials:concepts/faq.adoc#how-do-i-switch-between-third-person-and-first-person-view[flyCam.setEnabled(false);]
 
 
 [IMPORTANT]

+ 1 - 1
docs/modules/tutorials/pages/beginner/hello_material.adoc

@@ -396,7 +396,7 @@ You have also learned that a material can be stored in a .j3m file. The file ref
 
 *See also:*
 
-*  xref:tutorials:intermediate/how_to_use_materials.adoc[How to Use Materials]
+*  xref:tutorials:concepts/how_to_use_materials.adoc[How to Use Materials]
 *  xref:sdk:material_editing.adoc[Material Editing]
 *  link:https://hub.jmonkeyengine.org/t/jmonkeyengine3-material-system-full-explanation/12947[Materials] forum thread
 //*  link:http://nbviewer.jupyter.org/github/jMonkeyEngine/wiki/blob/master/src/docs/resources/tutorials/material/jME3_materials.pdf[jME3 Materials documentation (PDF)]

+ 2 - 2
docs/modules/tutorials/pages/beginner/hello_node.adoc

@@ -8,7 +8,7 @@
 In this tutorial we will have a look at the creation of a 3D scene.
 
 *  This tutorial assumes that you know what xref:ROOT:jme3/the_scene_graph.adoc[the Scene Graph] is.
-*  For a visual introduction, check out xref:intermediate/scenegraph_for_dummies.adoc[Scene Graph for Dummies].
+*  For a visual introduction, check out xref:concepts/scenegraph_for_dummies.adoc[Scene Graph for Dummies].
 
 When creating a 3D game
 
@@ -362,7 +362,7 @@ a| X-axis (Pitch)
 a| Y-axis (Yaw)
 a| Z-axis (Roll)
 
-a|3-D rotation is a bit tricky (xref:intermediate/rotate.adoc[learn details here]). In short: You can rotate around three axes: Pitch, yaw, and roll. You can specify angles in degrees by multiplying the degrees value with `FastMath.DEG_TO_RAD`. +
+a|3-D rotation is a bit tricky (xref:concepts/rotate.adoc[learn details here]). In short: You can rotate around three axes: Pitch, yaw, and roll. You can specify angles in degrees by multiplying the degrees value with `FastMath.DEG_TO_RAD`. +
 To roll an object 180° around the z axis:
 [source,java]
 ----

+ 2 - 2
docs/modules/tutorials/pages/concepts/best_practices.adoc

@@ -114,7 +114,7 @@ a|Don't reference GLTF/Ogre/OBJ files in your load() code, because these unoptim
 
 |===
 
-Learn details about the xref:intermediate/multi-media_asset_pipeline.adoc[Multi-Media Asset Pipeline] here.
+Learn details about the xref:concepts/multi-media_asset_pipeline.adoc[Multi-Media Asset Pipeline] here.
 
 
 == Development Phase
@@ -260,7 +260,7 @@ Read all about xref:ROOT:jme3/advanced/custom_controls.adoc[Custom Controls] and
 
 === Optimize Application Performance
 
-*  xref:intermediate/optimization.adoc[Optimization] – How to avoid wasting cycles
+*  xref:concepts/optimization.adoc[Optimization] – How to avoid wasting cycles
 *  xref:ROOT:jme3/advanced/multithreading.adoc[Multithreading] – Use concurrency for long-running background tasks, but don't manipulate the scene graph from outside the main thread (update loop)!
 *  You can add a xref:sdk:debugging_profiling_testing.adoc[Java Profiler] to the jMonkeyEngine SDK via Tools → Plugins → Available. The profiler presents statistics on the lifecycle of methods and objects. Performance problems may be caused by just a few methods that take long, or are called too often (try to cache values to avoid this). If object creation and garbage collection counts keep increasing, you are looking at a memory leak.
 

+ 8 - 8
docs/modules/tutorials/pages/concepts/faq.adoc

@@ -153,7 +153,7 @@ Note that you should not register every single folder containing a texture as th
 
 === How do I Create 3-D models, textures, sounds?
 
-Follow our best practices for the xref:intermediate/multi-media_asset_pipeline.adoc[multi-media asset pipeline]. +
+Follow our best practices for the xref:concepts/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.
@@ -161,7 +161,7 @@ You create sounds in an audio editor, for example, Audacity, and export them as
 *Learn more:*
 
 * xref:ROOT:jme3/advanced/3d_models.adoc[3D Models]
-* xref:intermediate/multi-media_asset_pipeline.adoc[multi-media asset pipeline]
+* xref:concepts/multi-media_asset_pipeline.adoc[multi-media asset pipeline]
 * xref:ROOT:jme3/external/blender.adoc[Creating assets in Blender3D]
 * link:https://www.blender.org[Download Blender]
 * link:http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro[Blender intro tutorial]
@@ -208,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 xref:intermediate/rotate.adoc[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:concepts/rotate.adoc[Quaternion] with `slerp()` or a com.jme3.math.Transform with interpolateTransforms().
 
 [source,java]
 ----
@@ -219,7 +219,7 @@ spatial.setLocalTranslation(1,-3,2.5f); spatial.rotate(0,3.14f,0); spatial.scale
 
 * xref:beginner/hello_node.adoc[Hello Node]
 * xref:ROOT:jme3/advanced/spatial.adoc[Spatial]
-* xref:intermediate/math_for_dummies.adoc[Math For Dummies]
+* xref:concepts/math_for_dummies.adoc[Math For Dummies]
 
 
 === How do I make a spatial move by itself?
@@ -304,7 +304,7 @@ Use the AssetManager to load Materials, and change material settings.
 *Learn more:*
 
 * xref:beginner/hello_material.adoc[Hello Material]
-* xref:intermediate/how_to_use_materials.adoc[How To Use Materials]
+* xref:concepts/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:*
@@ -320,7 +320,7 @@ Create Textures as image files. Use the AssetManager to load a Material and use
 *Learn more:*
 
 * xref:beginner/hello_material.adoc[Hello Material]
-* xref:intermediate/how_to_use_materials.adoc[How To Use Materials]
+* xref:concepts/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]
@@ -362,7 +362,7 @@ material.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);
 *Learn more:*
 
 * xref:beginner/hello_material.adoc[Hello Material]
-* xref:intermediate/how_to_use_materials.adoc[How To Use Materials]
+* xref:concepts/how_to_use_materials.adoc[How To Use Materials]
 
 
 === How do I force or disable culling?
@@ -828,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 xref:intermediate/rotate.adoc[Quaternion] q1.
+***  Returns the result as a new xref:concepts/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);`

+ 4 - 4
docs/modules/tutorials/pages/concepts/math.adoc

@@ -6,7 +6,7 @@ It's a fact of life, math is hard. Unfortunately, 3D graphics require a fair bit
 
 I'll discuss how these are used in the system for the core functionality. Including Transforming, Visibility Determination, Collision Detection, and the Coordinate System. Note, that these are low level details. Further chapters will discuss how to use these various systems from a high level perspective.
 
-To get a visual introduction to math in jME3 for the absolute beginner, check out our xref:intermediate/math_for_dummies.adoc[Math for Dummies] introduction class.
+To get a visual introduction to math in jME3 for the absolute beginner, check out our xref:concepts/math_for_dummies.adoc[Math for Dummies] introduction class.
 
 
 == Coordinate System
@@ -21,7 +21,7 @@ jME uses a Right-Handed coordinate system (as OpenGL does).
 The definition of a coordinate system is defined in jME by the properties sent to Camera. There are no error checks to insure that: 1) the coordinate system is right-handed and 2) The axes are mutually perpendicular. Therefore, if the user sets the axes incorrectly, they are going to experience very odd rendering artifacts (random culling, etc).
 
 
-image::intermediate/coordinate-system.png[coordinate-system.png,width="235",height="210",align="center"]
+image::concepts/coordinate-system.png[coordinate-system.png,width="235",height="210",align="center"]
 
 
 
@@ -91,7 +91,7 @@ See link:{link-javadoc}/com/jme3/math/Matrix3f.html[Matrix3f Javadoc] and link:{
 
 === Definition
 
-A Matrix is typically used as a _linear transformation_ to map vectors to vectors. That is: Y = MX where X is a Vector and M is a Matrix applying any or all transformations (scale, xref:intermediate/rotate.adoc[rotate], translate).
+A Matrix is typically used as a _linear transformation_ to map vectors to vectors. That is: Y = MX where X is a Vector and M is a Matrix applying any or all transformations (scale, xref:concepts/rotate.adoc[rotate], translate).
 
 There are a few special matrices:
 
@@ -340,7 +340,7 @@ These basic operations allow us to convert various rotation representations to Q
 
 === Angle Axis
 
-You might wish to represent your rotations as Angle Axis pairs. That is, you define a axis of rotation and the angle with which to xref:intermediate/rotate.adoc[rotate] about this axis. xref:ROOT:jme3/quaternion.adoc[Quaternions] defines a method `fromAngleAxis` (and `fromAngleNormalAxis`) to create a Quaternion from this pair. This is acutally used quite a bit in jME demos to continually rotate objects. You can also obtain a Angle Axis rotation from an existing Quaternion using `toAngleAxis`.
+You might wish to represent your rotations as Angle Axis pairs. That is, you define a axis of rotation and the angle with which to xref:concepts/rotate.adoc[rotate] about this axis. xref:ROOT:jme3/quaternion.adoc[Quaternions] defines a method `fromAngleAxis` (and `fromAngleNormalAxis`) to create a Quaternion from this pair. This is acutally used quite a bit in jME demos to continually rotate objects. You can also obtain a Angle Axis rotation from an existing Quaternion using `toAngleAxis`.
 
 
 ==== Example - Rotate a Spatial Using fromAngleAxis

+ 7 - 7
docs/modules/tutorials/pages/concepts/terminology.adoc

@@ -94,7 +94,7 @@ Set the Specular color to ColorRGBA.Black to switch off shininess.
 *  Non-shiny objects have a black specular color.
 
 
-image::intermediate/tanlglow2.png[tanlglow2.png,400,234,align="center"]
+image::concepts/tanlglow2.png[tanlglow2.png,400,234,align="center"]
 
 
 
@@ -192,7 +192,7 @@ Albedo maps are similar to Diffuse maps with the exceptions that they don't have
 
 
 [.right]
-image::intermediate/glass-teapot1.png[glass-teapot1.png,width="160",height="90"]
+image::concepts/glass-teapot1.png[glass-teapot1.png,width="160",height="90"]
 
 
 Environment Mapping or Reflection Mapping is used to create the impression of reflections and refractions in real time. It's faster (but less accurate) than the raytracing methods used in offline rendering applications.
@@ -212,7 +212,7 @@ MIP Map means that you provide one texture in two or three resolutions in one fi
 A procedural texture is generated from repeating one small image, plus some pseudo-random, gradient variations (called Perlin noise). Procedural textures look more natural than static rectangular textures, and they look less distorted on spheres. On big meshes, their repetitiveness is much less noticable than with tiled seamless textures. Procedural textures are ideal for irregular large-area textures like grass, soil, rock, rust, and walls. Use the xref:sdk:neotexture.adoc[jMonkeyEngine SDK NeoTexture plugin] to create them.
 
 
-image::intermediate/neotexture-2.jpg[neotexture-2.jpg,width="380",height="189",align="center"]
+image::concepts/neotexture-2.jpg[neotexture-2.jpg,width="380",height="189",align="center"]
 
 
 See also: link:http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Every_Material_Known_to_Man[Blender: Every Material Known to Man]
@@ -248,7 +248,7 @@ Unless you animate a 3D cartoon, realism of animated characters is generally a p
 
 
 [.right]
-image::intermediate/blenderswordsman.png[blenderswordsman.png,width="195",height="151"]
+image::concepts/blenderswordsman.png[blenderswordsman.png,width="195",height="151"]
 
 
 An animated character has an armature: An internal skeleton (Bones) and an external surface (Skin). The Skin is the visible outside of the character and it includes clothing. The Bones are not visible and are used to interpolate (calculate) the morphing steps of the skin.
@@ -326,7 +326,7 @@ There are lots of resources explaining interesting AI algorithms:
 == Math
 
 [.right]
-image::intermediate/coordinate-system.png[coordinate-system.png,235,210]
+image::concepts/coordinate-system.png[coordinate-system.png,235,210]
 
 
 
@@ -379,7 +379,7 @@ When you normalize a vector, it still has the same direction, but you lose the i
 ==== Surface Normal Vectors
 
 [.right]
-image::intermediate/300px-surface_normal.png[300px-surface_normal.png,width="",height=""]
+image::concepts/300px-surface_normal.png[300px-surface_normal.png,width="",height=""]
 
 A surface normal is a vector that is perpendicular (orthogonal) to a plane.
 You calculate the Surface Normal by calculating the cross product.
@@ -407,7 +407,7 @@ Slerp is how we pronounce spherical linear interpolation when we are in a hurry.
 
 Example: A burning meteorite Geometry slerps from "`position p1, rotation r1, scale s1`" in the sky down to "`p2, r2, s2`" into a crater.
 
-xref:intermediate/math.adoc[Learn more about 3D maths here.]
+xref:concepts/math.adoc[Learn more about 3D maths here.]
 
 
 == Game Developer Jargon

+ 3 - 3
docs/modules/tutorials/pages/concepts/transparency_sorting.adoc

@@ -11,7 +11,7 @@ Hopefully these diagrams help show the futility of it all… I mean the trade of
 The first image I'll show is the 'best case' where all objects are drawn back to front.  I'll then discuss briefly the steps JME goes through to try to make that happen.
 
 
-image::intermediate/transparency_sorting1.png[transparency_sorting1.png,width="600",height="",align="center"]
+image::concepts/transparency_sorting1.png[transparency_sorting1.png,width="600",height="",align="center"]
 
 
 In JME, the opaque layer would generally be placed in the opaque bucket.  All opaque layers are drawn first and within the ability to sort them, they are sorted front to back to prevent overdraw.
@@ -28,7 +28,7 @@ Sorting is done at the object level and it can never be perfect.  It is impossib
 Next I'll show an image of the worst case scenario to show why sorting is important and how your 'best friend' the z-buffer is really transparency's worst enemy.
 
 
-image::intermediate/transparency_sorting2.png[transparency_sorting2.png,width="600",height="",align="center"]
+image::concepts/transparency_sorting2.png[transparency_sorting2.png,width="600",height="",align="center"]
 
 
 This is what will happen if you put all of your objects in the opaque buffer.  JME will sort them front to back and you will get these strange 'windows' into your background.
@@ -43,7 +43,7 @@ Because sorting is done at the object level, you may have triangle to triangle o
 Finally, I'll augment the worst case sorting with something like `alphaDiscardThreshold` (or the old alphaTest/alphaFalloff values).  In this example, let's pretend we only discard pixels with alpha = 0.
 
 
-image::intermediate/transparency_sorting3.png[transparency_sorting3.png,width="600",height="",align="center"]
+image::concepts/transparency_sorting3.png[transparency_sorting3.png,width="600",height="",align="center"]
 
 
 It's better but not perfect.  Any partially transparent pixels will still show the issue.  Partial transparency will drive you crazy if you let it.