Materials — LambertMaterial, PhongMaterial, PbrMaterial
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
| Example | Example | Example |
|---|---|---|
name | string | Le nom du matériau tel qu’il apparaît dans le graphe de scène et la sortie d’exportation. |
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
| Example | Example | Example | Example |
|---|---|---|---|
diffuseColor | `Vector3 | null` | null |
ambientColor | `Vector3 | null` | null |
emissiveColor | `Vector3 | null` | null |
transparentColor | `Vector3 | null` | null |
transparency | number | 0.0 | Facteur d’opacité dans la plage 0.0 (complètement opaque) à 1.0 (complètement transparent). Limité automatiquement. |
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
| Example | Example | Example | Example |
|---|---|---|---|
specularColor | `Vector3 | null` | null |
specularFactor | number | 0.0 | Multiplicateur scalaire pour la contribution spéculaire. |
shininess | number | 0.0 | Exposant de brillance Phong — des valeurs plus élevées produisent des reflets plus serrés. |
reflectionColor | `Vector3 | null` | null |
reflectionFactor | number | 0.0 | Multiplicateur scalaire pour la contribution de réflexion. |
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
| Example | Example | Example | Example |
|---|---|---|---|
albedo | `Vector3 | null` | null |
albedoTexture | `TextureBase | null` | null |
normalTexture | `TextureBase | null` | null |
metallicFactor | number | 0.0 | Facteur métallique dans la plage 0–1. 1.0 = entièrement métallique. |
roughnessFactor | number | 0.0 | Facteur de rugosité dans la plage 0–1. 0.0 = lisse comme un miroir. |
metallicRoughness | `TextureBase | null` | null |
occlusionTexture | `TextureBase | null` | null |
occlusionFactor | number | 0.0 | Intensité de l’effet d’occlusion ambiante. |
emissiveColor | `Vector3 | null` | null |
emissiveTexture | `TextureBase | null` | null |
transparency | number | 0.0 | Facteur d’opacité dans la plage 0–1. Limité automatiquement. |
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