Android Open Source - jmini3d Object3d






From Project

Back to project page jmini3d.

License

The source code is released under:

Copyright 2012 Mobialia http://www.mobialia.com/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to ...

If you think the Android project jmini3d 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 jmini3d;
/*w  w  w  . ja va2s .  co  m*/
import jmini3d.geometry.Geometry;
import jmini3d.material.Material;

public class Object3d {

  public Geometry geometry3d;
  public Material material;

  public boolean visible = true;
  public boolean clearDepthAfterDraw = false;

  private Vector3 position;

  public float[] modelViewMatrix = new float[16];
  public float[] normalMatrix = new float[9];

  private float rotationMatrix[];
  private float scaleMatrix[];
  private float[] translationMatrix = new float[16];

  float scale = 1;

  private boolean needsMatrixUpdate = true;

  public Object3d(Geometry geometry3d, Material material) {
    this.geometry3d = geometry3d;
    this.material = material;

    position = new Vector3();
  }

  public boolean isVisible() {
    return visible;
  }

  public void setVisible(boolean visible) {
    this.visible = visible;
  }

  public Vector3 getPosition() {
    return position;
  }

  public void setPosition(Vector3 position) {
    this.position.setAllFrom(position);
    needsMatrixUpdate = true;
  }

  public void setPosition(float x, float y, float z) {
    this.position.setAll(x, y, z);
    needsMatrixUpdate = true;
  }

  public Geometry getGeometry3d() {
    return geometry3d;
  }

  public void setRotationMatrix(Vector3 direction, Vector3 up, Vector3 side) {
    if (rotationMatrix == null) {
      rotationMatrix = new float[16];
    }
    MatrixUtils.rotate(rotationMatrix, direction, up, side);

    needsMatrixUpdate = true;
  }

  public void setScale(float scale) {
    if (this.scale != scale) {
      this.scale = scale;
      if (scaleMatrix == null) {
        scaleMatrix = new float[16];
        MatrixUtils.copyMatrix(MatrixUtils.IDENTITY4, scaleMatrix);
      }
      scaleMatrix[0] = scale;
      scaleMatrix[5] = scale;
      scaleMatrix[10] = scale;
      needsMatrixUpdate = true;
    }
  }

  public void updateMatrices() {
    if (needsMatrixUpdate) {
      needsMatrixUpdate = false;

      MatrixUtils.copyMatrix(MatrixUtils.IDENTITY4, modelViewMatrix);

      if (position != null) {
        MatrixUtils.translate(translationMatrix, position);
        MatrixUtils.multiply(modelViewMatrix, translationMatrix, modelViewMatrix);
      }

      if (rotationMatrix != null) {
        MatrixUtils.multiply(modelViewMatrix, rotationMatrix, modelViewMatrix);
      }

      if (scale != 1 && scaleMatrix != null) {
        MatrixUtils.multiply(modelViewMatrix, scaleMatrix, modelViewMatrix);
      }

      normalMatrix = MatrixUtils.toInverseMat3(modelViewMatrix, normalMatrix);
      if (normalMatrix != null) {
        normalMatrix = MatrixUtils.transpose(normalMatrix, normalMatrix);
      }
    }
  }
}




Java Source Code List

cocoonjs.CocoonJsLinker.java
jmini3d.Blending.java
jmini3d.Camera.java
jmini3d.Color4.java
jmini3d.CubeMapTexture.java
jmini3d.Font.java
jmini3d.GpuObjectStatus.java
jmini3d.MatrixUtils.java
jmini3d.Object3d.java
jmini3d.Rect.java
jmini3d.SceneController.java
jmini3d.Scene.java
jmini3d.Texture.java
jmini3d.Utils.java
jmini3d.Vector3.java
jmini3d.android.Activity3d.java
jmini3d.android.GeometryBuffers.java
jmini3d.android.GlSurfaceView3d.java
jmini3d.android.GpuUploader.java
jmini3d.android.Program.java
jmini3d.android.Renderer3d.java
jmini3d.android.ResourceLoader.java
jmini3d.android.compat.CompatibilityWrapper5.java
jmini3d.android.demo.DemoActivity.java
jmini3d.android.input.InputController.java
jmini3d.demo.ArialFont.java
jmini3d.demo.CubeScene.java
jmini3d.demo.CubesScene.java
jmini3d.demo.DemoSceneController.java
jmini3d.demo.EnvMapCubeScene.java
jmini3d.demo.NormalMapScene.java
jmini3d.demo.ParentScene.java
jmini3d.demo.TeapotGeometry.java
jmini3d.demo.TeapotScene.java
jmini3d.geometry.BoxGeometry.java
jmini3d.geometry.Geometry.java
jmini3d.geometry.PlaneGeometry.java
jmini3d.geometry.SkyboxGeometry.java
jmini3d.geometry.SpriteGeometry.java
jmini3d.geometry.VariableGeometry.java
jmini3d.gwt.Canvas3d.java
jmini3d.gwt.EngineResources.java
jmini3d.gwt.EntryPoint3d.java
jmini3d.gwt.GeometryBuffers.java
jmini3d.gwt.GpuUploader.java
jmini3d.gwt.MyInt16Array.java
jmini3d.gwt.Program.java
jmini3d.gwt.Renderer3d.java
jmini3d.gwt.ResourceLoader.java
jmini3d.gwt.TextureLoadedListener.java
jmini3d.gwt.demo.DemoEntryPoint.java
jmini3d.gwt.input.InputController.java
jmini3d.input.KeyListener.java
jmini3d.input.TouchListener.java
jmini3d.input.TouchPointer.java
jmini3d.light.AmbientLight.java
jmini3d.light.DirectionalLight.java
jmini3d.light.Light.java
jmini3d.light.PointLight.java
jmini3d.material.Material.java
jmini3d.material.PhongMaterial.java
jmini3d.material.SpriteMaterial.java
jmini3d.utils.Fnt2Class.java
jmini3d.utils.Obj2Class.java