Materials — LambertMaterial, PhongMaterial, PbrMaterial
Pakej: @aspose/3d (v24.12.0)
@aspose/3d menyediakan tiga kelas bahan konkrit yang memperluas kelas abstrak Material asas. Mereka merangkumi tiga model shading yang paling kerap ditemui dalam format pertukaran 3D:
LambertMaterial— difus + ambien + emisif (digunakan oleh aset OBJ/MTL dan FBX lama)PhongMaterial— memperluas Lambert dengan sifat sorotan spekularPbrMaterial— model berasaskan fizikal yang sepadan dengan definisi bahan glTF 2.0
Semua kelas bahan dieksport dari utama @aspose/3d titik masuk.
import { LambertMaterial, PhongMaterial, PbrMaterial } from '@aspose/3d';Kelas Material (asas abstrak)
Material adalah kelas asas abstrak untuk semua bahan. Ia memperluas A3DObject, menyediakan name sifat dan API slot tekstur.
export class Material extends A3DObjectImageRenderOptions
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|
name | string | Nama bahan seperti yang muncul dalam graf adegan dan output eksport. |
ImageRenderOptions
getTexture(slotName)
Mengembalikan TextureBase yang ditetapkan kepada slot bernama, atau null jika tiada yang telah diberikan.
getTexture(slotName: string): TextureBase | nullsetTexture(slotName, texture)
Menetapkan satu TextureBase instans kepada slot yang dinamakan.
setTexture(slotName: string, texture: TextureBase): voidKelas LambertMaterial
LambertMaterial memodelkan pantulan difus dengan sumbangan ambien dan emisif pilihan. Ia adalah jenis bahan yang biasanya dihasilkan apabila memuatkan fail OBJ dengan .mtl perpustakaan.
export class LambertMaterial extends MaterialImageRenderOptions
A3DObject ← Material ← LambertMaterial
ImageRenderOptions
Berikan bahan difus merah kepada nod.
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 | Faktor kelegapan dalam julat 0.0 (sepenuhnya tidak telus) hingga 1.0 (sepenuhnya telus). Dikatup secara automatik. |
Kelas PhongMaterial
PhongMaterial memperluas LambertMaterial dengan sokongan sorotan spekular, melaksanakan model pencahayaan Phong klasik. Ia biasa dalam aset FBX dan COLLADA.
export class PhongMaterial extends LambertMaterialImageRenderOptions
A3DObject ← Material ← LambertMaterial ← PhongMaterial
ImageRenderOptions
Cipta bahan Phong biru berkilau.
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 | Pengganda skalar untuk sumbangan spekular. |
shininess | number | 0.0 | Eksponen kilau Phong — nilai yang lebih tinggi menghasilkan sorotan yang lebih tajam. |
reflectionColor | `Vector3 | null` | null |
reflectionFactor | number | 0.0 | Pengganda skalar untuk sumbangan pantulan. |
Kelas PbrMaterial
PbrMaterial melaksanakan model PBR logam-kelembapan glTF 2.0. Gunakan kelas ini untuk adegan yang akan disimpan sebagai glTF/GLB, atau apabila aset FBX sumber mengandungi bahan PBR.
export class PbrMaterial extends MaterialImageRenderOptions
A3DObject ← Material ← PbrMaterial
ImageRenderOptions
Bina bahan PBR emas dan simpan dalam fail glTF.
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 | Faktor logam dalam julat 0–1. 1.0 = sepenuhnya logam. |
roughnessFactor | number | 0.0 | Faktor kekasaran dalam julat 0–1. 0.0 = licin seperti cermin. |
metallicRoughness | `TextureBase | null` | null |
occlusionTexture | `TextureBase | null` | null |
occlusionFactor | number | 0.0 | Kekuatan kesan penghalang persekitaran. |
emissiveColor | `Vector3 | null` | null |
emissiveTexture | `TextureBase | null` | null |
transparency | number | 0.0 | Faktor kelegapan dalam julat 0–1. Dikatup secara automatik. |
Kaedah Statik
PbrMaterial.fromMaterial(material)
Mencipta yang baru PbrMaterial dari generik Material instans, menyalin the name.
static fromMaterial(material: Material): PbrMaterial