Skip to content

Commit 2b1e9b2

Browse files
committed
Implement a basic glTF exporter for materials
1 parent 5dbd41d commit 2b1e9b2

File tree

1 file changed

+247
-0
lines changed

1 file changed

+247
-0
lines changed

addons/material_maker/nodes/material.mmg

+247
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,253 @@
8383
}
8484
]
8585
},
86+
"GLTF/Plane": {
87+
"export_extension": "gltf",
88+
"files": [
89+
{
90+
"conditions": "$(connected:albedo_tex)",
91+
"file_name": "$(path_prefix)_albedo.png",
92+
"output": 0,
93+
"type": "texture"
94+
},
95+
{
96+
"conditions": "$(connected:ao_tex) or $(connected:roughness_tex) or $(connected:metallic_tex)",
97+
"file_name": "$(path_prefix)_orm.png",
98+
"output": 1,
99+
"type": "texture"
100+
},
101+
{
102+
"conditions": "$(connected:emission_tex)",
103+
"file_name": "$(path_prefix)_emission.png",
104+
"output": 2,
105+
"type": "texture"
106+
},
107+
{
108+
"conditions": "$(connected:normal_tex)",
109+
"file_name": "$(path_prefix)_normal.png",
110+
"output": 3,
111+
"type": "texture"
112+
},
113+
{
114+
"file_name": "$(path_prefix).gltf",
115+
"prompt_overwrite": true,
116+
"template": [
117+
"{",
118+
"\t\"asset\":{",
119+
"\t\t\"generator\":\"Material Maker export\",",
120+
"\t\t\"version\":\"2.0\"",
121+
"\t},",
122+
"\t\"scene\":0,",
123+
"\t\"scenes\":[",
124+
"\t\t{",
125+
"\t\t\t\"name\":\"Scene\",",
126+
"\t\t\t\"nodes\":[",
127+
"\t\t\t\t0",
128+
"\t\t\t]",
129+
"\t\t}",
130+
"\t],",
131+
"\t\"nodes\":[",
132+
"\t\t{",
133+
"\t\t\t\"mesh\":0,",
134+
"\t\t\t\"name\":\"Plane\"",
135+
"\t\t}",
136+
"\t],",
137+
"\t\"materials\":[",
138+
"\t\t{",
139+
"\t\t\t\"doubleSided\":true,",
140+
"\t\t\t\"emissiveTexture\":{",
141+
"\t\t\t\t\"index\":0",
142+
"\t\t\t},",
143+
"\t\t\t\"name\":\"$(file_prefix)\",",
144+
"\t\t\t\"normalTexture\":{",
145+
"\t\t\t\t\"index\":1",
146+
"\t\t\t},",
147+
"\t\t\t\"occlusionTexture\":{",
148+
"\t\t\t\t\"index\":2",
149+
"\t\t\t},",
150+
"\t\t\t\"pbrMetallicRoughness\":{",
151+
"\t\t\t\t\"baseColorTexture\":{",
152+
"\t\t\t\t\t\"index\":3",
153+
"\t\t\t\t},",
154+
"\t\t\t\t\"metallicRoughnessTexture\":{",
155+
"\t\t\t\t\t\"index\":2",
156+
"\t\t\t\t}",
157+
"\t\t\t}",
158+
"\t\t}",
159+
"\t],",
160+
"\t\"meshes\":[",
161+
"\t\t{",
162+
"\t\t\t\"name\":\"Plane\",",
163+
"\t\t\t\"primitives\":[",
164+
"\t\t\t\t{",
165+
"\t\t\t\t\t\"attributes\":{",
166+
"\t\t\t\t\t\t\"POSITION\":0,",
167+
"\t\t\t\t\t\t\"NORMAL\":1,",
168+
"\t\t\t\t\t\t\"TEXCOORD_0\":2",
169+
"\t\t\t\t\t},",
170+
"\t\t\t\t\t\"indices\":3,",
171+
"\t\t\t\t\t\"material\":0",
172+
"\t\t\t\t}",
173+
"\t\t\t]",
174+
"\t\t}",
175+
"\t],",
176+
"\t\"textures\":[",
177+
"\t\t{",
178+
"\t\t\t\"sampler\":0,",
179+
"\t\t\t\"source\":0",
180+
"\t\t},",
181+
"\t\t{",
182+
"\t\t\t\"sampler\":0,",
183+
"\t\t\t\"source\":1",
184+
"\t\t},",
185+
"\t\t{",
186+
"\t\t\t\"sampler\":0,",
187+
"\t\t\t\"source\":2",
188+
"\t\t},",
189+
"\t\t{",
190+
"\t\t\t\"sampler\":0,",
191+
"\t\t\t\"source\":3",
192+
"\t\t}",
193+
"\t],",
194+
"\t\"images\":[",
195+
"\t\t{",
196+
"$if $(connected:emission_tex)",
197+
"\t\t\t\"uri\":\"$(file_prefix)_emission.png\",",
198+
"$else",
199+
"\t\t\t\"bufferView\":4,",
200+
"$fi",
201+
"\t\t\t\"mimeType\":\"image/png\",",
202+
"\t\t\t\"name\":\"emission\"",
203+
"\t\t},",
204+
"\t\t{",
205+
"$if $(connected:normal_tex)",
206+
"\t\t\t\"uri\":\"$(file_prefix)_normal.png\",",
207+
"$else",
208+
"\t\t\t\"bufferView\":5,",
209+
"$fi",
210+
"\t\t\t\"mimeType\":\"image/png\",",
211+
"\t\t\t\"name\":\"normal\"",
212+
"\t\t},",
213+
"\t\t{",
214+
"$if $(connected:ao_tex) or $(connected:roughness_tex) or $(connected:metallic_tex)",
215+
"\t\t\t\"uri\":\"$(file_prefix)_orm.png\",",
216+
"$else",
217+
"\t\t\t\"bufferView\":6,",
218+
"$fi",
219+
"\t\t\t\"mimeType\":\"image/png\",",
220+
"\t\t\t\"name\":\"orm\"",
221+
"\t\t},",
222+
"\t\t{",
223+
"$if $(connected:albedo_tex)",
224+
"\t\t\t\"uri\":\"$(file_prefix)_albedo.png\",",
225+
"$else",
226+
"\t\t\t\"bufferView\":7,",
227+
"$fi",
228+
"\t\t\t\"mimeType\":\"image/png\",",
229+
"\t\t\t\"name\":\"albedo\"",
230+
"\t\t}",
231+
"\t],",
232+
"\t\"accessors\":[",
233+
"\t\t{",
234+
"\t\t\t\"bufferView\":0,",
235+
"\t\t\t\"componentType\":5126,",
236+
"\t\t\t\"count\":4,",
237+
"\t\t\t\"max\":[",
238+
"\t\t\t\t2,",
239+
"\t\t\t\t0,",
240+
"\t\t\t\t2",
241+
"\t\t\t],",
242+
"\t\t\t\"min\":[",
243+
"\t\t\t\t-2,",
244+
"\t\t\t\t0,",
245+
"\t\t\t\t-2",
246+
"\t\t\t],",
247+
"\t\t\t\"type\":\"VEC3\"",
248+
"\t\t},",
249+
"\t\t{",
250+
"\t\t\t\"bufferView\":1,",
251+
"\t\t\t\"componentType\":5126,",
252+
"\t\t\t\"count\":4,",
253+
"\t\t\t\"type\":\"VEC3\"",
254+
"\t\t},",
255+
"\t\t{",
256+
"\t\t\t\"bufferView\":2,",
257+
"\t\t\t\"componentType\":5126,",
258+
"\t\t\t\"count\":4,",
259+
"\t\t\t\"type\":\"VEC2\"",
260+
"\t\t},",
261+
"\t\t{",
262+
"\t\t\t\"bufferView\":3,",
263+
"\t\t\t\"componentType\":5123,",
264+
"\t\t\t\"count\":6,",
265+
"\t\t\t\"type\":\"SCALAR\"",
266+
"\t\t}",
267+
"\t],",
268+
"\t\"bufferViews\":[",
269+
"\t\t{",
270+
"\t\t\t\"buffer\":0,",
271+
"\t\t\t\"byteLength\":48,",
272+
"\t\t\t\"byteOffset\":0,",
273+
"\t\t\t\"target\":34962",
274+
"\t\t},",
275+
"\t\t{",
276+
"\t\t\t\"buffer\":0,",
277+
"\t\t\t\"byteLength\":48,",
278+
"\t\t\t\"byteOffset\":48,",
279+
"\t\t\t\"target\":34962",
280+
"\t\t},",
281+
"\t\t{",
282+
"\t\t\t\"buffer\":0,",
283+
"\t\t\t\"byteLength\":32,",
284+
"\t\t\t\"byteOffset\":96,",
285+
"\t\t\t\"target\":34962",
286+
"\t\t},",
287+
"\t\t{",
288+
"\t\t\t\"buffer\":0,",
289+
"\t\t\t\"byteLength\":12,",
290+
"\t\t\t\"byteOffset\":128,",
291+
"\t\t\t\"target\":34963",
292+
"\t\t},",
293+
"\t\t{",
294+
"\t\t\t\"buffer\":0,",
295+
"\t\t\t\"byteLength\":83,",
296+
"\t\t\t\"byteOffset\":140",
297+
"\t\t},",
298+
"\t\t{",
299+
"\t\t\t\"buffer\":0,",
300+
"\t\t\t\"byteLength\":83,",
301+
"\t\t\t\"byteOffset\":224",
302+
"\t\t},",
303+
"\t\t{",
304+
"\t\t\t\"buffer\":0,",
305+
"\t\t\t\"byteLength\":83,",
306+
"\t\t\t\"byteOffset\":308",
307+
"\t\t},",
308+
"\t\t{",
309+
"\t\t\t\"buffer\":0,",
310+
"\t\t\t\"byteLength\":83,",
311+
"\t\t\t\"byteOffset\":392",
312+
"\t\t}",
313+
"\t],",
314+
"\t\"samplers\":[",
315+
"\t\t{",
316+
"\t\t\t\"magFilter\":9729,",
317+
"\t\t\t\"minFilter\":9987",
318+
"\t\t}",
319+
"\t],",
320+
"\t\"buffers\":[",
321+
"\t\t{",
322+
"\t\t\t\"byteLength\":476,",
323+
"\t\t\t\"uri\":\"data:application/octet-stream;base64,AAAAwAAAAAAAAABAAAAAQAAAAAAAAABAAAAAwAAAAAAAAADAAAAAQAAAAAAAAADAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAwAAAQEAAAABAAABAQAAAAMAAAIC/AAAAQAAAgL8AAAEAAwAAAAMAAgCJUE5HDQoaCgAAAA1JSERSAAAAIAAAACABAwAAAEm06LcAAAADUExURQAAAKd6PdoAAAALSURBVAgdYxjkAAAAoAABl5qtUgAAAABJRU5ErkJgggCJUE5HDQoaCgAAAA1JSERSAAAAIAAAACABAwAAAEm06LcAAAADUExURYCA/1DOUZwAAAALSURBVAgdYxjkAAAAoAABl5qtUgAAAABJRU5ErkJgggCJUE5HDQoaCgAAAA1JSERSAAAAIAAAACABAwAAAEm06LcAAAADUExURQCAAJz5pZEAAAALSURBVAgdYxjkAAAAoAABl5qtUgAAAABJRU5ErkJgggCJUE5HDQoaCgAAAA1JSERSAAAAIAAAACABAwAAAEm06LcAAAADUExURQAAAKd6PdoAAAALSURBVAgdYxjkAAAAoAABl5qtUgAAAABJRU5ErkJgggA=\"",
324+
"\t\t}",
325+
"\t]",
326+
"}",
327+
""
328+
],
329+
"type": "template"
330+
}
331+
]
332+
},
86333
"Godot/Godot 3 Spatial": {
87334
"export_extension": "tres",
88335
"files": [

0 commit comments

Comments
 (0)