@@ -4,6 +4,8 @@ import { GLTFExporter } from "../glTFExporter";
4
4
import type { Material } from "core/Materials/material" ;
5
5
import { PBRBaseMaterial } from "core/Materials/PBR/pbrBaseMaterial" ;
6
6
import type { BaseTexture } from "core/Materials/Textures/baseTexture" ;
7
+ import { OpenPBRMaterial } from "core/Materials/PBR/openPbrMaterial" ;
8
+ import type { Nullable } from "core/types" ;
7
9
8
10
const NAME = "EXT_materials_diffuse_roughness" ;
9
11
@@ -45,6 +47,13 @@ export class EXT_materials_diffuse_roughness implements IGLTFExporterExtensionV2
45
47
}
46
48
return additionalTextures ;
47
49
}
50
+ } else if ( babylonMaterial instanceof OpenPBRMaterial ) {
51
+ if ( babylonMaterial . baseDiffuseRoughness ) {
52
+ if ( babylonMaterial . baseDiffuseRoughnessTexture ) {
53
+ additionalTextures . push ( babylonMaterial . baseDiffuseRoughnessTexture ) ;
54
+ }
55
+ return additionalTextures ;
56
+ }
48
57
}
49
58
50
59
return [ ] ;
@@ -53,29 +62,37 @@ export class EXT_materials_diffuse_roughness implements IGLTFExporterExtensionV2
53
62
// eslint-disable-next-line no-restricted-syntax
54
63
public postExportMaterialAsync ?( context : string , node : IMaterial , babylonMaterial : Material ) : Promise < IMaterial > {
55
64
return new Promise ( ( resolve ) => {
65
+ let diffuseRoughnessFactor : Nullable < number > = null ;
66
+ let diffuseRoughnessTexture : Nullable < BaseTexture > = null ;
56
67
if ( babylonMaterial instanceof PBRBaseMaterial ) {
57
- if ( ! babylonMaterial . _baseDiffuseRoughness ) {
58
- resolve ( node ) ;
59
- return ;
60
- }
61
-
62
- this . _wasUsed = true ;
68
+ diffuseRoughnessFactor = babylonMaterial . _baseDiffuseRoughness ;
69
+ diffuseRoughnessTexture = babylonMaterial . _baseDiffuseRoughnessTexture ;
70
+ } else if ( babylonMaterial instanceof OpenPBRMaterial ) {
71
+ diffuseRoughnessFactor = babylonMaterial . baseDiffuseRoughness ;
72
+ diffuseRoughnessTexture = babylonMaterial . baseDiffuseRoughnessTexture ;
73
+ }
74
+ if ( ! diffuseRoughnessFactor ) {
75
+ resolve ( node ) ;
76
+ return ;
77
+ }
63
78
64
- node . extensions = node . extensions || { } ;
79
+ this . _wasUsed = true ;
65
80
66
- const diffuseRoughnessTextureInfo = this . _exporter . _materialExporter . getTextureInfo ( babylonMaterial . _baseDiffuseRoughnessTexture ) ;
81
+ node . extensions = node . extensions || { } ;
67
82
68
- const diffuseRoughnessInfo : IEXTMaterialsDiffuseRoughness = {
69
- diffuseRoughnessFactor : babylonMaterial . _baseDiffuseRoughness ,
70
- diffuseRoughnessTexture : diffuseRoughnessTextureInfo ?? undefined ,
71
- } ;
83
+ const diffuseRoughnessTextureInfo = this . _exporter . _materialExporter . getTextureInfo ( diffuseRoughnessTexture ) ;
72
84
73
- if ( diffuseRoughnessInfo . diffuseRoughnessTexture !== null ) {
74
- this . _exporter . _materialNeedsUVsSet . add ( babylonMaterial ) ;
75
- }
85
+ const diffuseRoughnessInfo : IEXTMaterialsDiffuseRoughness = {
86
+ diffuseRoughnessFactor : diffuseRoughnessFactor ,
87
+ diffuseRoughnessTexture : diffuseRoughnessTextureInfo ?? undefined ,
88
+ } ;
76
89
77
- node . extensions [ NAME ] = diffuseRoughnessInfo ;
90
+ if ( diffuseRoughnessInfo . diffuseRoughnessTexture !== null ) {
91
+ this . _exporter . _materialNeedsUVsSet . add ( babylonMaterial ) ;
78
92
}
93
+
94
+ node . extensions [ NAME ] = diffuseRoughnessInfo ;
95
+
79
96
resolve ( node ) ;
80
97
} ) ;
81
98
}
0 commit comments