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[][] | 읽기 전용. 다각형 인덱스 테이블입니다. 각 항목은 하나의 면을 정의하는 컨트롤 포인트 인덱스 배열입니다. |
edges | number[] | 하드 엣지 표시 및 크리즈 가중치에 사용되는 엣지 리스트입니다. |
vertexElements | VertexElement[] | 이 메시와 연결된 정점 요소 레이어(노멀, UV, 정점 색상 등)의 컬렉션입니다. |
visible | boolean | 메시가 렌더링되는지 여부입니다. 기본값은 true. |
castShadows | boolean | 지원되는 렌더러에서 메시가 그림자를 드리우는지 여부입니다. 기본값은 true. |
receiveShadows | boolean | 다른 객체로부터 그림자를 받는지 여부입니다. 기본값은 true. |
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
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') 런타임에. 프로덕션 코드에서 호출하지 마세요.
두 Mesh의 불리언 합집합을 수행합니다. 결과는 두 입력의 결합된 부피를 포함합니다.
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') 런타임에. 프로덕션 코드에서 호출하지 마세요.
불리언 차이를 수행하여 메시의 부피를 빼냅니다. 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') 런타임에. 프로덕션 코드에서 호출하지 마세요.
두 메시에 대한 불리언 교차를 수행합니다. 결과는 겹치는 부피만 포함합니다.
static intersect(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
첫 번째 메시 피연산자.
b Mesh
두 번째 메시 피연산자.
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}`);