Example #1
0
        private static Mesh MergeMeshes(List <Mesh> meshes, List <Material> materials, List <Matrix4f> transforms)
        {
            Mesh resMesh = new Mesh();

            if (meshes.Count > 0)
            {
                List <Vertex> finalVertices = new List <Vertex>();
                for (int m = 0; m < meshes.Count; m++)
                {
                    for (int i = 0; i < meshes[m].indices.Count; i++)
                    {
                        Vertex vertex  = meshes[m].vertices[meshes[m].indices[i]];
                        Vertex newVert = new Vertex(vertex);
                        newVert.SetPosition(vertex.GetPosition().Multiply(transforms[m]));
                        if (vertex.GetNormal() != null)
                        {
                            newVert.SetNormal(vertex.GetNormal().Multiply(transforms[m].Invert().TransposeStore()));
                        }
                        finalVertices.Add(newVert);
                    }
                }
                resMesh.SetVertices(finalVertices);
                resMesh.Material      = materials[0];
                resMesh.PrimitiveType = meshes[0].PrimitiveType;
            }
            return(resMesh);
        }
Example #2
0
        public static Mesh MergeMeshes(List <Mesh> meshes)
        {
            Mesh resMesh = new Mesh();

            if (meshes.Count > 0)
            {
                List <Vertex> finalVertices = new List <Vertex>();
                for (int m = 0; m < meshes.Count; m++)
                {
                    for (int i = 0; i < meshes[m].indices.Count; i++)
                    {
                        Vertex vertex  = meshes[m].vertices[meshes[m].indices[i]];
                        Vertex newVert = new Vertex(vertex);
                        newVert.SetPosition(vertex.GetPosition());

                        finalVertices.Add(newVert);
                    }
                }
                resMesh.SetVertices(finalVertices);
                resMesh.Material      = meshes[0].Material;
                resMesh.PrimitiveType = meshes[0].PrimitiveType;
            }
            return(resMesh);
        }
