/// <summary> /// Builds the model. /// </summary> /// <returns>The model.</returns> public Mesh3DGroup ToModel3D() { Mesh3DGroup modelGroup = null; this.Dispatch( () => { modelGroup = new Mesh3DGroup(); int i = 0; foreach (var mesh in this.Meshes) { var gm = new Object3D { Geometry = mesh.ToMesh(), Material = this.Materials[i] }; modelGroup.Add(gm); i++; } }); return(modelGroup); }
/// <summary> /// Creates a Model3D object from the loaded file. /// </summary> /// <returns>A Model3D group.</returns> public Object3DGroup BuildModel(ModelInfo info = default(ModelInfo)) { Object3DGroup modelGroup = null; modelGroup = new Object3DGroup(); var g = this.CreateMeshGeometry3D(info); var gm = new Object3D() { Geometry = g, Material = PhongMaterials.DefaultVRML, Transform = Matrix.Identity, }; modelGroup.Add(gm); return modelGroup; }
/// <summary> /// Create a Mesh, with found props /// </summary> /// <param name="positions"></param> /// <param name="textureCoordinates"></param> /// <param name="triangleIndices"></param> /// <param name="normals"></param> /// <param name="tangents"></param> /// <param name="bitangents"></param> /// <param name="material"></param> private void CreateMesh(Vector3Collection positions, Vector2Collection textureCoordinates, IntCollection triangleIndices, out Vector3Collection normals, out Vector3Collection tangents, out Vector3Collection bitangents,Material material) { ComputeNormals(positions, triangleIndices, out normals); if (textureCoordinates == null) { textureCoordinates = new Vector2Collection(); foreach(var pos in positions) { textureCoordinates.Add(Vector2.One); } } MeshBuilder.ComputeTangents(positions, normals, textureCoordinates, triangleIndices, out tangents, out bitangents); MeshGeometry3D mesh = new MeshGeometry3D() { Positions = positions, Normals = normals, TextureCoordinates = textureCoordinates, Indices = triangleIndices, Tangents = tangents, BiTangents = bitangents }; Object3D ob3d = new Object3D(); ob3d.Geometry = mesh; ob3d.Material = material; ob3d.Transform = Matrix.Identity; ob3d.Name = "Default"; this.obGroup.Add(ob3d); }