Matrix3D already have it, but it seems that I can't get it work as I
would expect it to work :).

So if someone happen to struggle with same thing.

                private function lookat(vPos:Vector3D, vLookAt:Vector3D,
vWorldUp:Vector3D):Matrix3D
                {
                        var vRight:Vector3D = new Vector3D(0, 0, 0);
                        var vUp:Vector3D = new Vector3D(0, 0, 0);
                        var resMat:Vector.<Number> = new Vector.<Number>(16);

                        var vDir:Vector3D = vPos.subtract(vLookAt);
                        vDir.normalize();
                        vRight = vWorldUp.crossProduct(vDir);
                        vUp = vDir.crossProduct(vRight);

                        resMat[0] = vRight.x;   resMat[1] = vRight.z;   
resMat[2] = vRight.y;
resMat[3] = 0;
                        resMat[4] = vUp.x;              resMat[5] = vUp.z;      
        resMat[6] = vUp.y;
resMat[7] = 0;
                        resMat[8] = vDir.x;             resMat[9] = vDir.z;     
        resMat[10] = vDir.y;
resMat[11] = 0;
                        resMat[12] = 0;                 resMat[13] = 0;         
        resMat[14] = 0;                 resMat[15] =
1;

                        var mMatrix:Matrix3D = new Matrix3D();
                        mMatrix.rawData = resMat;
                        return mMatrix;
                }

Return Matrix3D without position data. So you need to append whatever
position data you like afterwards.

Reply via email to