# Class Model

java.lang.Object
com.codename1.gaming.Model

public class Model extends Object

A 3D mesh placed in the world: a `com.codename1.gpu.Mesh` plus a `com.codename1.gpu.Material` and a position / rotation / scale transform. Add one to a `GameView` (`GameView#addModel(Model)`) to draw it in the perspective camera alongside the billboarded sprites.

Because GPU meshes need the `com.codename1.gpu.GraphicsDevice` to be created, build your models from inside `GameView#onSetup(com.codename1.gpu.GraphicsDevice)`:

    protected void onSetup(GraphicsDevice device) {
        Mesh cubeMesh = Primitives.cube(device, 1f);
        Material gold = new Material(Material.Type.PHONG).setColor(0xffffcc33).setShininess(32);
        Model crate = new Model(cubeMesh, gold);
        crate.setPosition(0, 0.5f, 0);
        addModel(crate);
    }

Rotation is applied in Z, then Y, then X (extrinsic), in degrees. The model is drawn with the `GameView`'s shared `com.codename1.gpu.Light`, so lit material types (`com.codename1.gpu.Material.Type#LAMBERT`/`#PHONG`) are shaded by it.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Model(Mesh mesh)`
  Creates a model for the given mesh with a default unlit white material.
  `Model(Mesh mesh, Material material)`
  Creates a model for the given mesh and material.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Material`
  `getMaterial()`
  `Mesh`
  `getMesh()`
  `float`
  `getRotationX()`
  `float`
  `getRotationY()`
  `float`
  `getRotationZ()`
  `Object`
  `getUserData()`
  `float`
  `getX()`
  `float`
  `getY()`
  `float`
  `getZ()`
  `boolean`
  `isVisible()`
  `void`
  `setMaterial(Material material)`
  `void`
  `setMesh(Mesh mesh)`
  `Model`
  `setPosition(float x, float y, float z)`
  `Model`
  `setRotation(float degX, float degY, float degZ)`
  Sets the Euler rotation in degrees (applied Z, then Y, then X).
  `Model`
  `setScale(float scale)`
  `Model`
  `setScale(float scaleX, float scaleY, float scaleZ)`
  `void`
  `setUserData(Object userData)`
  `void`
  `setVisible(boolean visible)`

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### Model

    public Model(Mesh mesh)
    Creates a model for the given mesh with a default unlit white material.

  - ### Model

    public Model(Mesh mesh, Material material)
    Creates a model for the given mesh and material.

- ## Method Details

  - ### getMesh

    public Mesh getMesh()

  - ### setMesh

    public void setMesh(Mesh mesh)

  - ### getMaterial

    public Material getMaterial()

  - ### setMaterial

    public void setMaterial(Material material)

  - ### getX

    public float getX()

  - ### getY

    public float getY()

  - ### getZ

    public float getZ()

  - ### setPosition

    public Model setPosition(float x, float y, float z)

  - ### setRotation

    public Model setRotation(float degX, float degY, float degZ)
    Sets the Euler rotation in degrees (applied Z, then Y, then X).

  - ### getRotationX

    public float getRotationX()

  - ### getRotationY

    public float getRotationY()

  - ### getRotationZ

    public float getRotationZ()

  - ### setScale

    public Model setScale(float scale)

  - ### setScale

    public Model setScale(float scaleX, float scaleY, float scaleZ)

  - ### isVisible

    public boolean isVisible()

  - ### setVisible

    public void setVisible(boolean visible)

  - ### getUserData

    public Object getUserData()

  - ### setUserData

    public void setUserData(Object userData)