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 Geometry

Examples

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

ExamplesExamplesExamples
controlPointsVector4[]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.
polygonCountnumberLecture seule. Le nombre de polygones (faces) actuellement définis sur le maillage.
polygonsnumber[][]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.
edgesnumber[]La liste des arêtes, utilisée pour le marquage des arêtes dures et le pondération des plis.
vertexElementsVertexElement[]La collection de couches d’éléments de sommet (normales, UVs, couleurs de sommet, etc.) attachées à ce maillage.
visiblebooleanIndique si le maillage est rendu. La valeur par défaut est true.
castShadowsbooleanIndique si le maillage projette des ombres dans les moteurs de rendu pris en charge. La valeur par défaut est true.
receiveShadowsbooleanIndique 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[]): void

Examples

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

Examples

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

Examples

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

Examples

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

Examples

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

Examples

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

Examples

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

Examples

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}`);
 Français