Class Mesh
Package : @aspose/3d (v24.12.0)
Mesh est également disponible via l’importation par sous‑chemin @aspose/3d/entities.
Mesh est l’entité principale de géométrie polygonale dans @aspose/3d. Il stocke les positions des sommets sous forme de points de contrôle, définit les faces polygonales à l’aide de listes d’indices de sommets, et prend en charge plusieurs couches de données d’éléments de sommet telles que les normales et les coordonnées UV.
export class Mesh extends GeometryExamples
A3DObject ← SceneObject ← Entity ← Geometry ← Mesh
Examples
Construisez un maillage triangulaire unique, attachez‑le à la scène et enregistrez‑le au format 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
Examples
| Examples | Examples | Examples |
|---|---|---|
controlPoints | Vector4[] | Les positions des sommets du maillage. Chaque point utilise des coordonnées homogènes (x, y, z, w). Ajoutez des points en les poussant dans ce tableau avant de définir les polygones. |
polygonCount | number | Lecture seule. Le nombre de polygones (faces) actuellement définis sur le maillage. |
polygons | number[][] | Lecture seule. La table d’index des polygones. Chaque entrée est un tableau d’indices de points de contrôle qui définit une face. |
edges | number[] | La liste des arêtes, utilisée pour le marquage des arêtes dures et le pondération des plis. |
vertexElements | VertexElement[] | La collection de couches d’éléments de sommet (normales, UVs, couleurs de sommet, etc.) attachées à ce maillage. |
visible | boolean | Indique si le maillage est rendu. La valeur par défaut est true. |
castShadows | boolean | Indique si le maillage projette des ombres dans les moteurs de rendu pris en charge. La valeur par défaut est true. |
receiveShadows | boolean | Indique si le maillage reçoit des ombres d’autres objets. La valeur par défaut est true. |
Examples
createPolygon(…indices)
Définit une nouvelle face polygonale en utilisant les indices de points de contrôle fournis. Les indices doivent référencer des positions valides dans controlPoints.
createPolygon(...indices: number[]): voidExamples
...indices number[]
Trois indices ou plus basés sur zéro dans le controlPoints tableau, dans l’ordre de rotation anti-horaire.
Examples
void
Examples
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()
Convertit tous les polygones non triangulaires de ce maillage en triangles. Retourne le maillage triangulé (peut être la même instance ou une nouvelle).
triangulate(): MeshExamples
Mesh
Le maillage triangulé.
Examples
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()
Renvoie le maillage en tant que Mesh instance. Pour Mesh objets, il s’agit d’une opération d’identité ; la méthode est plus pertinente sur les types de géométrie primitive qui héritent de Geometry.
toMesh(): MeshExamples
Mesh
Cette instance de maillage.
static union(a, b)
NOT IMPLEMENTED. Cette méthode est définie dans l’interface de l’API mais lance Error('union is not implemented') à l’exécution. Ne l’appelez pas dans le code de production.
Effectue une union booléenne de deux maillages. Le résultat contient le volume combiné des deux entrées.
static union(a: Mesh, b: Mesh): MeshExamples
a Mesh
Le premier opérande de maillage.
b Mesh
Le deuxième opérande de maillage.
Examples
Mesh
Un nouveau mesh représentant l’union de a et b.
Examples
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. Cette méthode est définie dans l’interface de l’API mais lance Error('difference is not implemented') à l’exécution. Ne l’appelez pas dans le code de production.
Effectue une différence Boolean, en soustrayant le volume du mesh b du mesh a.
static difference(a: Mesh, b: Mesh): MeshExamples
a Mesh
Le maillage de base.
b Mesh
Le mesh à soustraire de a.
Examples
Mesh
Un nouveau mesh représentant a moins b.
Examples
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. Cette méthode est définie dans l’interface API mais lance Error('intersect is not implemented') à l’exécution. Ne l’appelez pas dans le code de production.
Effectue une intersection booléenne de deux maillages. Le résultat ne contient que le volume qui se chevauche.
static intersect(a: Mesh, b: Mesh): MeshExamples
a Mesh
Le premier opérande de maillage.
b Mesh
Le deuxième opérande de maillage.
Examples
Mesh
Un nouveau mesh représentant l’intersection de a et b.
Examples
import { Mesh } from '@aspose/3d/entities';
const overlap = Mesh.intersect(meshA, meshB);
console.log(`Intersection polygon count: ${overlap.polygonCount}`);createElement(type, mapping?, reference?)
Crée un nouveau VertexElement couche de données sur ce maillage pour des attributs personnalisés par sommet.
createElement(
type: VertexElementType,
mapping?: MappingMode,
reference?: ReferenceMode
): VertexElementExamples
type VertexElementType
Le type d’attribut de sommet à créer (par exemple, VertexElementType.Normal).
mapping MappingMode (facultatif)
Comment les données d’élément sont mappées à la topologie du maillage. Par défaut à MappingMode.ControlPoint.
reference ReferenceMode (facultatif)
Comment les indices d’élément référencent le tableau de données. Par défaut à ReferenceMode.Direct.
Examples
VertexElement
Le nouveau calque d’élément de sommet créé.
createElementUV(mapping, mappingMode?, referenceMode?)
Crée un calque de coordonnées UV sur ce maillage.
createElementUV(
mapping: TextureMapping,
mappingMode?: MappingMode,
referenceMode?: ReferenceMode
): VertexElementUVExamples
mapping TextureMapping
Le canal UV à créer (par exemple, TextureMapping.Diffuse).
mappingMode MappingMode (facultatif)
Comment les coordonnées UV sont mappées aux sommets.
referenceMode ReferenceMode (facultatif)
Comment les données d’index UV font référence au tableau UV.
Examples
VertexElementUV
Le calque d’élément UV nouvellement créé.
Examples
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}`);