Materials — LambertMaterial, PhongMaterial, PbrMaterial

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 spekular
  • PbrMaterial — 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 A3DObject

ImageRenderOptions

ImageRenderOptionsImageRenderOptionsImageRenderOptions
namestringNama 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 | null

setTexture(slotName, texture)

Menetapkan satu TextureBase instans kepada slot yang dinamakan.

setTexture(slotName: string, texture: TextureBase): void

Kelas 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 Material

ImageRenderOptions

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

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
diffuseColor`Vector3null`null
ambientColor`Vector3null`null
emissiveColor`Vector3null`null
transparentColor`Vector3null`null
transparencynumber0.0Faktor 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 LambertMaterial

ImageRenderOptions

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

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
specularColor`Vector3null`null
specularFactornumber0.0Pengganda skalar untuk sumbangan spekular.
shininessnumber0.0Eksponen kilau Phong — nilai yang lebih tinggi menghasilkan sorotan yang lebih tajam.
reflectionColor`Vector3null`null
reflectionFactornumber0.0Pengganda 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 Material

ImageRenderOptions

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

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
albedo`Vector3null`null
albedoTexture`TextureBasenull`null
normalTexture`TextureBasenull`null
metallicFactornumber0.0Faktor logam dalam julat 0–1. 1.0 = sepenuhnya logam.
roughnessFactornumber0.0Faktor kekasaran dalam julat 0–1. 0.0 = licin seperti cermin.
metallicRoughness`TextureBasenull`null
occlusionTexture`TextureBasenull`null
occlusionFactornumber0.0Kekuatan kesan penghalang persekitaran.
emissiveColor`Vector3null`null
emissiveTexture`TextureBasenull`null
transparencynumber0.0Faktor 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
 Bahasa Melayu