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()
19 logger = lg.getLogger(
'gltfCmd')
20 lg.basicConfig(level=lg.INFO)
24 if os.path.isdir(opts.input):
25 fileList = MxGLTFPTUtil.getFiles(opts.input, extension)
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.')
31 fileList.append(opts.input)
34 logger.warning(f
'No glTF files found: {opts.input}')
37 stdlib, libFiles = MxGLTFPTUtil.load_standard_libraries()
39 converter = MxGLTFPT.glTFMaterialXConverter()
44 outputFolder = opts.output
45 if not os.path.exists(outputFolder):
46 os.makedirs(outputFolder)
48 logger.info(f
'Add glTF asset information: {opts.addAssetInfo}')
49 converter.set_add_asset_info(opts.addAssetInfo)
51 for inputFile
in fileList:
52 logger.info(f
'Processing: {inputFile}')
53 jsonString = MxGLTFPTUtil.load_json_file(inputFile)
55 mtlxdoc = converter.gltf_string_to_materialX(jsonString, stdlib)
57 valid, status = MxGLTFPTUtil.validate_document(mtlxdoc)
58 mtlxString = MxGLTFPTUtil.materialX_doc_to_string(mtlxdoc)
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}')
67 logger.warning(f
'Unable to load glTF file: {inputFile}')