Pubblico API Modifiche nel Aspose.3D 17.01
Contenuto sommario
- Aggiunge la voce del formato PLY nella classe Aspose.ThreeD.FileFormat
- Importazione di file PLY
- Aggiunge Aspose.ThreeD. Classe GlobalTransform
- Aggiunge una proprietà GlobalTransform a Aspose.ThreeD.Node Class
- Aggiunge la proprietà Polygons a Aspose.ThreeD.Entities.Mesh Class
- Caricare il file 3D e scrivere le maglie in formato binario personalizzato
- Rimuove il membro CreateStream da Aspose.ThreeD.Formats.IOConfig Class
Aggiunge la voce del formato PLY nella classe Aspose.ThreeD.FileFormat
Abbiamo aggiunto una voce in formato PLY a scopo di caricamento.
Importazione di file PLY
Utilizzando la versione recente (17.01) o superiore, gli sviluppatori possono importare i file PLY. La voce del formato PLY viene aggiunta ai fini del caricamento.
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);
Aggiunge Aspose.ThreeD. Classe GlobalTransform
La classe GlobalTransform fornisce esattamente la stessa interfaccia come Transform, ma tutte le sue proprietà sono di sola lettura. È utile per gli scopi della trasformazione globale.
Aggiunge una proprietà GlobalTransform a Aspose.ThreeD.Node Class
Permette di accedere alla trasformazione globale del nodo. Questo è utile per trasformare la scena nel formato di file personalizzato dell’utente.
Aggiunge la proprietà Polygons a Aspose.ThreeD.Entities.Mesh Class
Permette di ottenere tutti i poligoni all’interno della mesh, ogni poligono è un array di indice dei vertici poligonali. Prima di questa proprietà, dobbiamo usare la sintassi foreach per enumerare ogni poligono che è inefficiente.
Caricare il file 3D e scrivere le maglie in formato binario personalizzato
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;
});
}
Rimuove il membro CreateStream da Aspose.ThreeD.Formats.IOConfig Class
Questo è stato contrassegnato come obsoleto nella versione 16.11.0, la nuova interfaccia FileSystem è stata introdotta nella versione 16.11.0 che fornisce maggiore estensibilità.