anchor.diff:  
   == See also
   
  -*  <<jme3/intermediate/optimization#,Optimization>> – The GeometryBatchFactory class batches several Geometries into meshes with each their own texture.
  -*  <<jme3/advanced/traverse_scenegraph#,Traverse SceneGraph>> – Find any Node or Geometry in the scenegraph.
  +*  xref:tutorials:intermediate/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.
  
positive.code: playerNode.setUserData("health", 100);
  ----
  
  The second example adds a set of custom accessor methods to the player object. You create a <<jme3/advanced/custom_controls#,custom PlayerControl() class>> and you add this control to the Spatial:
  
  [source,java]
  ----
  
negative.code: 
  === Mesh
  
  The polygon xref:jme3/advanced/mesh.adoc[Mesh] inside a Geometry can be one of three things:
  
  *  *Shapes:* The simplest type of Meshes are jME's default xref:jme3/advanced/shape.adoc[Shape]s such as cubes and spheres. You can use several Shapes to build complex Geometries. Shapes are built-in and can be created without using the AssetManager.
  *  *3D Models:* xref:jme3/advanced/3d_models.adoc[3D models and scenes] are also made up of meshes, but are more complex than Shapes. You create Models and Scenes in external 3D Mesh Editors and export them as Ogre XML or Wavefront OBJ. Use the xref:jme3/advanced/asset_manager.adoc[Asset Manager] to load models into a your jME3 game.
  *  *Custom Meshes:* Advanced users can create xref:jme3/advanced/custom_meshes.adoc[Custom Meshes] programmatically.
  
  
  == What is a Clone?
  
  Cloned spatials share the same mesh, while each cloned spatial can have its own local transformation (translation, rotation, and scale) in the scene. This means you only use `clone()` on spatials whose meshes never change. The most common use case for cloning is when you use several Spatials that are based on the same xref:jme3/advanced/shape.adoc[Shape]s (e.g. trees, crates).
  
  The second use case is: When you load a model using `loadModel()` from the AssetManager, you may automatically get a `clone()`ed object. In particular:
  
  *  If the model is not animated (it has no `xref:jme3/advanced/animation.adoc[AnimControl]`), jME loads a clone. All clones share one mesh object in order to use less memory.
  *  If the model is animated (it has a `xref:jme3/advanced/animation.adoc[AnimControl]`), then `loadModel()` duplicates the mesh for each loaded instance. (Uses more memory, but can animate.)
  
  Usually there is no need to manually use any of the `clone()` methods on models. Using the xref:jme3/advanced/asset_manager.adoc[Asset Manager]'s `loadModel()` method will automatically do the right thing for your models.
  
  
  [NOTE]
  