public void Clone() { TriangleMeshShape clone = _meshShape.Clone() as TriangleMeshShape; Assert.IsNotNull(clone); Assert.IsNotNull(clone.Mesh); Assert.IsTrue(clone.Mesh is TriangleMesh); Assert.AreSame(_mesh, clone.Mesh); Assert.AreEqual(_mesh.NumberOfTriangles, clone.Mesh.NumberOfTriangles); for (int i = 0; i < _mesh.NumberOfTriangles; i++) { Triangle t = _mesh.GetTriangle(i); Triangle tCloned = clone.Mesh.GetTriangle(i); Assert.AreEqual(t.Vertex0, tCloned.Vertex0); Assert.AreEqual(t.Vertex1, tCloned.Vertex1); Assert.AreEqual(t.Vertex2, tCloned.Vertex2); } Assert.AreEqual(_meshShape.GetAabb(Pose.Identity).Minimum, clone.GetAabb(Pose.Identity).Minimum); Assert.AreEqual(_meshShape.GetAabb(Pose.Identity).Maximum, clone.GetAabb(Pose.Identity).Maximum); }
private MeshNode CreateMeshNode(IEnumerable <Submesh> submeshes, Color color) { var mesh = new Mesh(); mesh.Submeshes.AddRange(submeshes); var material = new Material(); BasicEffectBinding defaultEffectBinding = new BasicEffectBinding(GraphicsService, null) { LightingEnabled = true, TextureEnabled = false, VertexColorEnabled = false }; defaultEffectBinding.Set("DiffuseColor", color.ToVector4()); defaultEffectBinding.Set("SpecularColor", new Vector3(1, 1, 1)); defaultEffectBinding.Set("SpecularPower", 100f); material.Add("Default", defaultEffectBinding); var triangleMesh = mesh.ToTriangleMesh(); var shape = new TriangleMeshShape(triangleMesh); var aabb = shape.GetAabb(); mesh.BoundingShape = new TransformedShape( new GeometricObject( new BoxShape(aabb.Extent), new Pose(aabb.Center))); mesh.Materials.Add(material); foreach (var submesh in mesh.Submeshes) { submesh.MaterialIndex = 0; } return(new MeshNode(mesh)); }