Mesh
חבילה: @aspose/3d (v24.12.0)
Mesh זמין גם באמצעות ייבוא תת‑נתיב @aspose/3d/entities.
Mesh הוא הישות הגאומטרית הראשית של פוליגונים ב @aspose/3d. הוא מאחסן מיקומי קודקודים כנקודות בקרה, מגדיר משטחי פוליגון באמצעות רשימות אינדקסי קודקודים, ותומך בשכבות נתוני אלמנטים מרובות כגון נורמליות וקואורדינטות UV.
export class Mesh extends GeometryImageRenderOptions
A3DObject ← SceneObject ← Entity ← Geometry ← Mesh
ImageRenderOptions
בנה רשת משולשים יחידה, חבר אותה לסצנה ושמור כ‑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
| Name | Type | Access | Description |
|---|---|---|---|
edges | number[] | Read | Gets the edges. |
polygonCount | number | Read | Gets the polygon count. |
polygons | number[][] | Read | Gets the polygons. |
deformers | any[] | Read | Gets the deformers. |
| Signature | Description |
|---|---|
| `constructor(name: string | null, _heightMap: any, _transform: any, _triMesh: boolean |
createPolygon() | Adds a new polygon to the mesh |
getPolygonSize(index: number) → number | Returns the number of vertices in the polygon at the given index |
toMesh() → Mesh | Returns a Mesh instance representing the current object (identity conversion) |
optimize(_vertexElements: boolean, _toleranceControlPoint: number, _toleranceNormal: number, _toleranceUV: number) → Mesh | Not implemented in the FOSS edition — throws at runtime. Reduces mesh complexity using vertex element flag and tolerance values for control points, normals, and UVs |
doBoolean(_op: any, _a: Mesh, _transformA: any, _b: Mesh, _transformB: any) → Mesh | Not implemented in the FOSS edition — throws at runtime. Performs a boolean operation defined by _op on meshes _a and _b with respective transforms |
isManifold() → boolean | Not implemented in the FOSS edition — throws at runtime. Returns true if manifold is set. |
union(_a: Mesh, _b: Mesh) → Mesh | Not implemented in the FOSS edition — throws at runtime. Returns a new Mesh that is the union of meshes _a and _b |
difference(_a: Mesh, _b: Mesh) → Mesh | Not implemented in the FOSS edition — throws at runtime. Returns a new Mesh that is the difference of mesh _a minus mesh _b |
intersect(_a: Mesh, _b: Mesh) → Mesh | Not implemented in the FOSS edition — throws at runtime. |
triangulate() → Mesh | Converts all polygons in the mesh to triangles and returns the mesh |
getBoundingBox() → any | Returns the bounding box. |
getEntityRendererKey() → any | Not implemented in the FOSS edition — throws at runtime. Returns the entity renderer key. |
ImageRenderOptions
createPolygon(…indices)
מגדיר משטח פוליגון חדש באמצעות אינדקסי נקודות הבקרה המסופקים. האינדקסים חייבים להתייחס למיקומים תקינים ב controlPoints.
createPolygon(...indices: number[]): voidImageRenderOptions
...indices number[]
שלושה או יותר אינדקסים מבוססי‑אפס לתוך controlPoints מערך, בסדר ריפוד נגד כיוון השעון.
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()
ממיר את כל הפוליגונים שאינם משולשים ברשת זו למשולשים. מחזיר את הרשת המשולשת (ייתכן שהיא אותה מופע או מופע חדש).
triangulate(): MeshImageRenderOptions
Mesh
הרשת המשולשת.
ImageRenderOptions
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`.
```typescript
toMesh(): MeshImageRenderOptions
Mesh
מופע רשת זה.
static union(a, b)
NOT IMPLEMENTED. שיטה זו מוגדרת במשטח ה-API אך זורקת Error('union is not implemented') בזמן ריצה. אל תקרא לה בקוד ייצור.
מבצע איחוד בוליאני של שני רשתות. התוצאה מכילה את הנפח המשולב של שני הקלטים.
static union(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
האופרנד הראשון של הרשת.
b Mesh
האופרנד השני של הרשת.
ImageRenderOptions
Mesh
רשת חדשה המייצגת את האיחוד של a ו 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. שיטה זו מוגדרת במשטח ה-API אך זורקת Error('difference is not implemented') בזמן ריצה. אל תקרא לה בקוד ייצור.
מבצע חיסור בוליאני, מחסיר את נפח ה‑mesh b מ‑mesh a.
static difference(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
רשת הבסיס.
b Mesh
ה‑mesh שממנו מחסרים a.
ImageRenderOptions
Mesh
mesh חדשה המייצגת a מינוס b.
ImageRenderOptions
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')` בזמן ריצה. אל תקראו לה בקוד ייצור.
מבצע חיתוך בוליאני של שתי רשתות. התוצאה מכילה רק את הנפח החופף.
```typescript
static intersect(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
האופרנד הראשון של הרשת.
b Mesh
האופרנד השני של הרשת.
ImageRenderOptions
Mesh
רשת חדשה המייצגת את החיתוך של a ו b.
ImageRenderOptions
const overlap = Mesh.intersect(meshA, meshB);
console.log(Intersection polygon count: ${overlap.polygonCount});
---
### createElement(type, mapping?, reference?)
יוצר חדש `VertexElement` שכבת נתונים על רשת זו עבור תכונות מותאמות אישית לכל קודקוד.
```typescript
createElement(
type: VertexElementType,
mapping?: MappingMode,
reference?: ReferenceMode
): VertexElementImageRenderOptions
type VertexElementType
סוג תכונת הקודקוד ליצירה (לדוגמה, VertexElementType.Normal).
mapping MappingMode (אופציונלי)
כיצד נתוני האלמנט ממופים לטופולוגיית הרשת. ברירת המחדל היא MappingMode.ControlPoint.
reference ReferenceMode (אופציונלי)
כיצד אינדקסי האלמנטים מתייחסים למערך הנתונים. ברירת מחדל היא ReferenceMode.Direct.
ImageRenderOptions
VertexElement
שכבת תכונת הקודקוד שנוצרה זה עתה.
createElementUV(mapping, mappingMode?, referenceMode?)
יוצר שכבת קואורדינטות UV ברשת זו.
createElementUV(
mapping: TextureMapping,
mappingMode?: MappingMode,
referenceMode?: ReferenceMode
): VertexElementUVImageRenderOptions
mapping TextureMapping
ערוץ ה‑UV ליצירה (לדוגמה, TextureMapping.Diffuse).
mappingMode MappingMode (אופציונלי)
כיצד קואורדינטות UV ממופות לקודקודים.
referenceMode ReferenceMode (אופציונלי)
כיצד נתוני אינדקס ה‑UV מתייחסים למערך ה‑UV.
ImageRenderOptions
VertexElementUV
שכבת האלמנט UV שנוצרה זה עתה.
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}`);