Android Open Source - min3d Object3d






From Project

Back to project page min3d.

License

The source code is released under:

MIT License

If you think the Android project min3d listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.min3d.lib.core;
/*from w  ww  . j  a  va 2s.  co  m*/
import com.min3d.lib.interfaces.IObject3dContainer;
import com.min3d.lib.vos.Color4;
import com.min3d.lib.vos.Number3d;
import com.min3d.lib.vos.RenderType;
import com.min3d.lib.vos.ShadeModel;

import java.util.ArrayList;

import javax.microedition.khronos.opengles.GL10;

/**
 * @author Lee
 */
public class Object3d
{
  private String _name;
  
  private RenderType _renderType = RenderType.TRIANGLES;
  
  private boolean _isVisible = true;
  private boolean _vertexColorsEnabled = true;
  private boolean _doubleSidedEnabled = false;
  private boolean _texturesEnabled = true;
  private boolean _normalsEnabled = true;
  private boolean _ignoreFaces = false;
  private boolean _colorMaterialEnabled = false;
  private boolean _lightingEnabled = true;

  private Number3d _position = new Number3d(0,0,0);
  private Number3d _rotation = new Number3d(0,0,0);
  private Number3d _scale = new Number3d(1,1,1);

  private Color4 _defaultColor = new Color4();
  
  private ShadeModel _shadeModel = ShadeModel.SMOOTH;
  private float _pointSize = 3f;
  private boolean _pointSmoothing = true;
  private float _lineWidth = 1f;
  private boolean _lineSmoothing = false;

  
  protected ArrayList<Object3d> _children;
  
  protected Vertices _vertices; 
  protected TextureList _textures;
  protected FacesBufferedList _faces;

  protected boolean _animationEnabled = false;
  
  private Scene _scene;
  private IObject3dContainer _parent;

  /**
   * Maximum number of vertices and faces must be specified at instantiation.
   */
  public Object3d(int $maxVertices, int $maxFaces)
  {
    _vertices = new Vertices($maxVertices, true,true,true);
    _faces = new FacesBufferedList($maxFaces);
    _textures = new TextureList();
  }
  
  /**
   * Adds three arguments 
   */
  public Object3d(int $maxVertices, int $maxFaces, Boolean $useUvs, Boolean $useNormals, Boolean $useVertexColors)
  {
    _vertices = new Vertices($maxVertices, $useUvs,$useNormals,$useVertexColors);
    _faces = new FacesBufferedList($maxFaces);
    _textures = new TextureList();
  }
  
  /**
   * This constructor is convenient for cloning purposes 
   */
  public Object3d(Vertices $vertices, FacesBufferedList $faces, TextureList $textures)
  {
    _vertices = $vertices;
    _faces = $faces;
    _textures = $textures;
  }
  
  /**
   * Holds references to vertex position list, vertex u/v mappings list, vertex normals list, and vertex colors list
   */
  public Vertices vertices()
  {
    return _vertices;
  }

  /**
   * List of object's faces (ie, index buffer) 
   */
  public FacesBufferedList faces()
  {
    return _faces;
  }
  
  public TextureList textures()
  {
    return _textures;
  }
  
  /**
   * Determines if object will be rendered.
   * Default is true. 
   */
  public boolean isVisible()
  {
    return _isVisible;
  }
  public void isVisible(Boolean $b)
  {
    _isVisible = $b;
  }
  
  /**
   * Determines if backfaces will be rendered (ie, doublesided = true).
   * Default is false.
   */
  public boolean doubleSidedEnabled()
  {
    return _doubleSidedEnabled;
  }
  public void doubleSidedEnabled(boolean $b)
  {
    _doubleSidedEnabled = $b;
  }
  
  /**
   * Determines if object uses GL_COLOR_MATERIAL or not.
   * Default is false.
   */
  public boolean colorMaterialEnabled()
  {
    return _colorMaterialEnabled;
  }
  
  public boolean lightingEnabled() {
    return _lightingEnabled;
  }

