Public API Changements dans Aspose.3D 17.01
Résumé du contenu
- Ajoute une entrée de format PLY dans la classe Aspose.ThreeD.FileFormat
- Importation de fichiers PLY
- Ajoute la classe Aspose.ThreeD.GlobalTransform
- Ajoute une propriété GlobalTransform à Aspose.ThreeD.Node Class
- Ajoute la propriété Polygons à Aspose.ThreeD.Entities.Mesh Class
- Charger 3D Fichier et écrire des maillages au format binaire personnalisé
- Supprime le membre CreateStream de la classe Aspose.ThreeD.Formats.IOConfig
Ajoute une entrée de format PLY dans la classe Aspose.ThreeD.FileFormat
Nous avons ajouté une entrée de format PLY à des fins de chargement.
Importation de fichiers PLY
En utilisant la version récente (17.01) ou supérieure, les développeurs peuvent importer des fichiers PLY. L’entrée de format PLY est ajoutée à des fins de chargement.
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);
Ajoute la classe Aspose.ThreeD.GlobalTransform
La classe GlobalTransform fournit exactement la même interface comme Transform, mais toutes ses propriétés sont en lecture seule. Il est utile à des fins de transformation globale.
Ajoute une propriété GlobalTransform à Aspose.ThreeD.Node Class
Il permet d’accéder à la transformée globale du nœud. Ceci est utile pour transformer la scène dans le format de fichier personnalisé de l’utilisateur.
Ajoute la propriété Polygons à Aspose.ThreeD.Entities.Mesh Class
Il permet d’obtenir tous les polygones à l’intérieur du maillage, chaque polygone est un tableau d’indice de sommets polygonaux. Avant cette propriété, nous devons utiliser la syntaxe foreach pour énumérer chaque polygone qui est inefficace.
Charger 3D Fichier et écrire des maillages au format binaire personnalisé
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;
});
}
Supprime le membre CreateStream de la classe Aspose.ThreeD.Formats.IOConfig
Cela a été marqué comme obsolète dans la version 16.11.0, la nouvelle interface FileSystem a été introduite dans la version 16.11.0 qui offre plus d’extensibilité.