Android Open Source - min3d Key Frame






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.animation;
/* w  w w.  ja va  2s .  c o  m*/
import com.min3d.lib.vos.Number3d;

public class KeyFrame {
  private String name;
  private float[] vertices;
  private float[] normals;

  private int[] indices;
  
  public KeyFrame(String name, float[] vertices)
  {
    this.name = name;
    this.vertices = vertices;
  }

  public KeyFrame(String name, float[] vertices, float[] normals)
  {
    this(name, vertices);
    this.normals = normals;
  }
  
  public String getName() {
    return name;
  }

  public float[] getVertices() {
    return vertices;
  }

  public int[] getIndices() {
    return indices;
  }

  public float[] getNormals() {
    return normals;
  }
  
  public void setIndices(int[] indices) {
    this.indices = indices;
    float[] compressed = vertices;
    vertices = new float[indices.length*3];
    int len = indices.length;
    int vi = 0;
    int ii = 0;
    int normalIndex = 0;
    
    for(int i=0; i<len; i++)
    {
      ii = indices[i] * 3;
      vertices[vi++] = compressed[ii];
      vertices[vi++] = compressed[ii + 1];
      vertices[vi++] = compressed[ii + 2];
    }
    
    normals = new float[vertices.length];
    int vertLen = vertices.length;
    
    for(int i=0; i<vertLen; i+=9)
    {
      Number3d normal = calculateFaceNormal(
          new Number3d(vertices[i], vertices[i+1], vertices[i+2]),
          new Number3d(vertices[i+3], vertices[i+4], vertices[i+5]),
          new Number3d(vertices[i+6], vertices[i+7], vertices[i+8])
          );
      normals[normalIndex++] = normal.x;
      normals[normalIndex++] = normal.y;
      normals[normalIndex++] = normal.z;
      normals[normalIndex++] = normal.x;
      normals[normalIndex++] = normal.y;
      normals[normalIndex++] = normal.z;
      normals[normalIndex++] = normal.x;
      normals[normalIndex++] = normal.y;
      normals[normalIndex++] = normal.z;
    }
  }
  
  public Number3d calculateFaceNormal(Number3d v1, Number3d v2, Number3d v3)
  {
    Number3d vector1 = Number3d.subtract(v2, v1);
    Number3d vector2 = Number3d.subtract(v3, v1);
    
    Number3d normal = new Number3d();
    normal.x = (vector1.y * vector2.z) - (vector1.z * vector2.y);
    normal.y = -((vector2.z * vector1.x) - (vector2.x * vector1.z));
    normal.z = (vector1.x * vector2.y) - (vector1.y * vector2.x);
    
    double normFactor = Math.sqrt((normal.x * normal.x) + (normal.y * normal.y) + (normal.z * normal.z));
    
    normal.x /= normFactor;
    normal.y /= normFactor;
    normal.z /= normFactor;
    
    return normal;
  }
  
  public KeyFrame clone()
  {
    KeyFrame k = new KeyFrame(name, vertices.clone(), normals.clone());
    return k;
  }
}




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