Aspose.3D for Java 22.5 Notes de Libération
Améliorations et changements
Clé | Résumé | Catégorie |
---|---|---|
THREEDNET-1149 | Mesh triangulate ne prend pas en charge VertexElementUserData avec le mode de mappage Polygone/PolygonVertex | Nouvelle caractéristique |
THREEDNET-1148 | Ajouter la prise en charge de VertexElementUserData dans TriMesh | Nouvelle caractéristique |
THREEDNET-1138 | Autoriser l’exportation VertexElementUserData vers glTF | Nouvelle caractéristique |
THREEDNET-1119 | Prise en charge des attributs du sommet personnalisés GLTF | Nouvelle caractéristique |
API changements
Mise à jour du type de propriété du Map<String, Object>
au Object
dans la classe com.aspose.threed.VertexElementUserData
:
/**
* The user data attached in this element
*/
public Object getData();
/**
* The user data attached in this element
* @param value New value
*/
public void setData(Object value);
Si l’ancien code attache plusieurs données dans VertexElementUserData, il doit maintenant utiliser plusieurs VertexElementUserData.
Avec ces changements API, nous pouvons prendre en charge la conversion VertexElementUserData en TriMesh ou même exportée vers glTF:
Exemple de code:
//Manually define a cube
Vector4[]controlPoints = new Vector4[]{
new Vector4(-5.0, 0.0, 5.0, 1.0),
new Vector4(5.0, 0.0, 5.0, 1.0),
new Vector4(5.0, 10.0, 5.0, 1.0),
new Vector4(-5.0, 10.0, 5.0, 1.0),
new Vector4(-5.0, 0.0, -5.0, 1.0),
new Vector4(5.0, 0.0, -5.0, 1.0),
new Vector4(5.0, 10.0, -5.0, 1.0),
new Vector4(-5.0, 10.0, -5.0, 1.0)
};
// Initialize mesh object
Mesh mesh = new Mesh();
// Add control points to the mesh
mesh.getControlPoints().addAll(Arrays.asList(controlPoints));
// Create polygons to mesh
// Front face (Z+)
mesh.createPolygon(0, 1, 2, 3);
// Right side (X+)
mesh.createPolygon(1, 5, 6, 2 );
// Back face (Z-)
mesh.createPolygon(5, 4, 7, 6);
// Left side (X-)
mesh.createPolygon(4, 0, 3, 7);
// Bottom face (Y-)
mesh.createPolygon(0, 4, 5, 1);
// Top face (Y+)
mesh.createPolygon(3, 2, 6, 7 );
//create a user data to store face id for each face, this is done by specifying MappingMode to Polygon
var userData = (VertexElementUserData)mesh.createElement(VertexElementType.USER_DATA, MappingMode.POLYGON, ReferenceMode.DIRECT);
//The name of the UserData will be used as the field's name
userData.setName("__FACE_ID");
userData.setData(new double[]{
0,1,2,3,4,5
});
var triMesh = TriMesh.fromMesh(mesh);
System.out.println("TriMesh:");
for(var vtx : triMesh)
{
System.out.println(vtx);
}
La sortie est:
TriMesh:
POSITION = (-5.0,0.0,5.0), __FACE_ID = 0.0
POSITION = (5.0,0.0,5.0), __FACE_ID = 0.0
POSITION = (5.0,10.0,5.0), __FACE_ID = 0.0
POSITION = (5.0,10.0,5.0), __FACE_ID = 0.0
POSITION = (-5.0,10.0,5.0), __FACE_ID = 0.0
POSITION = (5.0,0.0,5.0), __FACE_ID = 1.0
POSITION = (5.0,0.0,-5.0), __FACE_ID = 1.0
POSITION = (5.0,10.0,-5.0), __FACE_ID = 1.0
POSITION = (5.0,10.0,-5.0), __FACE_ID = 1.0
POSITION = (5.0,10.0,5.0), __FACE_ID = 1.0
POSITION = (5.0,0.0,-5.0), __FACE_ID = 2.0
POSITION = (-5.0,0.0,-5.0), __FACE_ID = 2.0
POSITION = (-5.0,10.0,-5.0), __FACE_ID = 2.0
POSITION = (-5.0,10.0,-5.0), __FACE_ID = 2.0
POSITION = (5.0,10.0,-5.0), __FACE_ID = 2.0
POSITION = (-5.0,0.0,-5.0), __FACE_ID = 3.0
POSITION = (-5.0,0.0,5.0), __FACE_ID = 3.0
POSITION = (-5.0,10.0,5.0), __FACE_ID = 3.0
POSITION = (-5.0,10.0,5.0), __FACE_ID = 3.0
POSITION = (-5.0,10.0,-5.0), __FACE_ID = 3.0
POSITION = (-5.0,0.0,5.0), __FACE_ID = 4.0
POSITION = (-5.0,0.0,-5.0), __FACE_ID = 4.0
POSITION = (5.0,0.0,-5.0), __FACE_ID = 4.0
POSITION = (5.0,0.0,-5.0), __FACE_ID = 4.0
POSITION = (5.0,0.0,5.0), __FACE_ID = 4.0
POSITION = (-5.0,10.0,5.0), __FACE_ID = 5.0
POSITION = (5.0,10.0,5.0), __FACE_ID = 5.0