Class Mesh

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

Mesh este disponibil și prin importul sub-calei @aspose/3d/entities.

Mesh este entitatea principală de geometrie poligonală în @aspose/3d. Aceasta stochează pozițiile vârfurilor ca puncte de control, definește fețele poligonale prin liste de indici de vârf și suportă mai multe straturi de date ale elementelor de vârf, cum ar fi normalele și coordonatele UV.

export class Mesh extends Geometry

ImageRenderOptions

A3DObject ← SceneObject ← Entity ← Geometry ← Mesh

ImageRenderOptions

Construiește o rețea de triunghiuri unică, atașeaz‑o la scenă și salveaz‑o în format 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

ImageRenderOptions

ImageRenderOptionsImageRenderOptionsImageRenderOptions
controlPointsVector4[]Pozițiile vârfurilor rețelei. Fiecare punct folosește coordonate omogene (x, y, z, w). Adăugați puncte prin inserarea în acest tablou înainte de a defini poligoanele.
polygonCountnumberDoar citire. Numărul de poligoane (fețe) definite în prezent pe rețea.
polygonsnumber[][]Doar citire. Tabelul de indici ai poligoanelor. Fiecare intrare este un tablou de indici de puncte de control care definesc o față.
edgesnumber[]Lista de muchii, utilizată pentru marcarea muchiilor dure și ponderarea pliurilor.
vertexElementsVertexElement[]Colecția de straturi de elemente de vârf (normale, UV-uri, culori de vârf etc.) atașate acestui mesh.
visiblebooleanDacă mesh-ul este redat. Implicit este true.
castShadowsbooleanDacă mesh-ul proiectează umbre în rendererele suportate. Implicit este true.
receiveShadowsbooleanDacă mesh-ul primește umbre de la alte obiecte. Implicit este true.

ImageRenderOptions

createPolygon(…indices)

Definește o nouă față poligonală utilizând indicii punctelor de control furnizați. Indicii trebuie să facă referire la poziții valide în controlPoints.

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

ImageRenderOptions

...indices number[]

Trei sau mai mulți indici bazați pe zero în controlPoints array, în ordine de înfășurare în sensul invers acelor de ceasornic.

ImageRenderOptions

void

ImageRenderOptions

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

Convertește toate poligoanele ne‑triunghiulare din această rețea în triunghiuri. Returnează rețeaua triangulată (poate fi aceeași instanță sau una nouă).

triangulate(): Mesh

ImageRenderOptions

Mesh

Rețeaua triangulată.

ImageRenderOptions

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

Returnează mesh-ul ca un Mesh instanță. Pentru Mesh obiecte aceasta este o operație de identitate; metoda este mai semnificativă pe tipurile de geometrie primitive care moștenesc de la Geometry.

toMesh(): Mesh

ImageRenderOptions

Mesh

Această instanță de mesh.


static union(a, b)

NOT IMPLEMENTED. Această metodă este definită în suprafața API-ului, dar aruncă Error('union is not implemented') în timpul execuției. Nu o apela în codul de producție.

Efectuează o uniune booleană a două mesh-uri. Rezultatul conține volumul combinat al ambelor intrări.

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

ImageRenderOptions

a Mesh

Primul operand mesh.

b Mesh

Al doilea operand mesh.

ImageRenderOptions

Mesh

Un nou mesh care reprezintă uniunea dintre a și b.

ImageRenderOptions

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. Această metodă este definită în suprafața API-ului, dar aruncă Error('difference is not implemented') în timpul execuției. Nu o apela în codul de producție.

Efectuează o diferență booleană, scăzând volumul mesh b din mesh a.

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

ImageRenderOptions

a Mesh

Mesh-ul de bază.

b Mesh

Mesh-ul din care se scade a.

ImageRenderOptions

Mesh

Un mesh nou care reprezintă a minus b.

ImageRenderOptions

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. Această metodă este definită în suprafața API-ului, dar aruncă Error('intersect is not implemented') în timpul execuției. Nu o apela în codul de producție.

Efectuează o intersecție booleană a două mesh-uri. Rezultatul conține doar volumul suprapus.

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

ImageRenderOptions

a Mesh

Primul operand mesh.

b Mesh

Al doilea operand mesh.

ImageRenderOptions

Mesh

Un nou mesh care reprezintă intersecția dintre a și b.

ImageRenderOptions

import { Mesh } from '@aspose/3d/entities';

const overlap = Mesh.intersect(meshA, meshB);
console.log(`Intersection polygon count: ${overlap.polygonCount}`);

createElement(type, mapping?, reference?)

Creează un nou VertexElement strat de date pe acest mesh pentru atribute personalizate per-vertex.

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

ImageRenderOptions

type VertexElementType

Tipul de atribut de vârf de creat (de exemplu, VertexElementType.Normal).

mapping MappingMode (opțional)

Cum sunt mapate datele elementului la topologia mesh-ului. Implicit este MappingMode.ControlPoint.

reference ReferenceMode (opțional)

Cum indicii elementului fac referire la matricea de date. Implicit este ReferenceMode.Direct.

ImageRenderOptions

VertexElement

Stratul de element de vârf creat recent.


createElementUV(mapping, mappingMode?, referenceMode?)

Creează un strat de coordonate UV pe această rețea.

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

ImageRenderOptions

mapping TextureMapping

Canalul UV de creat (de exemplu, TextureMapping.Diffuse).

mappingMode MappingMode (opțional)

Cum sunt mapate coordonatele UV la vârfuri.

referenceMode ReferenceMode (opțional)

Cum referă datele indicilor UV la matricea UV.

ImageRenderOptions

VertexElementUV

Stratul de element UV nou creat.

ImageRenderOptions

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}`);
 Română