  public void lightingEnabled(boolean $b) {
    this._lightingEnabled = $b;
  }

  public void colorMaterialEnabled(boolean $b)
  {
    _colorMaterialEnabled = $b;
  }

  /**
   * Determines whether animation is enabled or not. If it is enabled
   * then this should be an AnimationObject3d instance.
   * This is part of the Object3d class so there's no need to cast
   * anything during the render loop when it's not necessary.
   */
  public boolean animationEnabled()
  {
    return _animationEnabled;
  }
  public void animationEnabled(boolean $b)
  {
    _animationEnabled = $b;
  }
  /**
   * Determines if per-vertex colors will be using for rendering object.
   * If false, defaultColor property will dictate object color.
   * If object has no per-vertex color information, setting is ignored.
   * Default is true. 
   */
  public boolean vertexColorsEnabled()
  {
    return _vertexColorsEnabled;
  }
  public void vertexColorsEnabled(Boolean $b)
  {
    _vertexColorsEnabled = $b;
  }

  /**
   * Determines if textures (if any) will used for rendering object.
   * Default is true.  
   */
  public boolean texturesEnabled()
  {
    return _texturesEnabled;
  }
  public void texturesEnabled(Boolean $b)
  {
    _texturesEnabled = $b;
  }
  
  /**
   * Determines if object will be rendered using vertex light normals.
   * If false, no lighting is used on object for rendering.
   * Default is true.
   */
  public boolean normalsEnabled()
  {
    return _normalsEnabled;
  }
  public void normalsEnabled(boolean $b)
  {
    _normalsEnabled = $b;
  }

  /**
   * When true, Renderer draws using vertex points list, rather than faces list.
   * (ie, using glDrawArrays instead of glDrawElements) 
   * Default is false.
   */
  public boolean ignoreFaces()
  {
    return _ignoreFaces;
  }
  public void ignoreFaces(boolean $b)
  {
    _ignoreFaces = $b;
  }  
  
  /**
   * Options are: TRIANGLES, LINES, and POINTS
   * Default is TRIANGLES.
   */
  public RenderType renderType()
  {
    return _renderType;
  }
  public void renderType(RenderType $type)
  {
    _renderType = $type;
  }
  
  /**
   * Possible values are ShadeModel.SMOOTH and ShadeModel.FLAT.
   * Default is ShadeModel.SMOOTH.
   * @return
   */
  public ShadeModel shadeModel()
  {
    return _shadeModel;
  }
  public void shadeModel(ShadeModel $shadeModel)
  {
    _shadeModel = $shadeModel;
  }
  
  /**
   * Convenience 'pass-thru' method  
   */
  public Number3dBufferList points()
  {
    return _vertices.points();
  }
  
  /**
   * Convenience 'pass-thru' method  
   */
  public UvBufferList uvs()
  {
    return _vertices.uvs();
  }
  
  /**
   * Convenience 'pass-thru' method  
   */
  public Number3dBufferList normals()
  {
    return _vertices.normals();
  }
  
  /**
   * Convenience 'pass-thru' method  
   */
  public Color4BufferList colors()
  {
    return _vertices.colors();
  }
  
  /**
   * Convenience 'pass-thru' method  
   */
  public boolean hasUvs()
  {
    return _vertices.hasUvs();
  }

  /**
   * Convenience 'pass-thru' method  
   */
  public boolean hasNormals()
  {
    return _vertices.hasNormals();
  }
  
  /**
   * Convenience 'pass-thru' method  
   */
  public boolean hasVertexColors()
  {
    return _vertices.hasColors();
  }


  /**
   * Clear object for garbage collection.
   */
  public void clear()
  {
    if (this.vertices().points() != null)   this.vertices().points().clear();
    if (this.vertices().uvs() != null)     this.vertices().uvs().clear();
    if (this.vertices().normals() != null)   this.vertices().normals().clear();
    if (this.vertices().colors() != null)   this.vertices().colors().clear();
    if (_textures != null)           _textures.clear();
    
    if (this.parent() != null)         this.parent().removeChild(this);
  }

