Class Mesh
Pakiet: @aspose/3d (v24.12.0)
Mesh jest również dostępny poprzez import podścieżki @aspose/3d/entities.
Mesh jest podstawowym bytem geometrii wielokątnej w @aspose/3d. Przechowuje pozycje wierzchołków jako punkty kontrolne, definiuje powierzchnie wielokątów za pomocą list indeksów wierzchołków i obsługuje wiele warstw danych elementów wierzchołka, takich jak normalne i współrzędne UV.
export class Mesh extends GeometryImageRenderOptions
A3DObject ← SceneObject ← Entity ← Geometry ← Mesh
ImageRenderOptions
Zbuduj pojedynczą siatkę trójkątów, dołącz ją do sceny i zapisz jako 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
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|
controlPoints | Vector4[] | Pozycje wierzchołków siatki. Każdy punkt używa współrzędnych jednorodnych (x, y, z, w). Dodaj punkty, wypychając je do tej tablicy przed definiowaniem wielokątów. |
polygonCount | number | Tylko do odczytu. Liczba wielokątów (ścian) aktualnie zdefiniowanych w siatce. |
polygons | number[][] | Tylko do odczytu. Tabela indeksów wielokątów. Każdy wpis jest tablicą indeksów punktów kontrolnych definiujących jedną ścianę. |
edges | number[] | Lista krawędzi, używana do oznaczania twardych krawędzi i ważenia załamań. |
vertexElements | VertexElement[] | Zbiór warstw elementów wierzchołkowych (normals, UVs, vertex colors, itp.) dołączonych do tej siatki. |
visible | boolean | Czy siatka jest renderowana. Domyślnie jest true. |
castShadows | boolean | Czy siatka rzuca cienie w obsługiwanych rendererach. Domyślnie jest true. |
receiveShadows | boolean | Czy siatka odbiera cienie od innych obiektów. Domyślnie jest true. |
ImageRenderOptions
createPolygon(…indices)
Definiuje nową powierzchnię wielokąta przy użyciu podanych indeksów punktów kontrolnych. Indeksy muszą odwoływać się do prawidłowych pozycji w controlPoints.
createPolygon(...indices: number[]): voidImageRenderOptions
...indices number[]
Trzy lub więcej indeksów zerobazowych w controlPoints tablicy, w kolejności przeciwnie do ruchu wskazówek zegara.
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()
Konwertuje wszystkie nie‑trójkątne wielokąty w tej siatce na trójkąty. Zwraca siatkę po triangulacji (może być tym samym obiektem lub nowym).
triangulate(): MeshImageRenderOptions
Mesh
Triangulowana siatka.
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()
Zwraca siatkę jako Mesh instancję. Dla Mesh obiektów jest to operacja tożsamościowa; metoda ma większe znaczenie w przypadku prymitywnych typów geometrii, które dziedziczą po Geometry.
toMesh(): MeshImageRenderOptions
Mesh
Ta instancja siatki.
static union(a, b)
NOT IMPLEMENTED. Ta metoda jest zdefiniowana w interfejsie API, ale rzuca Error('union is not implemented') w czasie wykonywania. Nie wywołuj jej w kodzie produkcyjnym.
Wykonuje operację Boolean union dwóch siatek. Wynik zawiera połączoną objętość obu wejść.
static union(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
Pierwszy operand siatki.
b Mesh
Drugi operand siatki.
ImageRenderOptions
Mesh
Nowa siatka reprezentująca sumę 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. Ta metoda jest zdefiniowana w interfejsie API, ale rzuca Error('difference is not implemented') w czasie wykonywania. Nie wywołuj jej w kodzie produkcyjnym.
Wykonuje różnicę boolowską, odejmując objętość siatki b z siatki a.
static difference(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
Podstawowa siatka.
b Mesh
Siatka, od której odejmować a.
ImageRenderOptions
Mesh
Nowa siatka reprezentująca 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. Ta metoda jest zdefiniowana w warstwie API, ale rzuca Error('intersect is not implemented') w czasie wykonywania. Nie wywołuj jej w kodzie produkcyjnym.
Wykonuje logiczne przecięcie dwóch siatek. Wynik zawiera jedynie nakładającą się objętość.
static intersect(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
Pierwszy operand siatki.
b Mesh
Drugi operand siatki.
ImageRenderOptions
Mesh
Nowa siatka reprezentująca przecięcie 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?)
Tworzy nowy VertexElement warstwa danych na tej siatce dla niestandardowych atrybutów wierzchołkowych.
createElement(
type: VertexElementType,
mapping?: MappingMode,
reference?: ReferenceMode
): VertexElementImageRenderOptions
type VertexElementType
Rodzaj atrybutu wierzchołka do utworzenia (na przykład, VertexElementType.Normal).
mapping MappingMode (opcjonalnie)
Jak dane elementu są mapowane na topologię siatki. Domyślnie MappingMode.ControlPoint.
reference ReferenceMode (opcjonalnie)
Jak indeksy elementów odwołują się do tablicy danych. Domyślnie ReferenceMode.Direct.
ImageRenderOptions
VertexElement
Nowo utworzona warstwa elementu wierzchołka.
createElementUV(mapping, mappingMode?, referenceMode?)
Tworzy warstwę współrzędnych UV na tej siatce.
createElementUV(
mapping: TextureMapping,
mappingMode?: MappingMode,
referenceMode?: ReferenceMode
): VertexElementUVImageRenderOptions
mapping TextureMapping
Kanał UV do utworzenia (na przykład, TextureMapping.Diffuse).
mappingMode MappingMode (opcjonalny)
Jak współrzędne UV są mapowane na wierzchołki.
referenceMode ReferenceMode (opcjonalny)
Jak dane indeksu UV odwołują się do tablicy UV.
ImageRenderOptions
VertexElementUV
Nowo utworzona warstwa elementu UV.
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}`);