Публичные API Изменения в Aspose.3D 17,01

Содержание Резюме

Добавляет в PLY формат входа в класс Aspose.ThreeD.FileFormat

Мы добавили запись формата 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. Класс узла

Это позволяет получить доступ к глобальному преобразованию узла. Это полезно для преобразования сцены в пользовательский формат файла пользователя.

Добавляет свойство Polygons к классу Aspose.ThreeD.Entities.Mesh

Это позволяет получить все многоугольники внутри сетки, каждый многоугольник представляет собой массив индекса вершин многоугольника. Перед этим свойством мы должны использовать для каждого синтаксиса, чтобы перечислить каждый многоугольник, который неэффективен.

Загрузка файлов 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;

    });

}

Удаляет член CreateStream из класса Aspose.ThreeD.Formats.IOConfig

Он был отмечен как устаревший в версии 16.11.0, новый интерфейс FileSystem был представлен в версии 16.11.0, что обеспечивает большую расширяемость.