  //

  /**
   * Color used to render object, but only when colorsEnabled is false.
   */
  public Color4 defaultColor()
  {
    return _defaultColor;
  }
  
  public void defaultColor(Color4 color) {
    _defaultColor = color;
  }

  /**
   * X/Y/Z position of object. 
   */
  public Number3d position()
  {
    return _position;
  }
  
  /**
   * X/Y/Z euler rotation of object, using Euler angles.
   * Units should be in degrees, to match OpenGL usage. 
   */
  public Number3d rotation()
  {
    return _rotation;
  }

  /**
   * X/Y/Z scale of object.
   */
  public Number3d scale()
  {
    return _scale;
  }
  
  /**
   * Point size (applicable when renderType is POINT)
   * Default is 3. 
   */
  public float pointSize()
  {
    return _pointSize; 
  }
  public void pointSize(float $n)
  {
    _pointSize = $n;
  }

  /**
   * Point smoothing (anti-aliasing), applicable when renderType is POINT.
   * When true, points look like circles rather than squares.
   * Default is true.
   */
  public boolean pointSmoothing()
  {
    return _pointSmoothing;
  }
  public void pointSmoothing(boolean $b)
  {
    _pointSmoothing = $b;
  }

  /**
   * Line width (applicable when renderType is LINE)
   * Default is 1. 
   * 
   * Remember that maximum line width is OpenGL-implementation specific, and varies depending 
   * on whether lineSmoothing is enabled or not. Eg, on Nexus One,  lineWidth can range from
   * 1 to 8 without smoothing, and can only be 1f with smoothing. 
   */
  public float lineWidth()
  {
    return _lineWidth;
  }
  public void lineWidth(float $n)
  {
    _lineWidth = $n;
  }
  
  /**
   * Line smoothing (anti-aliasing), applicable when renderType is LINE
   * Default is false.
   */
  public boolean lineSmoothing()
  {
    return _lineSmoothing;
  }
  public void lineSmoothing(boolean $b)
  {
    _lineSmoothing = $b;
  }
  
  /**
   * Convenience property 
   */
  public String name()
  {
    return _name;
  }
  public void name(String $s)
  {
    _name = $s;
  }
  
  public IObject3dContainer parent()
  {
    return _parent;
  }
  
  //
  
  void parent(IObject3dContainer $container) /*package-private*/
  {
    _parent = $container;
  }
  
  /**
   * Called by Scene
   */
  void scene(Scene $scene) /*package-private*/
  {
    _scene = $scene;
  }
  /**
   * Called by DisplayObjectContainer
   */
  Scene scene() /*package-private*/
  {
    return _scene;
  }
  
  /**
   * Can be overridden to create custom draw routines on a per-object basis, 
   * rather than using Renderer's built-in draw routine. 
   * 
   * If overridden, return true instead of false.
   */
  public Boolean customRenderer(GL10 gl)
  {
    return false;
  }
  
  public Object3d clone()
  {
    Vertices v = _vertices.clone();
    FacesBufferedList f = _faces.clone();
      
    Object3d clone = new Object3d(v, f, _textures);
    
    clone.position().x = position().x;
    clone.position().y = position().y;
    clone.position().z = position().z;
    
    clone.rotation().x = rotation().x;
    clone.rotation().y = rotation().y;
    clone.rotation().z = rotation().z;
    
    clone.scale().x = scale().x;
    clone.scale().y = scale().y;
    clone.scale().z = scale().z;
    
    return clone;
  }
}




Java Source Code List

