Class Mesh
Paquete: @aspose/3d (v24.12.0)
Mesh también está disponible mediante la importación de subruta @aspose/3d/entities.
Mesh es la entidad principal de geometría de polígonos en @aspose/3d. Almacena las posiciones de los vértices como puntos de control, define las caras de los polígonos mediante listas de índices de vértices y admite múltiples capas de datos de elementos de vértice, como normales y coordenadas UV.
export class Mesh extends GeometryExamples
A3DObject ← SceneObject ← Entity ← Geometry ← Mesh
Examples
Cree una malla de un solo triángulo, adjúntela a la escena y guárdela en GLB.
import { Scene, Vector4 } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';
// Create the mesh and define three control points (vertices)
const mesh = new Mesh();
mesh.controlPoints.push(
new Vector4(0, 1, 0, 1), // apex
new Vector4(-1, 0, 0, 1), // bottom-left
new Vector4(1, 0, 0, 1), // bottom-right
);
// Define one triangular polygon using vertex indices
mesh.createPolygon(0, 1, 2);
// Attach the mesh to the scene and save (extension infers GLB format)
const scene = new Scene();
scene.rootNode.createChildNode('triangle', mesh);
scene.save('triangle.glb');
console.log(`Polygon count: ${mesh.polygonCount}`); // 1
Examples
| Examples | Examples | Examples |
|---|---|---|
controlPoints | Vector4[] | Las posiciones de los vértices de la malla. Cada punto usa coordenadas homogéneas (x, y, z, w). Añade puntos empujándolos a este arreglo antes de definir los polígonos. |
polygonCount | number | Solo lectura. El número de polígonos (caras) actualmente definidos en la malla. |
polygons | number[][] | Solo lectura. La tabla de índices de polígonos. Cada entrada es una matriz de índices de puntos de control que definen una cara. |
edges | number[] | La lista de aristas, utilizada para marcar bordes duros y ponderar pliegues. |
vertexElements | VertexElement[] | La colección de capas de elementos de vértice (normales, UVs, colores de vértice, etc.) adjunta a esta malla. |
visible | boolean | Indica si la malla se renderiza. El valor predeterminado es true. |
castShadows | boolean | Indica si la malla proyecta sombras en los renderizadores compatibles. El valor predeterminado es true. |
receiveShadows | boolean | Indica si la malla recibe sombras de otros objetos. El valor predeterminado es true. |
Examples
createPolygon(…indices)
Define una nueva cara de polígono usando los índices de puntos de control proporcionados. Los índices deben referenciar posiciones válidas en controlPoints.
createPolygon(...indices: number[]): voidExamples
...indices number[]
Tres o más índices basados en cero en el controlPoints arreglo, en orden de enrollado antihorario.
Examples
void
Examples
import { Vector4 } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';
const mesh = new Mesh();
mesh.controlPoints.push(
new Vector4(0, 0, 0, 1),
new Vector4(1, 0, 0, 1),
new Vector4(1, 1, 0, 1),
new Vector4(0, 1, 0, 1),
);
// Define a quad as two triangles, or a single quad polygon:
mesh.createPolygon(0, 1, 2, 3);
console.log(`Polygons: ${mesh.polygonCount}`); // 1
triangulate()
Convierte todos los polígonos no triangulares de esta malla en triángulos. Devuelve la malla triangulada (puede ser la misma instancia o una nueva).
triangulate(): MeshExamples
Mesh
La malla triangulada.
Examples
import { Vector4 } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';
const mesh = new Mesh();
mesh.controlPoints.push(
new Vector4(0, 0, 0, 1),
new Vector4(1, 0, 0, 1),
new Vector4(1, 1, 0, 1),
new Vector4(0, 1, 0, 1),
);
mesh.createPolygon(0, 1, 2, 3); // quad
const triangulated = mesh.triangulate();
console.log(`Polygons after triangulation: ${triangulated.polygonCount}`); // 2
toMesh()
Devuelve la malla como una Mesh instancia. Para Mesh objetos, esto es una operación de identidad; el método es más significativo en tipos de geometría primitiva que heredan de Geometry.
toMesh(): MeshExamples
Mesh
Esta instancia de malla.
static union(a, b)
NOT IMPLEMENTED. Este método está definido en la superficie de la API pero lanza Error('union is not implemented') en tiempo de ejecución. No lo llames en código de producción.
Realiza una unión booleana de dos mallas. El resultado contiene el volumen combinado de ambas entradas.
static union(a: Mesh, b: Mesh): MeshExamples
a Mesh
El primer operando de malla.
b Mesh
El segundo operando de malla.
Examples
Mesh
Una nueva malla que representa la unión de a y b.
Examples
import { Mesh } from '@aspose/3d/entities';
// Assumes meshA and meshB are already populated Mesh instances
const combined = Mesh.union(meshA, meshB);
console.log(`Union polygon count: ${combined.polygonCount}`);static difference(a, b)
NOT IMPLEMENTED. Este método está definido en la superficie de la API pero lanza Error('difference is not implemented') en tiempo de ejecución. No lo llames en código de producción.
Realiza una diferencia booleana, restando el volumen de la malla b de la malla a.
static difference(a: Mesh, b: Mesh): MeshExamples
a Mesh
La malla base.
b Mesh
El mesh del que restar a.
Examples
Mesh
Una nueva mesh que representa a menos b.
Examples
import { Mesh } from '@aspose/3d/entities';
const result = Mesh.difference(meshA, meshB);
console.log(`Difference polygon count: ${result.polygonCount}`);static intersect(a, b)
NOT IMPLEMENTED. Este método está definido en la superficie de la API pero lanza Error('intersect is not implemented') en tiempo de ejecución. No lo llames en código de producción.
Realiza una intersección booleana de dos mallas. El resultado contiene solo el volumen superpuesto.
static intersect(a: Mesh, b: Mesh): MeshExamples
a Mesh
El primer operando de malla.
b Mesh
El segundo operando de malla.
Examples
Mesh
Una nueva mesh que representa la intersección de a y b.
Examples
import { Mesh } from '@aspose/3d/entities';
const overlap = Mesh.intersect(meshA, meshB);
console.log(`Intersection polygon count: ${overlap.polygonCount}`);createElement(type, mapping?, reference?)
Crea una nueva VertexElement capa de datos en esta malla para atributos personalizados por vértice.
createElement(
type: VertexElementType,
mapping?: MappingMode,
reference?: ReferenceMode
): VertexElementExamples
type VertexElementType
El tipo de atributo de vértice a crear (por ejemplo, VertexElementType.Normal).
mapping MappingMode (opcional)
Cómo se asignan los datos del elemento a la topología de la malla. Por defecto, MappingMode.ControlPoint.
reference ReferenceMode (opcional)
Cómo los índices del elemento hacen referencia a la matriz de datos. Por defecto, ReferenceMode.Direct.
Examples
VertexElement
La capa de elemento de vértice recién creada.
createElementUV(mapping, mappingMode?, referenceMode?)
Crea una capa de coordenadas UV en esta malla.
createElementUV(
mapping: TextureMapping,
mappingMode?: MappingMode,
referenceMode?: ReferenceMode
): VertexElementUVExamples
mapping TextureMapping
El canal UV a crear (por ejemplo, TextureMapping.Diffuse).
mappingMode MappingMode (opcional)
Cómo se asignan las coordenadas UV a los vértices.
referenceMode ReferenceMode (opcional)
Cómo los datos de índices UV hacen referencia a la matriz UV.
Examples
VertexElementUV
La capa de elemento UV recién creada.
Examples
import { Mesh } from '@aspose/3d/entities';
import { TextureMapping } from '@aspose/3d';
const mesh = new Mesh();
// ... define control points and polygons ...
const uvLayer = mesh.createElementUV(TextureMapping.Diffuse);
console.log(`UV element created: ${uvLayer !== undefined}`);