Mesh — Aspose.3D FOSS for Java

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

Mesh almacena la geometría del polígono como una lista de puntos de control (posiciones de vértices) y una lista de caras del polígono. Cada cara del polígono es una lista de índices basados en cero en el arreglo de puntos de control. Las caras pueden ser triángulos, cuádruples o polígonos de aridad superior. Los datos adicionales por vértice – normales, coordenadas UV, colores de vértice – se adjuntan como VertexElement capas.

public class Mesh extends Geometry

Methods

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


Methods

Construye una malla de un solo triángulo desde cero:

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

Construye una malla de cuadrilátero (nota: triangulate() es un stub — ver la advertencia a continuación):

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()Matriz de posiciones de vértices. Cada entrada es una. Vector4(x, y, z, w) donde w es 1.0 para datos de posición. Añade vértices llamando a add() sobre la lista devuelta.
polygonCountintgetPolygonCount()Número de caras de polígono definidas en esta malla.
polygonsList<int[]>getPolygons()Todas las definiciones de caras como una lista de matrices de índices. Cada matriz interna contiene los índices de los vértices (en controlPoints) para una cara.
edgesList<Integer>getEdges()Datos sin procesar de índices de aristas. Principalmente para uso interno y consultas avanzadas de topología.
vertexElementsList<VertexElement>getVertexElements()Todas las capas de elementos de vértices actualmente adjuntas a esta malla (normales, UVs, colores, etc.).
visiblebooleangetVisible()setVisible(boolean)Methods false, la malla está oculta en los visores que respetan la visibilidad.
castShadowsbooleangetCastShadows()setCastShadows(boolean)Si esta malla proyecta sombras en los renderizadores que admiten mapas de sombras.
receiveShadowsbooleangetReceiveShadows()setReceiveShadows(boolean)Si esta malla recibe sombras de otra geometría que proyecta sombras.

Methods

createPolygon(int... indices)

Define una nueva cara de polígono proporcionando los índices de vértices en orden. Los índices hacen referencia a posiciones en getControlPoints(). Acepta tres o más índices para triángulos, quads y n‑gons.

MethodsMethodsMethods
indicesint...Argumentos de índices de vértices en orden de enrollado (normalmente en sentido antihorario cuando se ve desde el exterior).

Devuelve: 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: Devuelve una copia del mesh original. Está destinado a dividir todos los polígonos en triángulos usando triangulación en abanico, pero la lógica real de triangulación aún no está implementada. El mesh original no se modifica.

Devuelve: Mesh – una copia del mesh original (comportamiento de 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()

Devuelve esto Mesh como un Mesh instancia. Para Mesh objetos, esto es una operación de identidad (devuelve this) Geometry clase base para proporcionar una interfaz de conversión uniforme al trabajar con genéricos Geometry referencias.

Devuelve: Mesh

import com.aspose.threed.*;

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

createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)

Agregar un nuevo VertexElement capa del tipo especificado a la malla. Utilícela para adjuntar normales, tangentes, binormales, colores de vértice y grupos de suavizado.

MethodsMethodsMethods
elementTypeVertexElementTypeEl tipo de datos que contiene esta capa (p. ej., VertexElementType.NORMAL).
mappingModeMappingModeCómo se asignan los datos a la geometría: CONTROL_POINT, POLYGON_VERTEX, POLYGON, etc.
referenceModeReferenceModeCómo se utilizan los índices: DIRECT o INDEX_TO_DIRECT.

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

Añade una capa de coordenadas UV a la malla. Este es el método preferido para adjuntar datos de coordenadas de textura.

MethodsMethodsMethods
uvMappingTextureMappingEl propósito del canal UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, etc.
mappingModeMappingModeCómo se asignan los UV a los elementos de geometría.
referenceModeReferenceModeModo de indexado: DIRECT o INDEX_TO_DIRECT.

Devuelve: 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étodos booleanos y de optimización (stubs)

Los siguientes métodos existen en Mesh pero son esbozos que devuelven una copia del mesh original sin realizar su operación prevista.

Importante: union, difference, intersect, y doBoolean son métodos estáticos, no métodos de instancia. Llámalos como Mesh.union(a, b), no a.union(b).

MethodsTipo de retornoMethods
static Mesh.union(Mesh a, Mesh b)MeshStub: devuelve una copia de a. Destinado a la unión CSG.
static Mesh.difference(Mesh a, Mesh b)MeshStub: devuelve una copia de a. Destinado a la sustracción CSG.
static Mesh.intersect(Mesh a, Mesh b)MeshStub: devuelve una copia de a. Destinado a la intersección CSG.
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb)MeshStub: devuelve una copia de a. Destinado a CSG general con transformaciones.
optimize(boolean removeVertices)MeshStub: devuelve un clon. Sobrecargas de cuatro parámetros: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float).
optimize2(boolean removeVertices)MeshStub: devuelve un clon. Punto de entrada de optimización alternativa.

Ver también

 Español