Mesh — Aspose.3D FOSS for Java
Pacote: com.aspose.threed (aspose-3d-foss 26.1.0)
Mesh armazena a geometria do polígono como uma lista de pontos de controle (posições dos vértices) e uma lista de faces do polígono. Cada face do polígono é uma lista de índices baseados em zero no array de pontos de controle. As faces podem ser triângulos, quads ou polígonos de aridade superior. Dados adicionais por vértice – normais, coordenadas UV, cores dos vértices – são anexados como VertexElement camadas.
public class Mesh extends GeometryMethods
A3DObject -> SceneObject -> Entity -> Geometry -> Mesh
Methods
Construa uma malha de triângulo único do 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");Construa uma malha de quadrado (nota: triangulate() é um stub — veja o aviso abaixo):
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() | – | Vetor de posições dos vértices. Cada entrada é um Vector4(x, y, z, w) onde w é 1.0 para dados de posição. Adicione vértices chamando add() na lista retornada. |
polygonCount | int | getPolygonCount() | – | Número de faces de polígonos definidas nesta malha. |
polygons | List<int[]> | getPolygons() | – | Todas as definições de faces como uma lista de arrays de índices. Cada array interno contém os índices dos vértices (em controlPoints) para uma face. |
edges | List<Integer> | getEdges() | – | Dados brutos de índices de arestas. Principalmente para uso interno e consultas avançadas de topologia. |
vertexElements | List<VertexElement> | getVertexElements() | – | Todas as camadas de elementos de vértice atualmente anexadas a esta malha (normais, UVs, cores, etc.). |
visible | boolean | getVisible() | setVisible(boolean) | Methods false, a malha está oculta em visualizadores que respeitam a visibilidade. |
castShadows | boolean | getCastShadows() | setCastShadows(boolean) | Se esta malha projeta sombras em renderizadores que suportam mapas de sombras. |
receiveShadows | boolean | getReceiveShadows() | setReceiveShadows(boolean) | Se esta malha recebe sombras de outra geometria que projeta sombras. |
Methods
createPolygon(int... indices)
Defina uma nova face poligonal fornecendo os índices dos vértices em ordem. Os índices referenciam posições em getControlPoints(). Aceita três ou mais índices para triângulos, quadriláteros e n-gonos.
| Methods | Methods | Methods |
|---|---|---|
indices | int... | Argumentos de índice de vértice em ordem de enrolamento (tipicamente no sentido anti-horário quando vistos 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()); // 2triangulate()
Stub: Retorna uma cópia da malha original. Destinado a dividir todos os polígonos em triângulos usando triangulação em leque, mas a lógica real de triangulação ainda não foi implementada. A malha original não é modificada.
Retorna: Mesh – uma cópia da malha original (comportamento 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()
Retorne isto Mesh como um Mesh instância. Para Mesh objetos, isso é uma operação identidade (retorna this) Geometry classe base para fornecer uma interface de conversão uniforme ao trabalhar com genéricos Geometry referências.
Retorna: Mesh
import com.aspose.threed.*;
Mesh ensureMesh(Geometry geom) {
return geom.toMesh();
}createElement(VertexElementType elementType, MappingMode mappingMode, ReferenceMode referenceMode)
Adicionar um novo VertexElement camada do tipo especificado à malha. Use isso para anexar normais, tangentes, binormais, cores de vértice e grupos de suavização.
| Methods | Methods | Methods |
|---|---|---|
elementType | VertexElementType | O tipo de dados que esta camada contém (por exemplo,., VertexElementType.NORMAL). |
mappingMode | MappingMode | Como os dados são mapeados para a geometria: CONTROL_POINT, POLYGON_VERTEX, POLYGON, etc. |
referenceMode | ReferenceMode | Como os índices são usados: DIRECT ou 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)
Adicione uma camada de coordenadas UV à malha. Este é o método preferido para anexar dados de coordenadas de textura.
| Methods | Methods | Methods |
|---|---|---|
uvMapping | TextureMapping | A finalidade do canal UV: DIFFUSE, SPECULAR, NORMAL, AMBIENT, etc. |
mappingMode | MappingMode | Como os UVs mapeiam para os elementos da geometria. |
referenceMode | ReferenceMode | Modo de indexação: DIRECT ou 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étodos Booleanos e de Otimização (Stubs)
Os seguintes métodos existem em Mesh mas são stubs que retornam uma cópia do mesh original sem executar a operação pretendida.
Importante: union, difference, intersect, e doBoolean são métodos estáticos, não métodos de instância. Chame-os como Mesh.union(a, b), não a.union(b).
| Methods | Tipo de Retorno | Methods |
|---|---|---|
static Mesh.union(Mesh a, Mesh b) | Mesh | Stub: retorna uma cópia de a. Destinado à união CSG. |
static Mesh.difference(Mesh a, Mesh b) | Mesh | Stub: retorna uma cópia de a. Destinado à subtração CSG. |
static Mesh.intersect(Mesh a, Mesh b) | Mesh | Stub: retorna uma cópia de a. Destinado à interseção CSG. |
static Mesh.doBoolean(BooleanOperation op, Mesh a, Matrix4 ma, Mesh b, Matrix4 mb) | Mesh | Stub: retorna uma cópia de a. Destinado a CSG geral com transformações. |
optimize(boolean removeVertices) | Mesh | Stub: retorna um clone. Sobrecargas de quatro parâmetros: optimize(boolean), optimize(boolean, float), optimize(boolean, float, float), optimize(boolean, float, float, float). |
optimize2(boolean removeVertices) | Mesh | Stub: retorna um clone. Ponto de entrada de otimização alternativa. |