Materials — LambertMaterial, PhongMaterial, PbrMaterial

Materials — LambertMaterial, PhongMaterial, PbrMaterial

Πακέτο: @aspose/3d (v24.12.0)

@aspose/3d στέλνει τρεις συγκεκριμένες κλάσεις υλικού που επεκτείνουν την αφηρημένη Material βάση. Καλύπτουν τα τρία μοντέλα σκίασης που βρίσκονται πιο συχνά σε μορφές ανταλλαγής 3D:

  • LambertMaterial — diffuse + ambient + emissive (χρησιμοποιείται από OBJ/MTL και παλαιότερα FBX assets)
  • PhongMaterial — επεκτείνει το Lambert με ιδιότητες specular highlight
  • PbrMaterial — μοντέλο βασισμένο στη φυσική που ταιριάζει με τον ορισμό υλικού glTF 2.0

Όλες οι κλάσεις υλικού εξάγονται από το κύριο @aspose/3d σημείο εισόδου.

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

Κλάση Material (αφηρημένη βάση)

Material είναι η αφηρημένη βασική κλάση για όλα τα υλικά. Επεκτείνει A3DObject, παρέχοντας το name ιδιότητα και το texture slot API.

export class Material extends A3DObject

Example

ExampleExampleExample
namestringΤο όνομα του υλικού όπως εμφανίζεται στο γράφημα σκηνής και στην έξοδο εξαγωγής.

Example

getTexture(slotName)

Επιστρέφει το TextureBase που έχει εκχωρηθεί στην ονομαστική υποδοχή, ή null αν δεν έχει ανατεθεί κανένα.

getTexture(slotName: string): TextureBase | null

setTexture(slotName, texture)

Αναθέτει ένα TextureBase αντίγραφο στην ονομασμένη θέση.

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

Κλάση LambertMaterial

LambertMaterial μοντελοποιεί τη διασκορπισμένη ανάκλαση με προαιρετικές συνεισφορές περιβάλλοντος και εκπομπής. Είναι ο τύπος υλικού που παράγεται συνήθως κατά τη φόρτωση αρχείων OBJ με .mtl βιβλιοθήκες.

export class LambertMaterial extends Material

Example

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

ExampleExampleExampleExample
diffuseColor`Vector3null`null
ambientColor`Vector3null`null
emissiveColor`Vector3null`null
transparentColor`Vector3null`null
transparencynumber0.0Συντελεστής αδιαφάνειας στο εύρος 0.0 (πλήρως αδιαφανής) έως 1.0 (πλήρως διαφανής). Περιορίζεται αυτόματα.

Κλάση PhongMaterial

PhongMaterial επεκτείνει LambertMaterial με υποστήριξη αντανακλαστικών σημείων, υλοποιώντας το κλασικό μοντέλο σκίασης Phong. Είναι κοινό σε περιουσιακά στοιχεία FBX και COLLADA.

export class PhongMaterial extends LambertMaterial

Example

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

ExampleExampleExampleExample
specularColor`Vector3null`null
specularFactornumber0.0Συγκεκριμένος πολλαπλασιαστής για τη συνεισφορά των αντανακλαστικών.
shininessnumber0.0Εκθέτης λαμπρότητας Phong — υψηλότερες τιμές παράγουν πιο έντονα σημεία.
reflectionColor`Vector3null`null
reflectionFactornumber0.0Συγκεκριμένος πολλαπλασιαστής για τη συνεισφορά των αντανακλάσεων.

Κλάση PbrMaterial

PbrMaterial υλοποιεί το μοντέλο PBR μεταλλικό-τραχύτητα glTF 2.0. Χρησιμοποιήστε αυτήν την κλάση για σκηνές που θα αποθηκευτούν ως glTF/GLB, ή όταν το πηγαίο περιουσιακό στοιχείο FBX περιέχει υλικά PBR.

export class PbrMaterial extends Material

Example

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

ExampleExampleExampleExample
albedo`Vector3null`null
albedoTexture`TextureBasenull`null
normalTexture`TextureBasenull`null
metallicFactornumber0.0Metallic factor στο εύρος 0–1. 1.0 = πλήρως metallic.
roughnessFactornumber0.0Συντελεστής τραχύτητας στο εύρος 0–1. 0.0 = καθρέφτης-ομαλό.
metallicRoughness`TextureBasenull`null
occlusionTexture`TextureBasenull`null
occlusionFactornumber0.0Ισχύς του εφέ περιβάλλοντος απόσβεσης.
emissiveColor`Vector3null`null
emissiveTexture`TextureBasenull`null
transparencynumber0.0Συντελεστής αδιαφάνειας στο εύρος 0–1. Περιορίζεται αυτόματα.

Στατικές Μέθοδοι

PbrMaterial.fromMaterial(material)

Δημιουργεί ένα νέο PbrMaterial από ένα γενικό Material παράδειγμα, αντιγράφοντας το name.

static fromMaterial(material: Material): PbrMaterial
 Ελληνικά