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

ExamplesExamplesExamples
controlPointsVector4[]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.
polygonCountnumberSolo lectura. El número de polígonos (caras) actualmente definidos en la malla.
polygonsnumber[][]Solo lectura. La tabla de índices de polígonos. Cada entrada es una matriz de índices de puntos de control que definen una cara.
edgesnumber[]La lista de aristas, utilizada para marcar bordes duros y ponderar pliegues.
vertexElementsVertexElement[]La colección de capas de elementos de vértice (normales, UVs, colores de vértice, etc.) adjunta a esta malla.
visiblebooleanIndica si la malla se renderiza. El valor predeterminado es true.
castShadowsbooleanIndica si la malla proyecta sombras en los renderizadores compatibles. El valor predeterminado es true.
receiveShadowsbooleanIndica 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[]): 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

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

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

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