Class Mesh

Paquet: @aspose/3d (v24.12.0)

Mesh també està disponible mitjançant la importació de subcamí @aspose/3d/entities.

Mesh és l’entitat principal de geometria de polígons a @aspose/3d. Emmagatzema les posicions dels vèrtexs com a punts de control, defineix les cares dels polígons mitjançant llistes d’índexs de vèrtexs i admet diverses capes de dades d’elements de vèrtex, com ara normals i coordenades UV.

export class Mesh extends Geometry

Properties

A3DObject ← SceneObject ← Entity ← Geometry ← Mesh

Properties

Construeix una malla de triangle única, adjunta-la a l’escena i desa-la a 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

Properties

PropertiesPropertiesProperties
controlPointsVector4[]Les posicions dels vèrtexs de la malla. Cada punt utilitza coordenades homogènies (x, y, z, w). Afegeix punts afegint-los a aquesta matriu abans de definir els polígons.
polygonCountnumberNomés de lectura. El nombre de polígons (caires) actualment definits a la malla.
polygonsnumber[][]Només de lectura. La taula d’índexs de polígons. Cada entrada és una matriu d’índexs de punts de control que defineixen una cara.
edgesnumber[]La llista d’arestes, utilitzada per al marcatge d’arestes dures i el ponderació de plecs.
vertexElementsVertexElement[]La col·lecció de capes d’elements de vèrtex (normals, UVs, colors de vèrtex, etc.) adjuntada a aquesta malla.
visiblebooleanIndica si la malla es renderitza. Per defecte és true.
castShadowsbooleanIndica si la malla projecta ombres en els renderitzadors compatibles. Per defecte és true.
receiveShadowsbooleanIndica si la malla rep ombres d’altres objectes. Per defecte és true.

Properties

createPolygon(…indices)

Defineu una nova cara de polígon utilitzant els índexs de punts de control proporcionats. Els índexs han de referir-se a posicions vàlides a controlPoints.

createPolygon(...indices: number[]): void

Properties

...indices number[]

Tres o més índexs basats en zero a controlPoints matriu, en ordre d’enrotllament antihorari.

Properties

void

Properties

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

Converteix tots els polígons no triangulars d’aquesta malla en triangles. Retorna la malla triangulada (pot ser la mateixa instància o una de nova).

triangulate(): Mesh

Properties

Mesh

La malla triangulada.

Properties

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

Retorna la malla com a Mesh instància. Per a Mesh objectes això és una operació d’identitat; el mètode té més sentit en tipus de geometria primitiva que hereten de Geometry.

toMesh(): Mesh

Properties

Mesh

Aquesta instància de malla.


static union(a, b)

NOT IMPLEMENTED. Aquest mètode està definit a la interfície de l’API però llança Error('union is not implemented') en temps d’execució. No l’engegueu al codi de producció.

Realitza una unió booleana de dues malles. El resultat conté el volum combinat de les dues entrades.

static union(a: Mesh, b: Mesh): Mesh

Properties

a Mesh

El primer operand de malla.

b Mesh

El segon operand de malla.

Properties

Mesh

Una nova malla que representa la unió de a i b.

Properties

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. Aquest mètode està definit a la interfície de l’API però llança Error('difference is not implemented') en temps d’execució. No l’engegueu al codi de producció.

Realitza una diferència booleana, restant el volum de la malla b de la malla a.

static difference(a: Mesh, b: Mesh): Mesh

Properties

a Mesh

La malla base.

b Mesh

La malla de la qual es resta a.

Properties

Mesh

Una nova malla que representa a menys b.

Properties

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. Aquest mètode està definit a la interfície de l’API però llança Error('intersect is not implemented') en temps d’execució. No l’executeu en codi de producció.

Realitza una intersecció booleana de dues malles. El resultat conté només el volum superposat.

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

Properties

a Mesh

El primer operand de malla.

b Mesh

El segon operand de malla.

Properties

Mesh

Una nova malla que representa la intersecció de a i b.

Properties

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 nova VertexElement capa de dades en aquesta malla per a atributs personalitzats per vèrtex.

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

Properties

type VertexElementType

El tipus d’atribut de vèrtex a crear (per exemple, VertexElementType.Normal).

mapping MappingMode (opcional)

Com es mapegen les dades de l’element a la topologia de la malla. Per defecte MappingMode.ControlPoint.

reference ReferenceMode (opcional)

Com fan referència els índexs de l’element a la matriu de dades. Per defecte ReferenceMode.Direct.

Properties

VertexElement

La capa d’element de vèrtex acabada de crear.


createElementUV(mapping, mappingMode?, referenceMode?)

Crea una capa de coordenades UV en aquesta malla.

createElementUV(
  mapping: TextureMapping,
  mappingMode?: MappingMode,
  referenceMode?: ReferenceMode
): VertexElementUV

Properties

mapping TextureMapping

El canal UV a crear (per exemple, TextureMapping.Diffuse).

mappingMode MappingMode (opcional)

Com es mapegen les coordenades UV als vèrtexs.

referenceMode ReferenceMode (opcional)

Com les dades d’índex UV fan referència a la matriu UV.

Properties

VertexElementUV

La capa d’element UV acabada de crear.

Properties

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}`);
 Català