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 Geometry

Examples

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

NameTypeAccessDescription
edgesnumber[]ReadGets the edges.
polygonCountnumberReadGets the polygon count.
polygonsnumber[][]ReadGets the polygons.
deformersany[]ReadGets the deformers.
SignatureDescription
`constructor(name: stringnull, _heightMap: any, _transform: any, _triMesh: boolean
createPolygon()Adds a new polygon to the mesh
getPolygonSize(index: number)numberReturns the number of vertices in the polygon at the given index
toMesh()MeshReturns a Mesh instance representing the current object (identity conversion)
optimize(_vertexElements: boolean, _toleranceControlPoint: number, _toleranceNormal: number, _toleranceUV: number)MeshNot implemented in the FOSS edition — throws at runtime. Reduces mesh complexity using vertex element flag and tolerance values for control points, normals, and UVs
doBoolean(_op: any, _a: Mesh, _transformA: any, _b: Mesh, _transformB: any)MeshNot implemented in the FOSS edition — throws at runtime. Performs a boolean operation defined by _op on meshes _a and _b with respective transforms
isManifold()booleanNot implemented in the FOSS edition — throws at runtime. Returns true if manifold is set.
union(_a: Mesh, _b: Mesh)MeshNot implemented in the FOSS edition — throws at runtime. Returns a new Mesh that is the union of meshes _a and _b
difference(_a: Mesh, _b: Mesh)MeshNot implemented in the FOSS edition — throws at runtime. Returns a new Mesh that is the difference of mesh _a minus mesh _b
intersect(_a: Mesh, _b: Mesh)MeshNot implemented in the FOSS edition — throws at runtime.
triangulate()MeshConverts all polygons in the mesh to triangles and returns the mesh
getBoundingBox()anyReturns the bounding box.
getEntityRendererKey()anyNot implemented in the FOSS edition — throws at runtime. Returns the entity renderer key.

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[]): void

Examples

...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(): Mesh

Examples

Mesh

La malla triangulada.

Examples

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`.

```typescript
toMesh(): Mesh

Examples

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

Examples

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

Examples

a Mesh

La malla base.

b Mesh

El mesh del que restar a.

Examples

Mesh

Una nueva mesh que representa a menos b.

Examples

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.

```typescript
static intersect(a: Mesh, b: Mesh): Mesh

Examples

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

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.

```typescript
createElement(
  type: VertexElementType,
  mapping?: MappingMode,
  reference?: ReferenceMode
): VertexElement

Examples

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

Examples

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}`);
 Español