Class 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
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|
controlPoints | Vector4[] | メッシュの頂点位置です。各点は同次座標 (x, y, z, w). ポリゴンを定義する前に、この配列にプッシュして点を追加します。. |
polygonCount | number | 読み取り専用です。現在メッシュ上で定義されているポリゴン(面)の数です。. |
polygons | number[][] | 読み取り専用です。ポリゴンインデックステーブルです。各エントリは、1つの面を定義するコントロールポイントインデックスの配列です。. |
edges | number[] | エッジリストです。ハードエッジのマーキングやクリースの重み付けに使用されます。. |
vertexElements | VertexElement[] | このメッシュに付随する頂点要素レイヤー(法線、UV、頂点カラーなど)のコレクション。. |
visible | boolean | メッシュがレンダリングされるかどうか。デフォルトは true. |
castShadows | boolean | サポートされているレンダラーでメッシュがシャドウをキャストするかどうか。デフォルトは true. |
receiveShadows | boolean | 他のオブジェクトからのシャドウをメッシュが受け取るかどうか。デフォルトは true. |
ImageRenderOptions
createPolygon(…indices)
提供された制御点インデックスを使用して新しいポリゴン面を定義します。インデックスは有効な位置を参照している必要があります。 controlPoints.
createPolygon(...indices: number[]): voidImageRenderOptions
...indices number[]
…へのゼロベースインデックスを3つ以上 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
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(): MeshImageRenderOptions
Mesh
この Mesh インスタンス。.
static union(a, b)
NOT IMPLEMENTED. このメソッドは API の表面で定義されていますが、例外をスローします Error('union is not implemented') 実行時にスローされます。実運用コードからは呼び出さないでください。.
2 つのメッシュのブールユニオンを実行します。結果は両方の入力の結合された体積を含みます。.
static union(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
最初のメッシュオペランド。.
b Mesh
2 番目のメッシュオペランド。.
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') 実行時にスローされます。実運用コードからは呼び出さないでください。.
ブール差分を実行し、メッシュの体積を減算します b メッシュから a.
static difference(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
基底 Mesh。.
b Mesh
減算対象のメッシュ a.
ImageRenderOptions
Mesh
表す新しいメッシュ a マイナス 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. このメソッドは API の表面で定義されていますが、例外をスローします Error('intersect is not implemented') 実行時にスローされます。プロダクションコードで呼び出さないでください。.
2 つのメッシュのブール交差を実行します。結果は重なり合う体積のみを含みます。.
static intersect(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
最初のメッシュオペランド。.
b Mesh
2 番目のメッシュオペランド。.
ImageRenderOptions
Mesh
交差を表す新しいメッシュ a と 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?)
新しいものを作成します VertexElement このメッシュ上のカスタム頂点属性用データレイヤー。.
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}`);