Mesh — Aspose.3D FOSS for Java

Paquet: com.aspose.threed (aspose-3d-foss 26.1.0)

Mesh emmagatzema la geometria del polígon com una llista de punts de control (posicions dels vèrtex) i una llista de cares del polígon. Cada cara del polígon és una llista d’índexs basats en zero cap a la matriu de punts de control. Les cares poden ser triangles, quàders o polígons d’aritat superior. Dades addicionals per vèrtex — normals, coordenades UV, colors del vèrtex — s’adhereixen com a VertexElement capes.

public class Mesh extends Geometry

Methods

A3DObject -> SceneObject -> Entity -> Geometry -> Mesh


Methods

Construeix una malla de triangle única des de zero:

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");

Construeix una malla de quad (nota: triangulate() és un stub — vegeu l’advertència a continuació):

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

MethodsMethodsMethodsMethodsMethods
controlPointsList<Vector4>getControlPoints()Matriu de posicions de vèrtex. Cada entrada és una Vector4(x, y, z, w) on w és 1.0 per a dades de posició. Afegeix vèrtexs cridant add() a la llista retornada.
polygonCountintgetPolygonCount()Nombre de cares del polígon definides en aquesta malla.
polygonsList<int[]>getPolygons()Totes les definicions de cares com una llista de matrius d’índexs. Cada matriu interna conté els índexs dels vèrtex (cap a controlPoints) per a una cara.
edgesList<Integer>getEdges()Dades d’índex d’aresta en brut. Principalment per a ús intern i consultes avançades de topologia.
vertexElementsList<VertexElement>getVertexElements()Totes les capes d’elements de vèrtex actualment adjuntes a aquesta malla (normals, UVs, colors, etc.).
visiblebooleangetVisible()setVisible(boolean)Methods false, la malla està oculta en visualitzadors que respecten la visibilitat.
castShadowsbooleangetCastShadows()setCastShadows(boolean)Si aquesta malla projecta ombres en renderitzadors que admeten mapes d’ombres.
receiveShadowsbooleangetReceiveShadows()setReceiveShadows(boolean)Si aquesta malla rep ombres d’altres geometries que projecten ombres.

Methods

createPolygon(int... indices)

Defineix una nova cara de polígon proporcionant els índexs de vèrtex en ordre. Els índexs fan referència a posicions a getControlPoints(). Accepta tres o més índexs per a triangles, quàders i n-gons.

MethodsMethodsMethods
indicesint...Arguments d’índex de vèrtex en ordre d’enrotllament (normalment en sentit antihorari quan es veu des de fora).

Retorna: 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());   // 2

triangulate()

Stub: Retorna una còpia del mesh original. Destinat a dividir tots els polígons en triangles mitjançant triangulació en forma d’ala, però la lògica real de triangulació encara no està implementada. El mesh original no es modifica.

Retorna: Mesh – una còpia del mesh original (comportament stub).

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()

Retorna això Mesh com a Mesh instància. Per a Mesh objectes, això és una operació d’identitat (retorna this) Geometry classe base per proporcionar una interfície de conversió uniforme quan es treballa amb genèrics Geometry referències.

Retorna: Mesh

import com.aspose.threed.*;

Mesh ensureMesh(Geometry geom) {
    return geom.toMesh();
}

createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)

Afegeix un nou VertexElement capa del tipus especificat a la malla. Utilitza-ho per adjuntar normals, tangents, binormals, colors de vèrtex i grups d’allisat.

MethodsMethodsMethods
elementTypeVertexElementTypeEl tipus de dades que aquesta capa conté (p. ex., VertexElementType.NORMAL).
mappingModeMappingModeCom es mapegen les dades a la geometria: CONTROL_POINT, POLYGON_VERTEX, POLYGON, etc.
referenceModeReferenceModeCom s’utilitzen els índexs: DIRECT o INDEX_TO_DIRECT.

Retorna: 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)

Afegeix una capa de coordenades UV a la malla. Aquest és el mètode preferit per adjuntar dades de coordenades de textura.

MethodsMethodsMethods
uvMappingTextureMappingLa finalitat del canal UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, etc.
mappingModeMappingModeCom es mapen els UVs als elements de geometria.
referenceModeReferenceModeMode d’indexació: DIRECT o INDEX_TO_DIRECT.

Retorna: 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ètodes booleans i d’optimització (Stubs)

Els mètodes següents existeixen a Mesh però són esquelets que retorna una còpia del mesh original sense realitzar la seva operació prevista.

Important: union, difference, intersect, i doBoolean són mètodes estàtics, no mètodes d’instància. Crida’ls com a Mesh.union(a, b), no a.union(b).

MethodsTipus de retornMethods
static Mesh.union(Mesh a, Mesh b)MeshStub: retorna una còpia de a. Destinat a la unió CSG.
static Mesh.difference(Mesh a, Mesh b)MeshStub: retorna una còpia de a. Destinat a la sustracció CSG.
static Mesh.intersect(Mesh a, Mesh b)MeshStub: retorna una còpia de a. Destinat a la intersecció CSG.
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb)MeshStub: retorna una còpia de a. Destinat a CSG general amb transformacions.
optimize(boolean removeVertices)MeshStub: retorna un clon. Quatre sobrecàrregues de paràmetres: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float).
optimize2(boolean removeVertices)MeshStub: retorna un clon. Punt d’entrada d’optimització alternativa.

Vegeu també

 Català