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
| Name | Type | Access | Description |
|---|---|---|---|
edges | number[] | Read | Gets the edges. |
polygonCount | number | Read | Gets the polygon count. |
polygons | number[][] | Read | Gets the polygons. |
deformers | any[] | Read | Gets the deformers. |
| Signature | Description |
|---|---|
| `constructor(name: string | null, _heightMap: any, _transform: any, _triMesh: boolean |
createPolygon() | Adds a new polygon to the mesh |
getPolygonSize(index: number) → number | Returns the number of vertices in the polygon at the given index |
toMesh() → Mesh | Returns a Mesh instance representing the current object (identity conversion) |
optimize(_vertexElements: boolean, _toleranceControlPoint: number, _toleranceNormal: number, _toleranceUV: number) → Mesh | Not implemented in the FOSS edition — throws at runtime. Reduces mesh complexity using vertex element flag and tolerance values for control points, normals, and UVs |
doBoolean(_op: any, _a: Mesh, _transformA: any, _b: Mesh, _transformB: any) → Mesh | Not implemented in the FOSS edition — throws at runtime. Performs a boolean operation defined by _op on meshes _a and _b with respective transforms |
isManifold() → boolean | Not implemented in the FOSS edition — throws at runtime. Returns true if manifold is set. |
union(_a: Mesh, _b: Mesh) → Mesh | Not implemented in the FOSS edition — throws at runtime. Returns a new Mesh that is the union of meshes _a and _b |
difference(_a: Mesh, _b: Mesh) → Mesh | Not implemented in the FOSS edition — throws at runtime. Returns a new Mesh that is the difference of mesh _a minus mesh _b |
intersect(_a: Mesh, _b: Mesh) → Mesh | Not implemented in the FOSS edition — throws at runtime. |
triangulate() → Mesh | Converts all polygons in the mesh to triangles and returns the mesh |
getBoundingBox() → any | Returns the bounding box. |
getEntityRendererKey() → any | Not implemented in the FOSS edition — throws at runtime. Returns the entity renderer key. |
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
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`.
```typescript
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
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ść.
```typescript
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
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.
```typescript
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}`);