MaterialX / glTF Texture Procedurals  0.0.1
Utilities for interoperability between MaterialX and glTF Texture Procedurals
Loading...
Searching...
No Matches
gltf_materialx_converter.gltf_to_materialx Namespace Reference

Functions

 main ()
 

Function Documentation

◆ main()

gltf_materialx_converter.gltf_to_materialx.main ( )

Definition at line 12 of file gltf_to_materialx.py.

12def main():
13 parser = argparse.ArgumentParser(description="Converter from glTF Texture Procedurals to MaterialX")
14 parser.add_argument(dest="input", help="Input file/folder.")
15 parser.add_argument("-o", "--output", help="Output file/folder. Default is current folder.")
16 parser.add_argument("-a", "--addAssetInfo", type=bool, default=False, help="Add glTF asset information to generated MaterialX files.")
17 opts = parser.parse_args()
18
19 logger = lg.getLogger('gltfCmd')
20 lg.basicConfig(level=lg.INFO)
21
22 fileList = []
23 extension = '.gltf'
24 if os.path.isdir(opts.input):
25 fileList = MxGLTFPTUtil.getFiles(opts.input, extension)
26 else:
27 extension = os.path.splitext(opts.input)[1]
28 if extension not in ['.gltf']:
29 logger.warning(f'Invalid file extension: {extension}. Extension must be .gltf.')
30 return
31 fileList.append(opts.input)
32
33 if not fileList:
34 logger.warning(f'No glTF files found: {opts.input}')
35 return
36
37 stdlib, libFiles = MxGLTFPTUtil.load_standard_libraries()
38
39 converter = MxGLTFPT.glTFMaterialXConverter()
40
41 # Check for output folder option
42 outputFolder = '.'
43 if opts.output:
44 outputFolder = opts.output
45 if not os.path.exists(outputFolder):
46 os.makedirs(outputFolder)
47
48 logger.info(f'Add glTF asset information: {opts.addAssetInfo}')
49 converter.set_add_asset_info(opts.addAssetInfo)
50
51 for inputFile in fileList:
52 logger.info(f'Processing: {inputFile}')
53 jsonString = MxGLTFPTUtil.load_json_file(inputFile)
54 if jsonString:
55 mtlxdoc = converter.gltf_string_to_materialX(jsonString, stdlib)
56 # Validate
57 valid, status = MxGLTFPTUtil.validate_document(mtlxdoc)
58 mtlxString = MxGLTFPTUtil.materialX_doc_to_string(mtlxdoc)
59
60 if not valid:
61 logger.warning(f'Created invalid MaterialX document. Error: {status}')
62 outputFileMtlx = inputFile.replace('.gltf', '_fromgltf.mtlx')
63 with open(outputFileMtlx, 'w') as f:
64 logger.info(f'Writing re-converted mtlx: {outputFileMtlx}')
65 f.write(mtlxString)
66 else:
67 logger.warning(f'Unable to load glTF file: {inputFile}')
68