Class Mesh

Paket: @aspose/3d (v24.12.0)

Mesh ist ebenfalls über den Sub-Pfad-Import verfügbar @aspose/3d/entities.

Mesh ist die primäre Polygongeometrie-Entität in @aspose/3d. Es speichert Scheitelpositionen als Kontrollpunkte, definiert Polygonflächen durch Listen von Scheitelindizes und unterstützt mehrere Datenebenen für Scheitel-Elemente wie Normalen und UV-Koordinaten.

export class Mesh extends Geometry

Properties

A3DObject ← SceneObject ← Entity ← Geometry ← Mesh

Properties

Erstelle ein einzelnes Dreiecks‑Mesh, füge es der Szene hinzu und speichere es als 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

Properties

PropertiesPropertiesProperties
controlPointsVector4[]Die Scheitelpositionen des Meshs. Jeder Punkt verwendet homogene Koordinaten (x, y, z, w). Fügen Sie Punkte hinzu, indem Sie sie in dieses Array schieben, bevor Sie Polygone definieren.
polygonCountnumberSchreibgeschützt. Die Anzahl der Polygone (Flächen), die derzeit im Mesh definiert sind.
polygonsnumber[][]Schreibgeschützt. Die Polygon-Indextabelle. Jeder Eintrag ist ein Array von Kontrollpunktindizes, das eine Fläche definiert.
edgesnumber[]Die Kanteliste, verwendet für die Kennzeichnung von harten Kanten und die Gewichtung von Falten.
vertexElementsVertexElement[]Die Sammlung von Vertex-Elementschichten (Normalen, UVs, Vertex-Farben usw.), die an diesem Mesh angehängt sind.
visiblebooleanOb das Mesh gerendert wird. Standard ist true.
castShadowsbooleanOb das Mesh in unterstützten Renderern Schatten wirft. Standard ist true.
receiveShadowsbooleanOb das Mesh Schatten von anderen Objekten empfängt. Standard ist true.

Properties

createPolygon(…indices)

Definiert ein neues Polygon‑Face unter Verwendung der bereitgestellten Kontrollpunktindizes. Indizes müssen gültige Positionen referenzieren in controlPoints.

createPolygon(...indices: number[]): void

Properties

...indices number[]

Drei oder mehr nullbasierte Indizes in das controlPoints Array, in gegen den Uhrzeigersinn verlaufender Reihenfolge.

Properties

void

Properties

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

Konvertiert alle nicht‑dreieckigen Polygone in diesem Mesh in Dreiecke. Gibt das triangulierte Mesh zurück (kann dieselbe Instanz oder eine neue sein).

triangulate(): Mesh

Properties

Mesh

Das triangulierte Mesh.

Properties

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

Gibt das Mesh zurück als ein Mesh Instanz. Für Mesh Objekte ist dies eine Identitätsoperation; die Methode ist bei primitiven Geometrietypen, die erben von, sinnvoller. Geometry.

toMesh(): Mesh

Properties

Mesh

Diese Mesh-Instanz.


static union(a, b)

NOT IMPLEMENTED. Diese Methode ist in der API-Oberfläche definiert, wirft jedoch Error('union is not implemented') zur Laufzeit. Rufen Sie sie nicht im Produktionscode auf.

Führt eine boolesche Vereinigung von zwei Meshes durch. Das Ergebnis enthält das kombinierte Volumen beider Eingaben.

static union(a: Mesh, b: Mesh): Mesh

Properties

a Mesh

Der erste Mesh‑Operand.

b Mesh

Der zweite Mesh‑Operand.

Properties

Mesh

Ein neues Mesh, das die Vereinigung von a und b.

Properties

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. Diese Methode ist in der API-Oberfläche definiert, wirft jedoch Error('difference is not implemented') zur Laufzeit. Rufen Sie sie nicht im Produktionscode auf.

Führt eine boolesche Differenz aus, indem das Volumen des mesh subtrahiert wird b von mesh a.

static difference(a: Mesh, b: Mesh): Mesh

Properties

a Mesh

Das Basis‑Mesh.

b Mesh

Das Mesh, von dem subtrahiert wird a.

Properties

Mesh

Ein neues Mesh, das a minus b.

Properties

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. Diese Methode ist in der API-Oberfläche definiert, wirft jedoch Error('intersect is not implemented') zur Laufzeit. Rufen Sie sie nicht im Produktionscode auf.

Führt eine boolesche Schnittmenge zweier Meshes durch. Das Ergebnis enthält nur das überlappende Volumen.

static intersect(a: Mesh, b: Mesh): Mesh

Properties

a Mesh

Der erste Mesh‑Operand.

b Mesh

Der zweite Mesh‑Operand.

Properties

Mesh

Ein neues Mesh, das die Schnittmenge von a und b.

Properties

import { Mesh } from '@aspose/3d/entities';

const overlap = Mesh.intersect(meshA, meshB);
console.log(`Intersection polygon count: ${overlap.polygonCount}`);

createElement(type, mapping?, reference?)

Erstellt ein neues VertexElement Datenebene auf diesem Mesh für benutzerdefinierte Pro‑Vertex-Attribute.

createElement(
  type: VertexElementType,
  mapping?: MappingMode,
  reference?: ReferenceMode
): VertexElement

Properties

type VertexElementType

Die Art des zu erstellenden Vertex-Attributs (zum Beispiel, VertexElementType.Normal).

mapping MappingMode (optional)

Wie die Elementdaten auf die Mesh-Topologie abgebildet werden. Standardwert ist MappingMode.ControlPoint.

reference ReferenceMode (optional)

Wie die Elementindizes auf das Datenarray verweisen. Standardwert ist ReferenceMode.Direct.

Properties

VertexElement

Die neu erstellte Vertex-Element-Schicht.


createElementUV(mapping, mappingMode?, referenceMode?)

Erstellt eine UV-Koordinatenschicht in diesem Mesh.

createElementUV(
  mapping: TextureMapping,
  mappingMode?: MappingMode,
  referenceMode?: ReferenceMode
): VertexElementUV

Properties

mapping TextureMapping

Der UV-Kanal, der erstellt werden soll (zum Beispiel, TextureMapping.Diffuse).

mappingMode MappingMode (optional)

Wie UV-Koordinaten auf die Vertices abgebildet werden.

referenceMode ReferenceMode (optional)

Wie UV-Indexdaten auf das UV-Array verweisen.

Properties

VertexElementUV

Das neu erstellte UV-Element-Layer.

Properties

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