Materials — LambertMaterial, PhongMaterial, PbrMaterial
Πακέτο: @aspose/3d (v24.12.0)
@aspose/3d στέλνει τρεις συγκεκριμένες κλάσεις υλικού που επεκτείνουν την αφηρημένη Material βάση. Καλύπτουν τα τρία μοντέλα σκίασης που βρίσκονται πιο συχνά σε μορφές ανταλλαγής 3D:
LambertMaterial— diffuse + ambient + emissive (χρησιμοποιείται από OBJ/MTL και παλαιότερα FBX assets)PhongMaterial— επεκτείνει το Lambert με ιδιότητες specular highlightPbrMaterial— μοντέλο βασισμένο στη φυσική που ταιριάζει με τον ορισμό υλικού glTF 2.0
Όλες οι κλάσεις υλικού εξάγονται από το κύριο @aspose/3d σημείο εισόδου.
import { LambertMaterial, PhongMaterial, PbrMaterial } from '@aspose/3d';Κλάση Material (αφηρημένη βάση)
Material είναι η αφηρημένη βασική κλάση για όλα τα υλικά. Επεκτείνει A3DObject, παρέχοντας το name ιδιότητα και το texture slot API.
export class Material extends A3DObjectExample
| Example | Example | Example |
|---|---|---|
name | string | Το όνομα του υλικού όπως εμφανίζεται στο γράφημα σκηνής και στην έξοδο εξαγωγής. |
Example
getTexture(slotName)
Επιστρέφει το TextureBase που έχει εκχωρηθεί στην ονομαστική υποδοχή, ή null αν δεν έχει ανατεθεί κανένα.
getTexture(slotName: string): TextureBase | nullsetTexture(slotName, texture)
Αναθέτει ένα TextureBase αντίγραφο στην ονομασμένη θέση.
setTexture(slotName: string, texture: TextureBase): voidΚλάση LambertMaterial
LambertMaterial μοντελοποιεί τη διασκορπισμένη ανάκλαση με προαιρετικές συνεισφορές περιβάλλοντος και εκπομπής. Είναι ο τύπος υλικού που παράγεται συνήθως κατά τη φόρτωση αρχείων OBJ με .mtl βιβλιοθήκες.
export class LambertMaterial extends MaterialExample
A3DObject ← Material ← LambertMaterial
Example
Αναθέστε ένα κόκκινο διάχυτο υλικό σε έναν κόμβο.
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');Example
| Example | Example | Example | Example |
|---|---|---|---|
diffuseColor | `Vector3 | null` | null |
ambientColor | `Vector3 | null` | null |
emissiveColor | `Vector3 | null` | null |
transparentColor | `Vector3 | null` | null |
transparency | number | 0.0 | Συντελεστής αδιαφάνειας στο εύρος 0.0 (πλήρως αδιαφανής) έως 1.0 (πλήρως διαφανής). Περιορίζεται αυτόματα. |
Κλάση PhongMaterial
PhongMaterial επεκτείνει LambertMaterial με υποστήριξη αντανακλαστικών σημείων, υλοποιώντας το κλασικό μοντέλο σκίασης Phong. Είναι κοινό σε περιουσιακά στοιχεία FBX και COLLADA.
export class PhongMaterial extends LambertMaterialExample
A3DObject ← Material ← LambertMaterial ← PhongMaterial
Example
Δημιουργήστε ένα λαμπερό μπλε Phong υλικό.
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
Example
| Example | Example | Example | Example |
|---|---|---|---|
specularColor | `Vector3 | null` | null |
specularFactor | number | 0.0 | Συγκεκριμένος πολλαπλασιαστής για τη συνεισφορά των αντανακλαστικών. |
shininess | number | 0.0 | Εκθέτης λαμπρότητας Phong — υψηλότερες τιμές παράγουν πιο έντονα σημεία. |
reflectionColor | `Vector3 | null` | null |
reflectionFactor | number | 0.0 | Συγκεκριμένος πολλαπλασιαστής για τη συνεισφορά των αντανακλάσεων. |
Κλάση PbrMaterial
PbrMaterial υλοποιεί το μοντέλο PBR μεταλλικό-τραχύτητα glTF 2.0. Χρησιμοποιήστε αυτήν την κλάση για σκηνές που θα αποθηκευτούν ως glTF/GLB, ή όταν το πηγαίο περιουσιακό στοιχείο FBX περιέχει υλικά PBR.
export class PbrMaterial extends MaterialExample
A3DObject ← Material ← PbrMaterial
Example
Δημιουργήστε ένα χρυσό υλικό PBR και αποθηκεύστε το σε αρχείο 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);Example
| Example | Example | Example | Example |
|---|---|---|---|
albedo | `Vector3 | null` | null |
albedoTexture | `TextureBase | null` | null |
normalTexture | `TextureBase | null` | null |
metallicFactor | number | 0.0 | Metallic factor στο εύρος 0–1. 1.0 = πλήρως metallic. |
roughnessFactor | number | 0.0 | Συντελεστής τραχύτητας στο εύρος 0–1. 0.0 = καθρέφτης-ομαλό. |
metallicRoughness | `TextureBase | null` | null |
occlusionTexture | `TextureBase | null` | null |
occlusionFactor | number | 0.0 | Ισχύς του εφέ περιβάλλοντος απόσβεσης. |
emissiveColor | `Vector3 | null` | null |
emissiveTexture | `TextureBase | null` | null |
transparency | number | 0.0 | Συντελεστής αδιαφάνειας στο εύρος 0–1. Περιορίζεται αυτόματα. |
Στατικές Μέθοδοι
PbrMaterial.fromMaterial(material)
Δημιουργεί ένα νέο PbrMaterial από ένα γενικό Material παράδειγμα, αντιγράφοντας το name.
static fromMaterial(material: Material): PbrMaterial