Пример #1
0
        public Vivid3D.Scene.GraphNode3D ImportMesh(string file, Vivid3D.Scene.SceneGraph3D graph)
        {
            gr = graph;
            _F = new FileStream(file, FileMode.Open, FileAccess.Read);

            if (_F == null)
            {
                Console.WriteLine("Unable to open V3DM file.");
                return(null);
            }
            _R = new BinaryReader(_F);

            // CheckHeader ( );

            Vivid3D.Scene.GraphEntity3D root = new Vivid3D.Scene.GraphEntity3D
            {
                LocalTurn = Matrix4.Identity
            };

            int nc = ReadInt();

            Console.WriteLine("TopLevelNodes:" + nc);

            for (int i = 0; i < nc; i++)
            {
                root.Add(ReadNodes( ));
            }

            return(root);

            return(null);
        }
Пример #2
0
        private Vivid3D.Scene.GraphEntity3D ReadNodes( )
        {
            Vivid3D.Scene.GraphEntity3D vn = new Vivid3D.Scene.GraphEntity3D();

            string node_name = ReadString( );

            Console.WriteLine("Node:" + node_name);
            vn.Name = node_name;
            OpenTK.Matrix4 lmat = ReadMatrix4( );
            Matrix4        omat = ReadMatrix4();
            Matrix4        wmat = ReadMatrix4();
            Matrix4        nmat = ReadMatrix4();
            Quaternion     qr   = ReadQuat();
            //mat.Transpose ( );
            Matrix4 mat = Matrix4.Identity;

            vn.LocalPos = FixP(mat.ExtractTranslation( ));
            //vn.LocalPos = new Vector3 ( vn.LocalPos.X, -vn.LocalPos.Y, vn.LocalPos.Z );
            //vn.LocalScale = mat.ExtractScale ( );
            mat = mat.ClearTranslation( );
            mat = mat.ClearScale( );
            //mat.Transpose ( );
            //Vector4 c0= mat.Column1;
            //mat.Column1 = mat.Column2;
            //mat.Column2 = c0;
            //float cx = mat.Column0.X;
            //Vector4 c0 = mat.Column0;
            //c0.X = c0.Y;
            //c0.Y = cx;
            // mat.Column0 = c0;
            //mat.Column0.X = mat.Column0.Y;
            Matrix4 lm = Matrix4.CreateFromQuaternion(qr);

            //vn.LocalTurn = Ma mat; //mat;// Matrix4.Identity;
            vn.LocalTurn = lmat;
            //Console.WriteLine ( "Quat:" + qr );
            int eType = ReadInt();

            switch (eType)
            {
            case 1:
                Vivid3D.Lighting.GraphLight3D new_light = new Vivid3D.Lighting.GraphLight3D();
                Console.WriteLine("Is Light");
                gr.Lights.Add(new_light);
                new_light.Name     = node_name;
                new_light.LocalPos = FixP(omat.ExtractTranslation( ));

                break;

            case 2:
                LoadNode(vn);

                break;
            }

            int nc = ReadInt();

            //int nc=0;
            Console.WriteLine("childNodes:" + nc);

            for (int i = 0; i < nc; i++)
            {
                vn.Add(ReadNodes( ));
            }
            // _R.ReadInt32 ( );
            return(vn);
        }