Esempio n. 1
0
        public static Entity3D Quad(int w, int h)
        {
            Entity3D r = new Entity3D();

            Mesh3D mesh = new Mesh3D(6, 4);

            Vector3 v1 = new Vector3(-w, -h, 0);
            Vector3 v2 = new Vector3(w, -h, 0);
            Vector3 v3 = new Vector3(w, h, 0);
            Vector3 v4 = new Vector3(-w, h, 0);

            Vector3 z = new Vector3(0, 0, 0);

            mesh.SetVertex(0, v1, z, z, z, new Vector2(0, 0));
            mesh.SetVertex(1, v2, z, z, z, new Vector2(1, 0));
            mesh.SetVertex(2, v3, z, z, z, new Vector2(1, 1));
            mesh.SetVertex(3, v4, z, z, z, new Vector2(0, 1));

            mesh.SetTri(0, 0, 1, 2);
            mesh.SetTri(1, 2, 3, 0);

            /*
             *          mesh.SetIndex(0, 0);
             * mesh.SetIndex(1, 1);
             * mesh.SetIndex(2, 2);
             * mesh.SetIndex(3, 2);
             * mesh.SetIndex(4, 3);
             * mesh.SetIndex(5, 0);
             */
            mesh.Final( );

            r.AddMesh(mesh);

            return(r);
        }
Esempio n. 2
0
        private void ProcessNode(Entity3D root, Assimp.Node s, List <Mesh3D> ml)
        {
            Entity3D r1 = new Entity3D();

            root.Sub.Add(r1);
            r1.Top  = root;
            r1.Name = s.Name;
            if (s.Name.ToLower().Contains("root"))
            {
                r1.Name     = r1.Name + "*";
                r1.BreakTop = true;
            }

            //r1.LocalTurn = new OpenTK.Matrix4(s.Transform.A1, s.Transform.A2, s.Transform.A3, s.Transform.A4, s.Transform.B1, s.Transform.B2, s.Transform.B3, s.Transform.B4, s.Transform.C1, s.Transform.C2, s.Transform.C3, s.Transform.C4, s.Transform.D1, s.Transform.D2, s.Transform.D3, s.Transform.D4);
            r1.LocalTurn = new OpenTK.Matrix4(s.Transform.A1, s.Transform.B1, s.Transform.C1, s.Transform.D1, s.Transform.A2, s.Transform.B2, s.Transform.C2, s.Transform.D2, s.Transform.A3, s.Transform.B3, s.Transform.C3, s.Transform.D3, s.Transform.A4, s.Transform.B4, s.Transform.C4, s.Transform.D4);
            OpenTK.Matrix4 lt = r1.LocalTurn;

            r1.LocalTurn = lt.ClearTranslation();
            r1.LocalTurn = r1.LocalTurn.ClearScale();
            r1.LocalPos  = lt.ExtractTranslation();

            r1.LocalScale = lt.ExtractScale();
            // r1.LocalPos = new OpenTK.Vector3(r1.LocalPos.X + 100, 0, 0);
            for (int i = 0; i < s.MeshCount; i++)
            {
                r1.AddMesh(ml[s.MeshIndices[i]]);
            }
            if (s.HasChildren)
            {
                foreach (Node pn in s.Children)
                {
                    ProcessNode(r1, pn, ml);
                }
            }
        }