Class Mesh

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

Mesh taip pat prieinamas per sub‑kelio importą @aspose/3d/entities.

Mesh yra pagrindinė daugiakampių geometrijos struktūra, esanti @aspose/3d. Ji saugo viršūnių pozicijas kaip valdymo taškus, apibrėžia daugiakampių veidus pagal viršūnių indekso sąrašus ir palaiko kelis viršūnių elementų duomenų sluoksnius, tokius kaip normalių vektoriai ir UV koordinatės.

export class Mesh extends Geometry

ImageRenderOptions

A3DObject ← SceneObject ← Entity ← Geometry ← Mesh

ImageRenderOptions

Sukurkite vieną trikampio mesh, prijunkite jį prie scenos ir išsaugokite į 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[]Tinklo (mesh) viršūnių pozicijos. Kiekvienas taškas naudoja homogenines koordinates (x, y, z, w). Pridėkite taškus įstumdami juos į šią masyvą prieš apibrėždami daugiakampius.
polygonCountnumberTik skaityti. Šiuo metu tinkle apibrėžtų daugiakampių (veidų) skaičius.
polygonsnumber[][]Tik skaityti. Daugiakampių indekso lentelė. Kiekvienas įrašas yra masyvas valdymo taškų indeksų, apibrėžiančių vieną veidą.
edgesnumber[]Kraštų sąrašas, naudojamas kietų kraštų žymėjimui ir įlenkimo svorių nustatymui.
vertexElementsVertexElement[]Viršūnių elementų sluoksnių (normalių, UV, viršūnių spalvų ir kt.) rinkinys, prijungtas prie šio tinklo.
visiblebooleanAr tinklas (mesh) yra atvaizduojamas. Numatytoji reikšmė yra true.
castShadowsbooleanAr tinklas meta šešėlius palaikomose atvaizdavimo sistemose. Numatytoji reikšmė yra true.
receiveShadowsbooleanAr tinklas gauna šešėlius iš kitų objektų. Numatytoji reikšmė yra true.

ImageRenderOptions

createPolygon(…indices)

Apibrėžia naują daugiakampio veidą naudojant pateiktus valdymo taškų indeksus. Indeksai turi nurodyti galiojančias pozicijas, esančias controlPoints.

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

ImageRenderOptions

...indices number[]

Trijų arba daugiau nulinio pagrindo indeksų į controlPoints masyvą, prieš laikrodžio rodyklės sukimo tvarka.

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

Paverčia visus netrikampius daugiakampius šiame mesh į trikampius. Grąžina trianguliuotą mesh (gali būti tas pats egzempliorius arba naujas).

triangulate(): Mesh

ImageRenderOptions

Mesh

Trianguliuotas mesh.

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

Grąžina tinklelį kaip Mesh egzempliorius. Skirta Mesh objektams tai yra identiškumo operacija; metodas yra prasmingesnis primityvių geometrijos tipų, kurie paveldi iš Geometry.

toMesh(): Mesh

ImageRenderOptions

Mesh

Ši mesh egzempliorius.


static union(a, b)

NOT IMPLEMENTED. Šis metodas apibrėžtas API sąsajoje, tačiau meta Error('union is not implemented') vykdymo metu. Nenaudokite jo gamybinėje kode.

Atlieka Boolean sujungimą dviejų mesh’ų. Rezultatas turi sujungtą abiejų įvestų tūrius.

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

ImageRenderOptions

a Mesh

Pirmasis tinklo operandas.

b Mesh

Antrasis tinklo operandas.

ImageRenderOptions

Mesh

Naujas tinklelis, vaizduojantis sujungimą a ir 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. Šis metodas apibrėžtas API sąsajoje, tačiau meta Error('difference is not implemented') vykdymo metu. Nenaudokite jo gamybinėje kode.

Atlieka Boole’o skirtumą, atimant tinklelio b iš tinklelio a.

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

ImageRenderOptions

a Mesh

Pagrindinis mesh.

b Mesh

Tinklelis, iš kurio atimama a.

ImageRenderOptions

Mesh

Naujas tinklelis, atvaizduojantis 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. Šis metodas apibrėžtas API sąsajoje, tačiau meta Error('intersect is not implemented') vykdymo metu. Nenaudokite jo gamybinėje kode.

Atlieka Boolean sankirtą tarp dviejų tinklų. Rezultatas turi tik persidengiančią tūrį.

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

ImageRenderOptions

a Mesh

Pirmasis tinklo operandas.

b Mesh

Antrasis tinklo operandas.

ImageRenderOptions

Mesh

Naujas mesh, atspindintis sankirtą su a ir 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?)

Sukuria naują VertexElement duomenų sluoksnį šiame mesh’e, skirtą pasirinktiniams per-vertex atributams.

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

ImageRenderOptions

type VertexElementType

Kuriamo vertex atributo tipas (pavyzdžiui, VertexElementType.Normal).

mapping MappingMode (pasirinktinai)

Kaip elemento duomenys susiejami su mesh topologija. Numatyta – MappingMode.ControlPoint.

reference ReferenceMode (pasirinktinai)

Kaip elemento indeksai nurodo duomenų masyvą. Numatyta – ReferenceMode.Direct.

ImageRenderOptions

VertexElement

Naujai sukurtas viršūnės elemento sluoksnis.


createElementUV(mapping, mappingMode?, referenceMode?)

Sukuria UV koordinatų sluoksnį šiame tinkle.

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

ImageRenderOptions

mapping TextureMapping

Kuriamas UV kanalas (pavyzdžiui, TextureMapping.Diffuse).

mappingMode MappingMode (pasirinktinai)

Kaip UV koordinatės susiejamos su viršūnėmis.

referenceMode ReferenceMode (pasirinktinai)

Kaip UV indekso duomenys nurodo UV masyvą.

ImageRenderOptions

VertexElementUV

Nauja sukurtas UV elementų sluoksnis.

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