Class Mesh
Пакет: @aspose/3d (v24.12.0)
Mesh също е достъпен чрез импорт на подпът @aspose/3d/entities.
Mesh е основната полигонална геометрична единица в @aspose/3d. Той съхранява позициите на върховете като контролни точки, определя полигоналните лица чрез списъци с индекси на върховете и поддържа множество слоеве от данни за елементите на върховете, като нормали и UV координати.
export class Mesh extends GeometryExamples
A3DObject ← SceneObject ← Entity ← Geometry ← Mesh
Examples
Създайте мрежа от един триъгълник, прикрепете я към сцената и я запазете като 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[] | Позициите на върховете на мрежата. Всяка точка използва хомогенни координати (x, y, z, w). Добавете точки, като ги добавяте към този масив преди да дефинирате полигони. |
polygonCount | number | Само за четене. Броят на полигоните (лицеве), в момента дефинирани върху мрежата. |
polygons | number[][] | Само за четене. Таблицата с индекси на полигоните. Всеки запис е масив от индекси на контролни точки, които определят едно лице. |
edges | number[] | Списъкът с ръбове, използван за маркиране на твърди ръбове и задаване на тегло на гънка. |
vertexElements | VertexElement[] | Колекцията от слоеве на върховите елементи (нормали, UV координати, цветове на върховете и др.), прикрепени към тази мрежа. |
visible | boolean | Дали мрежата се рендерира. По подразбиране е true. |
castShadows | boolean | Дали мрежата хвърля сенки в поддържаните рендеръри. По подразбиране е true. |
receiveShadows | boolean | Дали мрежата получава сенки от други обекти. По подразбиране е true. |
Examples
createPolygon(…indices)
Определя ново полигонално лице, използвайки предоставените индекси на контролни точки. Индексите трябва да се отнасят до валидни позиции в controlPoints.
createPolygon(...indices: number[]): voidExamples
...indices number[]
Три или повече нулево-базирани индекси в controlPoints масив, в посока на навиване обратно на часовниковата стрелка.
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()
Преобразува всички не‑триъгълни полигони в тази мрежа в триъгълници. Връща триангулираната мрежа (може да бъде същият екземпляр или нов).
triangulate(): MeshExamples
Mesh
Триангулираната мрежа.
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()
Връща мрежата като Mesh екземпляр. За Mesh обектите това е операция за идентичност; методът е по-значим за примитивни геометрични типове, които наследяват от Geometry.
toMesh(): MeshExamples
Mesh
Този екземпляр на мрежата.
static union(a, b)
NOT IMPLEMENTED. Този метод е дефиниран в API повърхността, но хвърля Error('union is not implemented') по време на изпълнение. Не го извиквайте в продукционен код.
Извършва булево обединение на две мрежи. Резултатът съдържа комбинирания обем и на двете входни мрежи.
static union(a: Mesh, b: Mesh): MeshExamples
a Mesh
Първият операнд – мрежа.
b Mesh
Вторият операнд – мрежа.
Examples
Mesh
Нова мрежа, представляваща обединението на a и 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. Този метод е дефиниран в API повърхността, но хвърля Error('difference is not implemented') по време на изпълнение. Не го извиквайте в продукционен код.
Извършва булева разлика, като изважда обема на мрежата b от мрежата a.
static difference(a: Mesh, b: Mesh): MeshExamples
a Mesh
Базовата мрежа.
b Mesh
Мрежата, от която се изважда a.
Examples
Mesh
Нова мрежа, представляваща a минус 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. Този метод е дефиниран в API повърхността, но хвърля Error('intersect is not implemented') по време на изпълнение. Не го извиквайте в продукционен код.
Извършва булево пресичане на две мрежи. Резултатът съдържа само общия обем.
static intersect(a: Mesh, b: Mesh): MeshExamples
a Mesh
Първият операнд – мрежа.
b Mesh
Вторият операнд – мрежа.
Examples
Mesh
Нова мрежа, представляваща пресечната точка на a и 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?)
Създава нов VertexElement слой от данни върху тази мрежа за персонализирани атрибути за всеки връх.
createElement(
type: VertexElementType,
mapping?: MappingMode,
reference?: ReferenceMode
): VertexElementExamples
type VertexElementType
Типът на атрибута на върха, който да се създаде (например, VertexElementType.Normal).
mapping MappingMode (по избор)
Как данните на елементите се съпоставят с топологията на мрежата. По подразбиране е MappingMode.ControlPoint.
reference ReferenceMode (по избор)
Как индекси на елементите се отнасят към масива от данни. По подразбиране е ReferenceMode.Direct.
Examples
VertexElement
Новосъздаденият слой от елементи на върховете.
createElementUV(mapping, mappingMode?, referenceMode?)
Създава слой с UV координати върху тази мрежа.
createElementUV(
mapping: TextureMapping,
mappingMode?: MappingMode,
referenceMode?: ReferenceMode
): VertexElementUVExamples
mapping TextureMapping
UV каналът, който да се създаде (например, TextureMapping.Diffuse).
mappingMode MappingMode (по избор)
Как UV координатите се съпоставят с върховете.
referenceMode ReferenceMode (по избор)
Как данните за UV индекса се отнасят към UV масива.
Examples
VertexElementUV
Новосъздаденият слой на UV елемент.
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}`);