Example #1
0
        public void SetLookAt(zVec3 lookAt)
        {
            zVec3 pos = GetPosition();

            float[] dir = new float[] { lookAt.X - pos.X, lookAt.Y - pos.Y, lookAt.Z - pos.Z };
            pos.Dispose();


            float revScalar = (float)Math.Sqrt(dir[0] * dir[0] + dir[1] * dir[1] + dir[2] * dir[2]);

            dir[0] /= revScalar; dir[1] /= revScalar; dir[2] /= revScalar;



            float[] upVector    = new float[] { TrafoObjToWorld.get(1), TrafoObjToWorld.get(5), TrafoObjToWorld.get(9) };
            float[] rightVector = new float[3];
            rightVector[0] = dir[1] * upVector[2] - dir[2] * upVector[1];
            rightVector[1] = dir[2] * upVector[0] - dir[0] * upVector[2];
            rightVector[2] = dir[0] * upVector[1] - dir[1] * upVector[0];

            TrafoObjToWorld.set(0, -1 * rightVector[0]);
            TrafoObjToWorld.set(4, -1 * rightVector[1]);
            TrafoObjToWorld.set(8, -1 * rightVector[2]);

            TrafoObjToWorld.set(2, dir[0]); TrafoObjToWorld.set(6, dir[1]); TrafoObjToWorld.set(10, dir[2]);
        }
Example #2
0
 public void SetPosition(float x, float y, float z)
 {
     TrafoObjToWorld.set(3, x);
     TrafoObjToWorld.set(7, y);
     TrafoObjToWorld.set(11, z);
 }
Example #3
0
 public void SetPosition(zVec3 position)
 {
     TrafoObjToWorld.set(3, position.X);
     TrafoObjToWorld.set(7, position.Y);
     TrafoObjToWorld.set(11, position.Z);
 }