Class Mesh

パッケージ: @aspose/3d (v24.12.0)

Mesh サブパスインポートでも利用できます @aspose/3d/entities.

Mesh は、 の主要なポリゴンジオメトリエンティティです @aspose/3d.。頂点位置をコントロールポイントとして格納し、頂点インデックスリストでポリゴン面を定義し、法線や UV 座標など複数の頂点要素データレイヤーをサポートします。.

export class Mesh extends Geometry

ImageRenderOptions

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

ImageRenderOptionsImageRenderOptionsImageRenderOptions
controlPointsVector4[]メッシュの頂点位置です。各点は同次座標 (x, y, z, w). ポリゴンを定義する前に、この配列にプッシュして点を追加します。.
polygonCountnumber読み取り専用です。現在メッシュ上で定義されているポリゴン(面)の数です。.
polygonsnumber[][]読み取り専用です。ポリゴンインデックステーブルです。各エントリは、1つの面を定義するコントロールポイントインデックスの配列です。.
edgesnumber[]エッジリストです。ハードエッジのマーキングやクリースの重み付けに使用されます。.
vertexElementsVertexElement[]このメッシュに付随する頂点要素レイヤー(法線、UV、頂点カラーなど)のコレクション。.
visiblebooleanメッシュがレンダリングされるかどうか。デフォルトは true.
castShadowsbooleanサポートされているレンダラーでメッシュがシャドウをキャストするかどうか。デフォルトは true.
receiveShadowsboolean他のオブジェクトからのシャドウをメッシュが受け取るかどうか。デフォルトは true.

ImageRenderOptions

createPolygon(…indices)

提供された制御点インデックスを使用して新しいポリゴン面を定義します。インデックスは有効な位置を参照している必要があります。 controlPoints.

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

ImageRenderOptions

...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(): Mesh

ImageRenderOptions

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

ImageRenderOptions

Mesh

この Mesh インスタンス。.


static union(a, b)

NOT IMPLEMENTED. このメソッドは API の表面で定義されていますが、例外をスローします Error('union is not implemented') 実行時にスローされます。実運用コードからは呼び出さないでください。.

2 つのメッシュのブールユニオンを実行します。結果は両方の入力の結合された体積を含みます。.

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

ImageRenderOptions

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): Mesh

ImageRenderOptions

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): Mesh

ImageRenderOptions

a Mesh

最初のメッシュオペランド。.

b Mesh

2 番目のメッシュオペランド。.

ImageRenderOptions

Mesh

交差を表す新しいメッシュ ab.

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
): VertexElement

ImageRenderOptions

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
): VertexElementUV

ImageRenderOptions

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}`);
 日本語