Aspose.3D 17.01中的公共 API 更改

内容摘要

在 Aspose.ThreeD.FileFormat类中添加 PLY 格式项

我们添加了一个 PLY 格式条目用于加载目的。

正在导入 PLY 个文件

使用最新版本 (17.01) 或更高版本,开发人员可以导入 PLY 文件。PLY 格式条目是为了加载而添加的。

C#

 // an entry of PLY file in the FileFormat class

public static readonly Aspose.ThreeD.FileFormat PLY;

// initialize Scene class object

Scene scene = new Scene();

// initialize an object

PlyLoadOptions loadPLYOpts = new PlyLoadOptions();

// Flip the coordinate system.

loadPLYOpts.FlipCoordinateSystem = true;

// load 3D Ply model

scene.Open( "3DPlyModel.ply", loadPLYOpts);

添加 Aspose.ThreeD.GlobalTransform类

GlobalTransform类提供了与Transform完全相同的接口,但它的所有属性都是只读的。它对于全局转换的目的是有用的。

将GlobalTransform属性添加到 Aspose.ThreeD.Node类

它允许访问节点的全局转换。这对于将场景转换为用户的自定义文件格式很有用。

将多边形属性添加到 Aspose.ThreeD.Entities.Mesh类

它允许获取网格内部的所有多边形,每个多边形都是多边形顶点索引的数组。在此属性之前,我们必须使用foreach语法来枚举效率低下的每个多边形。

加载 3D 文件并以自定义二进制格式写入网格

C#

 string = @"c:\temp\input.stl", output = @"c:\temp\output";

// load a 3D file

Scene scene = new Scene(input);

/*

\* 3D format demonstration is simple

\* 

\* struct File {

\*   MeshBlock blocks[];

\* };

\*

\* struct Vertex {

\*   float x;

\*   float y;

\*   float z;

\* };

\* 

\* struct Triangle {

\*   int a;

\*   int b;

\*   int c;

\* };

\* 

\* struct MeshBlock {

\*   int numControlPoints;

\*   int numTriangles;

\*   Vertex vertices[numControlPoints];

\*   Triangle faces[numTriangles];

\* };

*/

// open file for writing in binary mode

using (var writer = new BinaryWriter(new FileStream(output, FileMode.Create, FileAccess.Write)))

{

    // visit each descent nodes

    scene.RootNode.Accept(delegate (Node node)

    {

        foreach (Entity entity in node.Entities)

        {

            // only convert meshes, lights/camera and other stuff will be ignored

            if (!(entity is IMeshConvertible))

                continue;

            Mesh m = ((IMeshConvertible)entity).ToMesh();

            var controlPoints = m.ControlPoints;

            // triangulate the mesh, so triFaces will only store triangle indices

            int[][] triFaces = PolygonModifier.Triangulate(controlPoints, m.Polygons);

            // gets the global transform matrix

            Matrix4 transform = node.GlobalTransform.TransformMatrix;

            // write number of control points and triangle indices

            writer.Write(controlPoints.Count);

            writer.Write(triFaces.Length);

            // write control points

            for (int i = 0; i < controlPoints.Count; i++)

            {

                // calculate the control points in world space and save them to file

                var cp = transform * controlPoints[i];

                writer.Write((float)cp.x);

                writer.Write((float)cp.y);

                writer.Write((float)cp.z);

            }

            // write triangle indices

            for (int i = 0; i < triFaces.Length; i++)

            {

                writer.Write(triFaces[i][0]);

                writer.Write(triFaces[i][1]);

                writer.Write(triFaces[i][2]);

            }

        }

        return true;

    });

}

从 Aspose.ThreeD.Formats.IOConfig类中删除CreateStream成员

这在版本16.11.0中被标记为过时,新的接口文件系统在版本16.11.0中引入,提供了更大的可扩展性。