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 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

ImageRenderOptionsImageRenderOptionsImageRenderOptions
controlPointsVector4[]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.
polygonCountnumberTylko do odczytu. Liczba wielokątów (ścian) aktualnie zdefiniowanych w siatce.
polygonsnumber[][]Tylko do odczytu. Tabela indeksów wielokątów. Każdy wpis jest tablicą indeksów punktów kontrolnych definiujących jedną ścianę.
edgesnumber[]Lista krawędzi, używana do oznaczania twardych krawędzi i ważenia załamań.
vertexElementsVertexElement[]Zbiór warstw elementów wierzchołkowych (normals, UVs, vertex colors, itp.) dołączonych do tej siatki.
visiblebooleanCzy siatka jest renderowana. Domyślnie jest true.
castShadowsbooleanCzy siatka rzuca cienie w obsługiwanych rendererach. Domyślnie jest true.
receiveShadowsbooleanCzy 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[]): 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

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

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

ImageRenderOptions

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