Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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;
        }
Beispiel #3
-32
    /// <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);
    }