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 GeometryProperties
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
| Properties | Properties | Properties |
|---|---|---|
controlPoints | Vector4[] | 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. |
polygonCount | number | Només de lectura. El nombre de polígons (caires) actualment definits a la malla. |
polygons | number[][] | 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. |
edges | number[] | La llista d’arestes, utilitzada per al marcatge d’arestes dures i el ponderació de plecs. |
vertexElements | VertexElement[] | La col·lecció de capes d’elements de vèrtex (normals, UVs, colors de vèrtex, etc.) adjuntada a aquesta malla. |
visible | boolean | Indica si la malla es renderitza. Per defecte és true. |
castShadows | boolean | Indica si la malla projecta ombres en els renderitzadors compatibles. Per defecte és true. |
receiveShadows | boolean | Indica 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[]): voidProperties
...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(): MeshProperties
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(): MeshProperties
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): MeshProperties
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): MeshProperties
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): MeshProperties
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
): VertexElementProperties
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
): VertexElementUVProperties
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}`);