Class Mesh
Paket: @aspose/3d (v24.12.0)
Mesh je također dostupan putem uvoza pod-puta @aspose/3d/entities.
Mesh je primarna entiteta poligonalne geometrije u @aspose/3d. Pohranjuje položaje vrhova kao kontrolne točke, definira poligonalna lica pomoću popisa indeksa vrhova i podržava više slojeva podataka elemenata vrhova poput normala i UV koordinata.
export class Mesh extends GeometryA3DObject ← SceneObject ← Entity ← Geometry ← Mesh
Izradite jedinstveni trokutni mesh, pričvrstite ga na scenu i spremite u 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
controlPoints | Vector4[] | Položaji vrhova mreže. Svaka točka koristi homogenog koordinata (x, y, z, w). Dodajte točke tako da ih gurnete u ovaj niz prije definiranja poligona. |
polygonCount | number | Samo za čitanje. Broj poligona (lica) trenutno definiranih na mreži. |
polygons | number[][] | Samo za čitanje. Tablica indeksa poligona. Svaki unos je niz indeksa kontrolnih točaka koji definiraju jedno lice. |
edges | number[] | Popis rubova, koji se koristi za označavanje oštrih rubova i ponderiranje nabora. |
vertexElements | VertexElement[] | Zbirka slojeva elemenata vrhova (normale, UV-ovi, boje vrhova, itd.) pričvršćenih uz ovu mrežu. |
visible | boolean | Određuje je li mreža renderirana. Zadano je true. |
castShadows | boolean | Određuje baca li mreža sjene u podržanim rendererima. Zadano je true. |
receiveShadows | boolean | Određuje prima li mreža sjene od drugih objekata. Zadano je true. |
createPolygon(…indices)
Definira novo poligonalno lice koristeći navedene indekse kontrolnih točaka. Indeksi moraju referencirati valjane položaje u controlPoints.
createPolygon(...indices: number[]): void...indices number[]
Tri ili više zero-based indeksa u controlPoints niz, u smjeru suprotnom od kazaljke na satu.
void
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()
Pretvara sve ne-trokutne poligone u ovom mesh-u u trokute. Vraća triangulirani mesh (može biti ista instanca ili nova).
triangulate(): MeshMesh
Triangulirani mesh.
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()
Vraća mrežu kao Mesh instanca. Za Mesh objekti ovo je identična operacija; metoda je smislenija na primitivnim tipovima geometrije koji nasljeđuju od Geometry.
toMesh(): MeshMesh
Ova instanca mreže.
static union(a, b)
NOT IMPLEMENTED. Ova metoda je definirana u API sučelju, ali baca Error('union is not implemented') u vrijeme izvođenja. Nemojte je pozivati u produkcijskom kodu.
Izvršava Boolean uniju dviju mreža. Rezultat sadrži kombinirani volumen oba ulaza.
static union(a: Mesh, b: Mesh): Mesha Mesh
Prvi operand mreže.
b Mesh
Drugi operand mreže.
Mesh
Nova mreža koja predstavlja uniju a i b.
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. Ova metoda je definirana u API sučelju, ali baca Error('difference is not implemented') u vrijeme izvođenja. Nemojte je pozivati u produkcijskom kodu.
Izvršava Booleovu razliku, oduzimajući volumen mreže b od mreže a.
static difference(a: Mesh, b: Mesh): Mesha Mesh
Osnovna mreža.
b Mesh
Mreža iz koje se oduzima a.
Mesh
Nova mreža koja predstavlja a minus b.
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. Ova metoda je definirana u API sučelju, ali baca Error('intersect is not implemented') u vrijeme izvođenja. Nemojte je pozivati u produkcijskom kodu.
Izvršava Booleovu intersekciju dviju mreža. Rezultat sadrži samo preklapajući volumen.
static intersect(a: Mesh, b: Mesh): Mesha Mesh
Prvi operand mreže.
b Mesh
Drugi operand mreže.
Mesh
Novi mesh koji predstavlja presjek a i b.
import { Mesh } from '@aspose/3d/entities';
const overlap = Mesh.intersect(meshA, meshB);
console.log(`Intersection polygon count: ${overlap.polygonCount}`);createElement(type, mapping?, reference?)
Stvara novi VertexElement podatkovni sloj na ovom meshu za prilagođene atribute po vrhu.
createElement(
type: VertexElementType,
mapping?: MappingMode,
reference?: ReferenceMode
): VertexElementtype VertexElementType
Vrsta vertex atributa koji se stvara (na primjer, VertexElementType.Normal).
mapping MappingMode (opcionalno)
Kako se podaci elementa mapiraju na topologiju mesh-a. Zadano je MappingMode.ControlPoint.
reference ReferenceMode (opcionalno)
Kako indeksi elementa referenciraju niz podataka. Zadano je ReferenceMode.Direct.
VertexElement
Novo stvoreni sloj elementa vrha.
createElementUV(mapping, mappingMode?, referenceMode?)
Stvara UV koordinatni sloj na ovoj mreži.
createElementUV(
mapping: TextureMapping,
mappingMode?: MappingMode,
referenceMode?: ReferenceMode
): VertexElementUVmapping TextureMapping
UV kanal koji se stvara (na primjer, TextureMapping.Diffuse).
mappingMode MappingMode (opcionalno)
Kako se UV koordinate mapiraju na vrhove.
referenceMode ReferenceMode (opcionalno)
Kako UV podaci indeksa referenciraju UV niz.
VertexElementUV
Nedavno kreirani UV elementni sloj.
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}`);