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 Geometry

ImageRenderOptions

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

NameTypeAccessDescription
edgesnumber[]ReadGets the edges.
polygonCountnumberReadGets the polygon count.
polygonsnumber[][]ReadGets the polygons.
deformersany[]ReadGets the deformers.
SignatureDescription
`constructor(name: stringnull, _heightMap: any, _transform: any, _triMesh: boolean
createPolygon()Adds a new polygon to the mesh
getPolygonSize(index: number)numberReturns the number of vertices in the polygon at the given index
toMesh()MeshReturns a Mesh instance representing the current object (identity conversion)
optimize(_vertexElements: boolean, _toleranceControlPoint: number, _toleranceNormal: number, _toleranceUV: number)MeshNot 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)MeshNot implemented in the FOSS edition — throws at runtime. Performs a boolean operation defined by _op on meshes _a and _b with respective transforms
isManifold()booleanNot implemented in the FOSS edition — throws at runtime. Returns true if manifold is set.
union(_a: Mesh, _b: Mesh)MeshNot 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)MeshNot 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)MeshNot implemented in the FOSS edition — throws at runtime.
triangulate()MeshConverts all polygons in the mesh to triangles and returns the mesh
getBoundingBox()anyReturns the bounding box.
getEntityRendererKey()anyNot 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[]): void

ImageRenderOptions

...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(): Mesh

ImageRenderOptions

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

ImageRenderOptions

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): Mesh

ImageRenderOptions

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): Mesh

ImageRenderOptions

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): Mesh

ImageRenderOptions

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
): VertexElement

ImageRenderOptions

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
): VertexElementUV

ImageRenderOptions

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}`);
 Polski