Materials — LambertMaterial, PhongMaterial, PbrMaterial
Csomag: @aspose/3d (v24.12.0)
@aspose/3d szállít három konkrét anyag osztályt, amelyek kiterjesztik az absztrakt Material bázist. Lefedik a három árnyalási modellt, amely a leggyakrabban előfordul a 3D csereformátumokban:
LambertMaterial— diffúz + környezeti + emisszív (OBJ/MTL és régebbi FBX eszközök által használt)PhongMaterial— kiterjeszti a Lambert modellt specular highlight tulajdonságokkalPbrMaterial— fizikailag alapú modell, amely megfelel a glTF 2.0 anyagdefiníciónak
Minden anyag osztály exportálva van a fő @aspose/3d belépési pontból.
import { LambertMaterial, PhongMaterial, PbrMaterial } from '@aspose/3d';Osztály Material (absztrakt alaposztály)
Material az absztrakt bázisosztály minden anyag számára. Kiterjeszti A3DObject, biztosítva a name tulajdonságot és a textúra slot API-t.
export class Material extends A3DObjectImageRenderOptions
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|
name | string | Az anyag neve, ahogy megjelenik a jelenet gráfban és az export kimenetben. |
ImageRenderOptions
getTexture(slotName)
Visszaadja a TextureBase a megnevezett slot-hoz rendelt értéket, vagy null ha egy sem lett hozzárendelve.
getTexture(slotName: string): TextureBase | nullsetTexture(slotName, texture)
Hozzárendel egy TextureBase példányt a megnevezett slotba.
setTexture(slotName: string, texture: TextureBase): voidOsztály LambertMaterial
LambertMaterial modellezi a diffúz visszaverődést opcionális környezeti és emisszív hozzájárulásokkal. Ez a anyagtípus gyakran keletkezik OBJ fájlok betöltésekor a .mtl könyvtárak.
export class LambertMaterial extends MaterialImageRenderOptions
A3DObject ← Material ← LambertMaterial
ImageRenderOptions
Rendeljen egy piros diffúz anyagot egy node-hoz.
import { Scene, LambertMaterial } from '@aspose/3d';
import { Vector3 } from '@aspose/3d/utilities';
const scene = new Scene();
scene.open('model.obj');
const mat = new LambertMaterial('RedSurface');
mat.diffuseColor = new Vector3(1, 0, 0); // R=1, G=0, B=0
mat.ambientColor = new Vector3(0.1, 0, 0);
mat.transparency = 0;
// Assign material to the first child node's entity
const firstNode = scene.rootNode.childNodes[0];
if (firstNode && firstNode.entity) {
(firstNode.entity as any).material = mat;
}
scene.save('output.fbx');ImageRenderOptions
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|---|
diffuseColor | `Vector3 | null` | null |
ambientColor | `Vector3 | null` | null |
emissiveColor | `Vector3 | null` | null |
transparentColor | `Vector3 | null` | null |
transparency | number | 0.0 | Átlátszatlansági tényező 0,0 (teljesen átlátszatlan) és 1,0 (teljesen átlátszó) tartományban. Automatikusan korlátozva. |
Osztály PhongMaterial
PhongMaterial kiterjeszti LambertMaterial specularis kiemelés támogatással, a klasszikus Phong árnyalási modell megvalósításával. Gyakori FBX és COLLADA eszközökben.
export class PhongMaterial extends LambertMaterialImageRenderOptions
A3DObject ← Material ← LambertMaterial ← PhongMaterial
ImageRenderOptions
Hozzon létre egy fényes kék Phong anyagot.
import { PhongMaterial } from '@aspose/3d';
import { Vector3 } from '@aspose/3d/utilities';
const mat = new PhongMaterial('ShinyBlue');
mat.diffuseColor = new Vector3(0, 0.2, 0.8);
mat.specularColor = new Vector3(1, 1, 1);
mat.shininess = 64;
mat.specularFactor = 0.8;
console.log(`Shininess: ${mat.shininess}`); // Shininess: 64
ImageRenderOptions
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|---|
specularColor | `Vector3 | null` | null |
specularFactor | number | 0.0 | Skáláris szorzó a specularis hozzájáruláshoz. |
shininess | number | 0.0 | Phong fényességi kitevő — magasabb értékek szűkebb kiemeléseket eredményeznek. |
reflectionColor | `Vector3 | null` | null |
reflectionFactor | number | 0.0 | Skáláris szorzó a visszaverődés hozzájárulásához. |
Osztály PbrMaterial
PbrMaterial megvalósítja a glTF 2.0 fémes-érdes PBR modellt. Használja ezt az osztályt olyan jelenetekhez, amelyeket glTF/GLB formátumban mentenek, vagy ha a forrás FBX eszköz PBR anyagokat tartalmaz.
export class PbrMaterial extends MaterialImageRenderOptions
A3DObject ← Material ← PbrMaterial
ImageRenderOptions
Készítsen egy arany PBR anyagot, és mentse el egy glTF fájlba.
import { Scene, PbrMaterial } from '@aspose/3d';
import { Vector3 } from '@aspose/3d/utilities';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('base-mesh.obj');
const gold = new PbrMaterial('Gold');
gold.albedo = new Vector3(1.0, 0.766, 0.336); // gold base color
gold.metallicFactor = 1.0;
gold.roughnessFactor = 0.3;
// Attach material to the first mesh node
const meshNode = scene.rootNode.childNodes[0];
if (meshNode && meshNode.entity) {
(meshNode.entity as any).material = gold;
}
const opts = new GltfSaveOptions();
opts.binaryMode = true;
scene.save('gold-model.glb', opts);ImageRenderOptions
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|---|
albedo | `Vector3 | null` | null |
albedoTexture | `TextureBase | null` | null |
normalTexture | `TextureBase | null` | null |
metallicFactor | number | 0.0 | Fémességi tényező 0–1 tartományban. 1.0 = teljesen fémes. |
roughnessFactor | number | 0.0 | Durvasági tényező 0–1 tartományban. 0.0 = tükörsima. |
metallicRoughness | `TextureBase | null` | null |
occlusionTexture | `TextureBase | null` | null |
occlusionFactor | number | 0.0 | A környezeti elzáródás hatásának erőssége. |
emissiveColor | `Vector3 | null` | null |
emissiveTexture | `TextureBase | null` | null |
transparency | number | 0.0 | Átlátszósági tényező 0–1 tartományban. Automatikusan korlátozva. |
Statikus metódusok
PbrMaterial.fromMaterial(material)
Létrehoz egy új PbrMaterial egy általános Material példányból, másolva a name.
static fromMaterial(material: Material): PbrMaterial