Class Mesh
Balíček: @aspose/3d (v24.12.0)
Mesh je také k dispozici prostřednictvím importu podcesty @aspose/3d/entities.
Mesh je primární entita polygonové geometrie v @aspose/3d. Ukládá pozice vrcholů jako kontrolní body, definuje polygonové plochy pomocí seznamů indexů vrcholů a podporuje více vrstev dat elementů vrcholů, jako jsou normály a UV souřadnice.
export class Mesh extends GeometryProperties
A3DObject ← SceneObject ← Entity ← Geometry ← Mesh
Properties
Vytvořte jednorázovou trojúhelníkovou síť, připojte ji k scéně a uložte do formátu 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
| Properties | Properties | Properties |
|---|---|---|
controlPoints | Vector4[] | Pozice vrcholů sítě. Každý bod používá homogenní souřadnice (x, y, z, w). Přidejte body vložením do tohoto pole před definováním polygonů. |
polygonCount | number | Pouze pro čtení. Počet polygonů (ploch), které jsou v současnosti definovány v síti. |
polygons | number[][] | Pouze pro čtení. Tabulka indexů polygonů. Každý záznam je pole indexů kontrolních bodů, které definují jednu plochu. |
edges | number[] | Seznam hran, používaný pro označování tvrdých hran a vážení záhybů. |
vertexElements | VertexElement[] | Sbírka vrstev elementů vrcholů (normály, UV, barvy vrcholů atd.) připojených k této síti. |
visible | boolean | Zda je síť renderována. Výchozí hodnota je true. |
castShadows | boolean | Zda síť vrhá stíny v podporovaných rendererech. Výchozí hodnota je true. |
receiveShadows | boolean | Zda síť přijímá stíny od jiných objektů. Výchozí hodnota je true. |
Properties
createPolygon(…indices)
Definuje novou polygonovou plochu pomocí poskytnutých indexů kontrolních bodů. Indexy musí odkazovat na platné pozice v controlPoints.
createPolygon(...indices: number[]): voidProperties
...indices number[]
Tři nebo více nulových indexů do controlPoints pole, v pořadí vinutí proti směru hodinových ručiček.
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()
Převede všechny ne‑trojúhelníkové polygony v této síti na trojúhelníky. Vrací triangulovanou síť (může být stejná instance nebo nová).
triangulate(): MeshProperties
Mesh
Triangulovaná síť.
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()
Vrací síť jako a Mesh instance. Pro Mesh objekty je to operace identity; metoda má větší smysl u primitivních geometrických typů, které dědí z Geometry.
toMesh(): MeshProperties
Mesh
Tato instance sítě.
static union(a, b)
NOT IMPLEMENTED. Tato metoda je definována v rozhraní API, ale vyvolá Error('union is not implemented') během běhu. Nepoužívejte ji v produkčním kódu.
Provede Booleovskou unii dvou sítí. Výsledek obsahuje kombinovaný objem obou vstupů.
static union(a: Mesh, b: Mesh): MeshProperties
a Mesh
První operand síti.
b Mesh
Druhý operand síti.
Properties
Mesh
Nová mesh představující sjednocení a a 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. Tato metoda je definována v rozhraní API, ale vyvolá Error('difference is not implemented') během běhu. Nepoužívejte ji v produkčním kódu.
Provádí Booleovský rozdíl, odečítá objem mesh b z mesh a.
static difference(a: Mesh, b: Mesh): MeshProperties
a Mesh
Základní síť.
b Mesh
Mesh, ze které se odečítá a.
Properties
Mesh
Nová mesh představující a mínus 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. Tato metoda je definována v rozhraní API, ale vyvolá Error('intersect is not implemented') během běhu. Nepoužívejte ji v produkčním kódu.
Provede Booleovskou průnik dvou sítí. Výsledek obsahuje pouze překrývající se objem.
static intersect(a: Mesh, b: Mesh): MeshProperties
a Mesh
První operand síti.
b Mesh
Druhý operand síti.
Properties
Mesh
Nová mesh představující průnik a a 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?)
Vytvoří novou VertexElement datovou vrstvu na této mesh pro vlastní atributy na vrcholu.
createElement(
type: VertexElementType,
mapping?: MappingMode,
reference?: ReferenceMode
): VertexElementProperties
type VertexElementType
Typ vrcholového atributu, který se má vytvořit (například, VertexElementType.Normal).
mapping MappingMode (volitelně)
Jak jsou data elementu mapována na topologii mesh. Výchozí hodnota je MappingMode.ControlPoint.
reference ReferenceMode (volitelně)
Jak indexy elementů odkazují na datové pole. Výchozí hodnota je ReferenceMode.Direct.
Properties
VertexElement
Nově vytvořená vrstva vrcholového elementu.
createElementUV(mapping, mappingMode?, referenceMode?)
Vytvoří vrstvu UV souřadnic na této síti.
createElementUV(
mapping: TextureMapping,
mappingMode?: MappingMode,
referenceMode?: ReferenceMode
): VertexElementUVProperties
mapping TextureMapping
UV kanál, který se má vytvořit (například, TextureMapping.Diffuse).
mappingMode MappingMode (volitelně)
Jak jsou UV souřadnice mapovány na vrcholy.
referenceMode ReferenceMode (volitelně)
Jak data indexu UV odkazují na UV pole.
Properties
VertexElementUV
Nově vytvořená vrstva UV elementu.
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}`);