Mesh — Aspose.3D FOSS for Java
Package : com.aspose.threed (aspose-3d-foss 26.1.0)
Mesh stocke la géométrie des polygones sous forme d’une liste de points de contrôle (positions des sommets) et d’une liste de faces de polygones. Chaque face de polygone est une liste d’indices zéro‑basés dans le tableau des points de contrôle. Les faces peuvent être des triangles, des quadrilatères ou des polygones d’arité supérieure. Des données supplémentaires par sommet — normales, coordonnées UV, couleurs des sommets — sont attachées en tant que VertexElement couches.
public class Mesh extends GeometryMethods
A3DObject -> SceneObject -> Entity -> Geometry -> Mesh
Methods
Construisez un maillage triangulaire unique à partir de zéro :
import com.aspose.threed.Scene;
import com.aspose.threed.*;
// Create the mesh and add three vertex positions
Mesh mesh = new Mesh();
mesh.getControlPoints().add(new Vector4(0.0, 0.0, 0.0, 1.0)); // vertex 0
mesh.getControlPoints().add(new Vector4(1.0, 0.0, 0.0, 1.0)); // vertex 1
mesh.getControlPoints().add(new Vector4(0.5, 1.0, 0.0, 1.0)); // vertex 2
// Define one triangle face using vertex indices
mesh.createPolygon(0, 1, 2);
// Attach to a scene and save
Scene scene = new Scene();
scene.getRootNode().createChildNode("triangle", mesh);
scene.save("triangle.stl");Construisez un maillage quadrilatéral (note : triangulate() est un stub — voir l’avertissement ci‑dessous) :
import com.aspose.threed.Scene;
import com.aspose.threed.*;
Mesh mesh = new Mesh();
// Four corners of a unit square in the XZ plane
mesh.getControlPoints().add(new Vector4(0, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 0, 1, 1.0));
mesh.getControlPoints().add(new Vector4(0, 0, 1, 1.0));
// One quad face
mesh.createPolygon(0, 1, 2, 3);
System.out.println("Polygons before triangulate: " + mesh.getPolygonCount()); // 1
// WARNING: triangulate() is a stub — it returns a clone, NOT a triangulated mesh.
// The polygon count will remain 1 (not 2).
Mesh triangulated = mesh.triangulate();
System.out.println("Polygons after triangulate: " + triangulated.getPolygonCount()); // still 1
Scene scene = new Scene();
scene.getRootNode().createChildNode("quad", triangulated);
// When saving to STL, pass triangle-only meshes to avoid vertex loss or malformed output.
scene.save("quad.glb");Methods
| Methods | Methods | Methods | Methods | Methods |
|---|---|---|---|---|
controlPoints | List<Vector4> | getControlPoints() | – | Tableau des positions des sommets. Chaque entrée est un Vector4(x, y, z, w) où w est 1.0 pour les données de position. Ajoutez des sommets en appelant add() sur la liste retournée. |
polygonCount | int | getPolygonCount() | – | Nombre de faces de polygones définies sur ce maillage. |
polygons | List<int[]> | getPolygons() | – | Toutes les définitions de faces sous forme d’une liste de tableaux d’indices. Chaque tableau interne contient les indices des sommets (dans controlPoints) pour une face. |
edges | List<Integer> | getEdges() | – | Données brutes d’index d’arêtes. Principalement pour un usage interne et des requêtes de topologie avancées. |
vertexElements | List<VertexElement> | getVertexElements() | – | Toutes les couches d’éléments de sommet actuellement attachées à ce maillage (normales, UVs, couleurs, etc.). |
visible | boolean | getVisible() | setVisible(boolean) | Methods false, le maillage est masqué dans les visionneuses qui respectent la visibilité. |
castShadows | boolean | getCastShadows() | setCastShadows(boolean) | Indique si ce maillage projette des ombres dans les moteurs de rendu qui prennent en charge les cartes d’ombres. |
receiveShadows | boolean | getReceiveShadows() | setReceiveShadows(boolean) | Indique si ce maillage reçoit des ombres provenant d’autres géométries qui projettent des ombres. |
Methods
createPolygon(int... indices)
Définissez une nouvelle face polygonale en fournissant les indices de sommet dans l’ordre. Les indices font référence aux positions dans getControlPoints(). Accepte trois indices ou plus pour les triangles, les quadrilatères et les n-gones.
| Methods | Methods | Methods |
|---|---|---|
indices | int... | Arguments d’indices de sommet dans l’ordre de rotation (généralement dans le sens inverse des aiguilles d’une montre lorsqu’ils sont vus de l’extérieur). |
Retourne : void
Mesh mesh = new Mesh();
// ... populate control points ...
mesh.createPolygon(0, 1, 2); // triangle
mesh.createPolygon(0, 1, 2, 3); // quad
System.out.println(mesh.getPolygonCount()); // 2triangulate()
Ébauche : Renvoie un clone du maillage original. Destiné à diviser tous les polygones en triangles à l’aide d’une triangulation en éventail, mais la logique de triangulation réelle n’est pas encore implémentée. Le maillage original n’est pas modifié.
Renvoie : Mesh – un clone du maillage original (comportement d’ébauche).
import com.aspose.threed.*;
Mesh mesh = new Mesh();
mesh.getControlPoints().add(new Vector4(0, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 0, 0, 1.0));
mesh.getControlPoints().add(new Vector4(1, 1, 0, 1.0));
mesh.getControlPoints().add(new Vector4(0, 1, 0, 1.0));
mesh.createPolygon(0, 1, 2, 3); // one quad
Mesh triMesh = mesh.triangulate();
// Note: currently returns a clone, not a triangulated mesh
System.out.println(triMesh.getPolygonCount());toMesh()
Retourner ceci Mesh en tant que Mesh instance. Pour Mesh objets, il s’agit d’une opération d’identité (renvoie this). Définie sur le Geometry classe de base afin de fournir une interface de conversion uniforme lors du travail avec des génériques Geometry références.
Renvoie : Mesh
import com.aspose.threed.*;
Mesh ensureMesh(Geometry geom) {
return geom.toMesh();
}createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)
Ajouter un nouveau VertexElement couche du type spécifié au maillage. Utilisez ceci pour attacher normals, tangents, binormals, vertex colours et smoothing groups.
| Methods | Methods | Methods |
|---|---|---|
elementType | VertexElementType | Le type de données que cette couche contient (par ex., VertexElementType.NORMAL). |
mappingMode | MappingMode | Comment les données sont mappées à la géométrie : CONTROL_POINT, POLYGON_VERTEX, POLYGON, etc. |
referenceMode | ReferenceMode | Comment les indices sont utilisés : DIRECT ou INDEX_TO_DIRECT. |
Renvoie : VertexElement
import com.aspose.threed.*;
Mesh mesh = new Mesh();
mesh.getControlPoints().add(new Vector4(0, 0, 0, 1));
mesh.getControlPoints().add(new Vector4(1, 0, 0, 1));
mesh.getControlPoints().add(new Vector4(0.5, 1, 0, 1));
mesh.createPolygon(0, 1, 2);
VertexElement normalElement = mesh.createElement(
VertexElementType.NORMAL,
MappingMode.CONTROL_POINT,
ReferenceMode.DIRECT
);createElementUV(TextureMapping uvMapping, MappingMode mappingMode, ReferenceMode referenceMode)
Ajoutez une couche de coordonnées UV au maillage. C’est la méthode recommandée pour associer des données de coordonnées de texture.
| Methods | Methods | Methods |
|---|---|---|
uvMapping | TextureMapping | Le but du canal UV : DIFFUSE, SPECULAR, NORMAL, AMBIENT, etc. |
mappingMode | MappingMode | Comment les UV sont mappés aux éléments de géométrie. |
referenceMode | ReferenceMode | Mode d’indexation : DIRECT ou INDEX_TO_DIRECT. |
Renvoie : VertexElementUV
import com.aspose.threed.*;
Mesh mesh = new Mesh();
// ... define control points and polygons ...
VertexElementUV uvElement = mesh.createElementUV(
TextureMapping.DIFFUSE,
MappingMode.POLYGON_VERTEX,
ReferenceMode.INDEX_TO_DIRECT
);Méthodes booléennes et d’optimisation (stubs)
Les méthodes suivantes existent sur Mesh mais sont brouillons qui renvoie un clone du maillage original sans effectuer leur opération prévue.
Important : union, difference, intersect, et doBoolean sont méthodes statiques, pas des méthodes d’instance. Appelez‑les comme Mesh.union(a, b), pas a.union(b).
| Methods | Type de retour | Methods |
|---|---|---|
static Mesh.union(Mesh a, Mesh b) | Mesh | Ébauche : renvoie un clone de a. Destiné à l’union CSG. |
static Mesh.difference(Mesh a, Mesh b) | Mesh | Ébauche: renvoie un clone de a. Destiné à la soustraction CSG. |
static Mesh.intersect(Mesh a, Mesh b) | Mesh | Ébauche: renvoie un clone de a. Destiné à l’intersection CSG. |
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb) | Mesh | Ébauche: renvoie un clone de a. Destiné au CSG général avec transformations. |
optimize(boolean removeVertices) | Mesh | Ébauche: renvoie un clone. Surcharges à quatre paramètres : optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float). |
optimize2(boolean removeVertices) | Mesh | Ébauche : renvoie un clone. Point d’entrée d’optimisation alternatif. |