Example #3
0
        public static void CreateShapes(Demo demo, PhysicsScene scene)
        {
            TriangleMesh   triangleMesh   = null;
            ShapePrimitive shapePrimitive = null;
            Shape          shape          = null;

            triangleMesh = scene.Factory.TriangleMeshManager.Create("TorusMesh1");
            triangleMesh.CreateTorusY(10, 15, 3.0f, 1.0f);
            if (!demo.Meshes.ContainsKey("TorusMesh1"))
            {
                demo.Meshes.Add("TorusMesh1", new DemoMesh(demo, triangleMesh, demo.Textures["Default"], Vector2.One, true, true, true, false, true, CullFaceMode.Back, false, false));
            }

            scene.Factory.CreatePhysicsObjectsFromConcave("ConcaveTorus1", triangleMesh);
            scene.Factory.CreatePhysicsObjectsFromConcave("ConcaveTorus2", triangleMesh);

            shapePrimitive = scene.Factory.ShapePrimitiveManager.Create("ConvexTorus1");
            shapePrimitive.CreateConvexHull(triangleMesh);

            shape = scene.Factory.ShapeManager.Create("ConvexTorus1");
            shape.Set(shapePrimitive, Matrix4.Identity, 0.0f);

            triangleMesh = scene.Factory.TriangleMeshManager.Create("UserMesh1");

            TriangleMeshRegion r01 = triangleMesh.TriangleMeshRegionManager.Create("r01");

            Vertex v1 = r01.VertexManager.Create("v1");

            v1.SetPosition(-1.0f, -1.0f, -1.0f);
            Vertex v2 = r01.VertexManager.Create("v2");

            v2.SetPosition(0.0f, -1.0f, 1.0f);
            Vertex v3 = r01.VertexManager.Create("v3");

            v3.SetPosition(1.0f, -1.0f, -1.0f);
            Vertex v4 = r01.VertexManager.Create("v4");

            v4.SetPosition(0.0f, 1.0f, 0.0f);

            Triangle t01 = r01.TriangleManager.Create("t01");

            t01.Index1 = 0;
            t01.Index2 = 1;
            t01.Index3 = 3;
            Triangle t02 = r01.TriangleManager.Create("t02");

            t02.Index1 = 0;
            t02.Index2 = 3;
            t02.Index3 = 2;
            Triangle t03 = r01.TriangleManager.Create("t03");

            t03.Index1 = 2;
            t03.Index2 = 3;
            t03.Index3 = 1;
            Triangle t04 = r01.TriangleManager.Create("t04");

            t04.Index1 = 0;
            t04.Index2 = 2;
            t04.Index3 = 1;

            triangleMesh.Update(true, true);

            if (!demo.Meshes.ContainsKey("UserMesh1"))
            {
                demo.Meshes.Add("UserMesh1", new DemoMesh(demo, triangleMesh, demo.Textures["Default"], Vector2.One, false, false, true, false, false, CullFaceMode.Back, false, false));
            }

            shapePrimitive = scene.Factory.ShapePrimitiveManager.Create("UserMesh1");
            shapePrimitive.CreateConvex(triangleMesh);

            shape = scene.Factory.ShapeManager.Create("UserMesh1");
            shape.Set(shapePrimitive, Matrix4.Identity, 0.0f);

            shapePrimitive = scene.Factory.ShapePrimitiveManager.Create("Cylinder2RY");
            shapePrimitive.CreateCylinder2RY(2.0f, 2.0f, 1.0f);

            shape = scene.Factory.ShapeManager.Create("Cylinder2RY");
            shape.Set(shapePrimitive, Matrix4.Identity, 0.0f);

            triangleMesh = scene.Factory.TriangleMeshManager.Create("Cylinder2RY");
            triangleMesh.CreateCylinder2RY(1, 15, 2.0f, 2.0f, 1.0f);
            if (!demo.Meshes.ContainsKey("Cylinder2RY"))
            {
                demo.Meshes.Add("Cylinder2RY", new DemoMesh(demo, triangleMesh, demo.Textures["Default"], Vector2.One, true, true, true, false, true, CullFaceMode.Back, false, false));
            }

            triangleMesh = scene.Factory.TriangleMeshManager.Create("TubeMesh1");
            triangleMesh.CreateTubeY(1, 15, 2.0f, 1.0f, 0.5f, 1.0f, 0.5f);
            if (!demo.Meshes.ContainsKey("TubeMesh1"))
            {
                demo.Meshes.Add("TubeMesh1", new DemoMesh(demo, triangleMesh, demo.Textures["Default"], Vector2.One, true, true, true, false, true, CullFaceMode.Back, false, false));
            }
        }
Example #4
0
        private static Mesh MergeMeshes(List<Mesh> meshes, List<Material> materials, List<Matrix4f> transforms)
        {
            Mesh resMesh = new Mesh();

            if (meshes.Count > 0)
            {
                List<Vertex> finalVertices = new List<Vertex>();
                for (int m = 0; m < meshes.Count; m++)
                {
                    for (int i = 0; i < meshes[m].indices.Count; i++)
                    {
                        Vertex vertex = meshes[m].vertices[meshes[m].indices[i]];
                        Vertex newVert = new Vertex(vertex);
                        newVert.SetPosition(vertex.GetPosition().Multiply(transforms[m]));
                        if (vertex.GetNormal() != null)
                            newVert.SetNormal(vertex.GetNormal().Multiply(transforms[m].Invert().TransposeStore()));
                        finalVertices.Add(newVert);
                    }
                }
                resMesh.SetVertices(finalVertices);
                resMesh.Material = materials[0];
                resMesh.PrimitiveType = meshes[0].PrimitiveType;
            }
            return resMesh;
        }
Example #5
0
        public static Mesh MergeMeshes(List<Mesh> meshes)
        {
            Mesh resMesh = new Mesh();

            if (meshes.Count > 0)
            {
                List<Vertex> finalVertices = new List<Vertex>();
                for (int m = 0; m < meshes.Count; m++)
                {
                    for (int i = 0; i < meshes[m].indices.Count; i++)
                    {
                        Vertex vertex = meshes[m].vertices[meshes[m].indices[i]];
                        Vertex newVert = new Vertex(vertex);
                        newVert.SetPosition(vertex.GetPosition());

                        finalVertices.Add(newVert);
                    }
                }
                resMesh.SetVertices(finalVertices);
                resMesh.Material = meshes[0].Material;
                resMesh.PrimitiveType = meshes[0].PrimitiveType;
            }
            return resMesh;
        }