Materials — LambertMaterial, PhongMaterial, PbrMaterial

Materials — LambertMaterial, PhongMaterial, PbrMaterial

Paket: @aspose/3d (v24.12.0)

@aspose/3d menyediakan tiga kelas material konkret yang memperluas abstrak Material basis. Mereka mencakup tiga model shading yang paling umum ditemukan dalam format pertukaran 3D:

  • LambertMaterial — diffuse + ambient + emissive (digunakan oleh OBJ/MTL dan aset FBX lama)
  • PhongMaterial — memperluas Lambert dengan properti sorotan spekular
  • PbrMaterial — model berbasis fisik yang sesuai dengan definisi material glTF 2.0

Semua kelas material diekspor dari @aspose/3d titik masuk.

import { LambertMaterial, PhongMaterial, PbrMaterial } from '@aspose/3d';

Kelas Material (basis abstrak)

Material adalah kelas dasar abstrak untuk semua material. Ia memperluas A3DObject, menyediakan name properti dan API slot tekstur.

export class Material extends A3DObject

ImageRenderOptions

ImageRenderOptionsImageRenderOptionsImageRenderOptions
namestringNama material sebagaimana muncul dalam grafik adegan dan output ekspor.

ImageRenderOptions

getTexture(slotName)

Mengembalikan TextureBase ditetapkan ke slot yang dinamai, atau null jika tidak ada yang ditetapkan.

getTexture(slotName: string): TextureBase | null

setTexture(slotName, texture)

Menetapkan sebuah TextureBase instansi ke slot yang dinamai.

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

Kelas LambertMaterial

LambertMaterial memodelkan refleksi difus dengan kontribusi ambient dan emisif opsional. Ini adalah tipe material yang biasanya dihasilkan saat memuat file OBJ dengan .mtl perpustakaan.

export class LambertMaterial extends Material

ImageRenderOptions

A3DObject ← Material ← LambertMaterial

ImageRenderOptions

Tetapkan material difus merah ke sebuah node.

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 opasitas dalam rentang 0.0 (sepenuhnya opak) hingga 1.0 (sepenuhnya transparan). Dibatasi secara otomatis.

Kelas PhongMaterial

PhongMaterial memperluas LambertMaterial dengan dukungan sorotan spekular, mengimplementasikan model shading Phong klasik. Ini umum dalam aset FBX dan COLLADA.

export class PhongMaterial extends LambertMaterial

ImageRenderOptions

A3DObject ← Material ← LambertMaterial ← PhongMaterial

ImageRenderOptions

Buat material Phong biru mengkilap.

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.0Pengali skalar untuk kontribusi spekular.
shininessnumber0.0Eksponen kilau Phong — nilai yang lebih tinggi menghasilkan sorotan yang lebih tajam.
reflectionColor`Vector3null`null
reflectionFactornumber0.0Pengali skalar untuk kontribusi refleksi.

Kelas PbrMaterial

PbrMaterial mengimplementasikan model PBR metallic-roughness glTF 2.0. Gunakan kelas ini untuk adegan yang akan disimpan sebagai glTF/GLB, atau ketika aset FBX sumber berisi material PBR.

export class PbrMaterial extends Material

ImageRenderOptions

A3DObject ← Material ← PbrMaterial

ImageRenderOptions

Bangun material PBR emas dan simpan dalam file 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 metalik dalam rentang 0–1. 1.0 = sepenuhnya metalik.
roughnessFactornumber0.0Faktor kekasaran dalam rentang 0–1. 0.0 = halus seperti cermin.
metallicRoughness`TextureBasenull`null
occlusionTexture`TextureBasenull`null
occlusionFactornumber0.0Kekuatan efek ambient occlusion.
emissiveColor`Vector3null`null
emissiveTexture`TextureBasenull`null
transparencynumber0.0Faktor opasitas dalam rentang 0–1. Dibatasi secara otomatis.

Metode Statis

PbrMaterial.fromMaterial(material)

Membuat yang baru PbrMaterial dari generic Material instance, menyalin the name.

static fromMaterial(material: Material): PbrMaterial
 Bahasa Indonesia