VertexElement За целта.Aspose.3D TypeScript API референция
Пакет: @аспоз/3d (v24.12.0)
VertexElement е абстрактният базов клас за канали с атрибути на върха, прикрепени към Geometry.Всеки канал съдържа типени масиви от данни и mappingMode / referenceMode Метаданните, които контролират как данните се отнасят до примитиви на геометрията. Подкласовете са: VertexElementNormal, VertexElementUV, и VertexElementVertexColor.
import { VertexElement, VertexElementNormal, VertexElementUV, VertexElementVertexColor } from '@aspose/3d';VertexElement (абстрактна база)
export abstract class VertexElement implements IIndexedVertexElementСтроител
constructor(
elementType: VertexElementType,
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)По подразбиране: mappingMode е в: MappingMode.CONTROL_POINT; по подразбиране referenceMode е в: ReferenceMode.DIRECT.
Свойства на веществата
| Имотът | Тип на изпитване | Достъп до информация | Описание на състоянието |
|---|---|---|---|
vertexElementType | VertexElementType | Прочети. | Семантичен тип на този слой. |
name | string | Чете/Пише | Факультативна етикета за този слой. |
mappingMode | MappingMode | Чете/Пише | Контролира с коя геометрия примитивна е свързана всяка стойност. |
referenceMode | ReferenceMode | Чете/Пише | Контролира дали стойностите се адресират директно или чрез индекс масив. |
indices | number[] | Прочети. | Индекс масив за: IndexToDirect референтен режим. |
Методи за изчисляване на данните
setIndices(data)
NOT IMPLEMENTED. На основата.
VertexElementклас, този метод хвърляError('set_indices is not implemented')По-добри подкласове.VertexElementFVectorи в)VertexElementIntsTemplateосигуряване на работещи приложения.
Заменете индекса.
setIndices(data: number[]): voidclear()
NOT IMPLEMENTED. На основата.
VertexElementклас, този метод хвърляError('clear is not implemented')По-добри подкласове.VertexElementFVectorи в)VertexElementIntsTemplateосигуряване на работещи приложения.
Изтрийте всички данни и индекси от слоя.
clear(): voidVertexElementNormal
Повечето рендери изискват нормални данни за правилното осветление.
export class VertexElementNormal extends VertexElementFVectorНаследство
VertexElement → VertexElementFVector → VertexElementNormal
Строител
new VertexElementNormal(
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)vertexElementType е фиксиран на: VertexElementType.NORMAL.
VertexElementUV (включително и на VC)
Съхранява 2D координати на текстурата. Мешката може да носи множество UV слоеве за различни канали на тъканта. textureMapping свойството идентифицира целта на канала.
export class VertexElementUV extends VertexElementFVectorНаследство
VertexElement → VertexElementFVector → VertexElementUV
Строител
new VertexElementUV(
textureMapping: TextureMapping | null = null,
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)Неизпълнения на TextureMapping.DIFFUSE когато: textureMapping е в: null.
Допълнителни имоти
| Имотът | Тип на изпитване | Достъп до информация | Описание на състоянието |
|---|---|---|---|
textureMapping | TextureMapping | Прочети. | Каналът на текстурата, с който е свързан този UV слой. |
data | FVector4[] | Прочети. | УВ стойности, изложени като: FVector4 вписвания (z и w са 0). |
uvData | FVector2[] | Прочети. | УВ стойности като: FVector2 вписвания (само x, y). |
addData(data)
Приложете UV стойности. FVector2[], FVector3[], или FVector4[].
addData(data: FVector2[] | FVector3[] | FVector4[]): voidVertexElementVertexColor
Съхранява цветни стойности на RGBA за всеки върх. Компонентите са в диапазона 01.
export class VertexElementVertexColor extends VertexElementFVectorНаследство
VertexElement → VertexElementFVector → VertexElementVertexColor
Строител
new VertexElementVertexColor(
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)vertexElementType е фиксиран на: VertexElementType.VERTEX_COLOR.
Примери за това
Добавяне на нормали към триъгълна мрежа:
import { Scene, Mesh, Vector4, VertexElementType, MappingMode, ReferenceMode, FVector4 } from '@aspose/3d';
const mesh = new Mesh();
mesh.controlPoints.push(new Vector4(0, 0, 0, 1));
mesh.controlPoints.push(new Vector4(1, 0, 0, 1));
mesh.controlPoints.push(new Vector4(0.5, 1, 0, 1));
mesh.createPolygon(0, 1, 2);
const normals = mesh.createElement(
VertexElementType.NORMAL,
MappingMode.CONTROL_POINT,
ReferenceMode.DIRECT,
);
normals.setData([
new FVector4(0, 0, 1, 0),
new FVector4(0, 0, 1, 0),
new FVector4(0, 0, 1, 0),
]);
const scene = new Scene();
scene.rootNode.createChildNode('tri', mesh);
scene.save('triangle_normals.glb');Добавете УВ координати:
import { Scene, Mesh, Vector4, TextureMapping, MappingMode, ReferenceMode, FVector2 } from '@aspose/3d';
const mesh = new Mesh();
for (const [x, z] of [[0,0],[1,0],[1,1],[0,1]]) {
mesh.controlPoints.push(new Vector4(x, 0, z, 1));
}
mesh.createPolygon(0, 1, 2, 3);
const uv = mesh.createElementUV(TextureMapping.DIFFUSE, MappingMode.CONTROL_POINT, ReferenceMode.DIRECT);
uv.addData([
new FVector2(0, 0),
new FVector2(1, 0),
new FVector2(1, 1),
new FVector2(0, 1),
]);
const scene = new Scene();
scene.rootNode.createChildNode('quad', mesh);
scene.save('quad_uv.glb');