Material
Package : @aspose/3d (v24.12.0)
@aspose/3d fournit trois classes de matériaux concrètes qui étendent la classe abstraite de base. Material Elles couvrent les trois modèles d’ombrage les plus couramment rencontrés dans les formats d’échange 3D :
LambertMaterial— diffuse + ambiant + émissif (utilisé par les actifs OBJ/MTL et les anciens FBX)PhongMaterial— étend Lambert avec des propriétés de reflets spéculairesPbrMaterial— modèle physiquement basé correspondant à la définition de matériau glTF 2.0
Toutes les classes de matériaux sont exportées depuis le @aspose/3d point d’entrée principal.
import { LambertMaterial, PhongMaterial, PbrMaterial } from '@aspose/3d';Classe Material (base abstraite)
Material est la classe de base abstraite pour tous les matériaux. Elle étend A3DObject, fournissant le name propriété et l’API de slot de texture.
export class Material extends A3DObjectExample
| Name | Type | Access | Description |
|---|---|---|---|
MAP_SPECULAR | `` | Read | Gets the map specular. |
MAP_DIFFUSE | `` | Read | Gets the map diffuse. |
MAP_EMISSIVE | `` | Read | Gets the map emissive. |
MAP_AMBIENT | `` | Read | Gets the map ambient. |
MAP_NORMAL | `` | Read | Gets the map normal. |
Example
getTexture(slotName)
Retourne le TextureBase assigné au slot nommé, ou null si aucun n’a été assigné.
getTexture(slotName: string): TextureBase | nullsetTexture(slotName, texture)
Assigne un TextureBase instance au slot nommé.
setTexture(slotName: string, texture: TextureBase): voidClasse LambertMaterial
LambertMaterial modélise la réflexion diffuse avec des contributions ambiantes et émissives optionnelles. C’est le type de matériau généralement produit lors du chargement de fichiers OBJ avec .mtl bibliothèques.
export class LambertMaterial extends MaterialExample
A3DObject ← Material ← LambertMaterial
Example
Attribuez un matériau diffus rouge à un nœud.
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
| Signature | Description |
|---|---|
| `constructor(name: string | null)` |
getTexture(_slotName: string) → `TextureBase | null` |
setTexture(_slotName: string, _texture: TextureBase) | Sets the texture value. |
Classe PhongMaterial
PhongMaterial étend LambertMaterial avec prise en charge des reflets spéculaires, implémentant le modèle d’ombrage Phong classique. Il est courant dans les actifs FBX et COLLADA.
export class PhongMaterial extends LambertMaterialExample
A3DObject ← Material ← LambertMaterial ← PhongMaterial
Example
Créez un matériau Phong bleu brillant.
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
Classe PbrMaterial
PbrMaterial implémente le modèle PBR metallic-roughness glTF 2.0. Utilisez cette classe pour les scènes qui seront enregistrées au format glTF/GLB, ou lorsque l’actif source FBX contient des matériaux PBR.
export class PbrMaterial extends MaterialExample
A3DObject ← Material ← PbrMaterial
Example
Construisez un matériau PBR doré et enregistrez-le dans un fichier 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
createAnimationClip(name)
PbrMaterial.fromMaterial(material)
Crée un nouveau PbrMaterial à partir d’un générique Material instance, en copiant le name.
static fromMaterial(material: Material): PbrMaterial