com.min3d.ApplicationTest.java
com.min3d.ExampleAccelerometer.java
com.min3d.ExampleAnimatedTexture.java
com.min3d.ExampleAnimatingVertices.java
com.min3d.ExampleAssigningTexturesDynamically.java
com.min3d.ExampleCamera.java
com.min3d.ExampleFog.java
com.min3d.ExampleFromScratch.java
com.min3d.ExampleInsideLayout.java
com.min3d.ExampleKeyframeAnimation.java
com.min3d.ExampleLightProperties.java
com.min3d.ExampleLoad3DSFile.java
com.min3d.ExampleLoadMD2File.java
com.min3d.ExampleLoadObjFileMultiple.java
com.min3d.ExampleLoadObjFile.java
com.min3d.ExampleMipMap.java
com.min3d.ExampleMostMinimal.java
com.min3d.ExampleMultiTexture.java
com.min3d.ExampleMultipleLights.java
com.min3d.ExampleRenderType.java
com.min3d.ExampleRotatingPlanets.java
com.min3d.ExampleSubsetOfFaces.java
com.min3d.ExampleTextureOffset.java
com.min3d.ExampleTextureWrap.java
com.min3d.ExampleTextures.java
com.min3d.ExampleTransparentGlSurface.java
com.min3d.ExampleVertexColors.java
com.min3d.ExampleVerticesVariations.java
com.min3d.ScratchActivity.java
com.min3d.SplashActivity.java
com.min3d.lib.AParser.java
com.min3d.lib.ApplicationTest.java
com.min3d.lib.IParser.java
com.min3d.lib.LittleEndianDataInputStream.java
com.min3d.lib.MD2Parser.java
com.min3d.lib.Max3DSParser.java
com.min3d.lib.Min3d.java
com.min3d.lib.ObjParser.java
com.min3d.lib.ParseObjectData.java
com.min3d.lib.ParseObjectFace.java
com.min3d.lib.Parser.java
com.min3d.lib.Shared.java
com.min3d.lib.Utils.java
com.min3d.lib.animation.AnimationObject3d.java
com.min3d.lib.animation.KeyFrame.java
com.min3d.lib.core.Color4BufferList.java
com.min3d.lib.core.FacesBufferedList.java
com.min3d.lib.core.ManagedLightList.java
com.min3d.lib.core.Number3dBufferList.java
com.min3d.lib.core.Object3dContainer.java
com.min3d.lib.core.Object3d.java
com.min3d.lib.core.RenderCaps.java
com.min3d.lib.core.RendererActivity.java
com.min3d.lib.core.Renderer.java
com.min3d.lib.core.Scene.java
com.min3d.lib.core.TextureList.java
com.min3d.lib.core.TextureManager.java
com.min3d.lib.core.UvBufferList.java
com.min3d.lib.core.Vertices.java
com.min3d.lib.interfaces.IDirtyManaged.java
com.min3d.lib.interfaces.IDirtyParent.java
com.min3d.lib.interfaces.IObject3dContainer.java
com.min3d.lib.interfaces.ISceneController.java
com.min3d.lib.objectPrimitives.Box.java
com.min3d.lib.objectPrimitives.HollowCylinder.java
com.min3d.lib.objectPrimitives.Rectangle.java
com.min3d.lib.objectPrimitives.SkyBox.java
com.min3d.lib.objectPrimitives.Sphere.java
com.min3d.lib.objectPrimitives.Torus.java
com.min3d.lib.vos.AbstractDirtyManaged.java
com.min3d.lib.vos.BooleanManaged.java
com.min3d.lib.vos.CameraVo.java
com.min3d.lib.vos.Color4Managed.java
com.min3d.lib.vos.Color4.java
com.min3d.lib.vos.Face.java
com.min3d.lib.vos.FloatManaged.java
com.min3d.lib.vos.FogType.java
com.min3d.lib.vos.FrustumManaged.java
com.min3d.lib.vos.LightType.java
com.min3d.lib.vos.Light.java
com.min3d.lib.vos.Number3dManaged.java
com.min3d.lib.vos.Number3d.java
com.min3d.lib.vos.RenderType.java
com.min3d.lib.vos.ShadeModelManaged.java
com.min3d.lib.vos.ShadeModel.java
com.min3d.lib.vos.TexEnvxVo.java
com.min3d.lib.vos.TextureVo.java
com.min3d.lib.vos.Uv.java
com.min3d.lib.vos.Vertex3d.java