mirror of
https://github.com/johndoe6345789/SDL3CPlusPlus.git
synced 2026-04-29 08:05:05 +00:00
stuff
This commit is contained in:
73
MaterialX/python/Scripts/baketextures.py
Normal file
73
MaterialX/python/Scripts/baketextures.py
Normal file
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env python
|
||||
'''
|
||||
Generate a baked version of each material in the input document, using the TextureBaker class in the MaterialXRenderGlsl library.
|
||||
'''
|
||||
|
||||
import sys, os, argparse
|
||||
from sys import platform
|
||||
|
||||
import MaterialX as mx
|
||||
from MaterialX import PyMaterialXRender as mx_render
|
||||
from MaterialX import PyMaterialXRenderGlsl as mx_render_glsl
|
||||
if platform == "darwin":
|
||||
from MaterialX import PyMaterialXRenderMsl as mx_render_msl
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Generate a baked version of each material in the input document.")
|
||||
parser.add_argument("--width", dest="width", type=int, default=1024, help="Specify the width of baked textures.")
|
||||
parser.add_argument("--height", dest="height", type=int, default=1024, help="Specify the height of baked textures.")
|
||||
parser.add_argument("--hdr", dest="hdr", action="store_true", help="Save images to hdr format.")
|
||||
parser.add_argument("--average", dest="average", action="store_true", help="Average baked images to generate constant values.")
|
||||
parser.add_argument("--path", dest="paths", action='append', nargs='+', help="An additional absolute search path location (e.g. '/projects/MaterialX')")
|
||||
parser.add_argument("--library", dest="libraries", action='append', nargs='+', help="An additional relative path to a custom data library folder (e.g. 'libraries/custom')")
|
||||
parser.add_argument('--writeDocumentPerMaterial', dest='writeDocumentPerMaterial', type=mx.stringToBoolean, default=True, help='Specify whether to write baked materials to separate MaterialX documents. Default is True')
|
||||
if platform == "darwin":
|
||||
parser.add_argument("--glsl", dest="useGlslBackend", default=False, type=bool, help="Set to True to use GLSL backend (default = Metal).")
|
||||
parser.add_argument(dest="inputFilename", help="Filename of the input document.")
|
||||
parser.add_argument(dest="outputFilename", help="Filename of the output document.")
|
||||
opts = parser.parse_args()
|
||||
|
||||
# Load standard and custom data libraries.
|
||||
stdlib = mx.createDocument()
|
||||
searchPath = mx.getDefaultDataSearchPath()
|
||||
searchPath.append(os.path.dirname(opts.inputFilename))
|
||||
libraryFolders = []
|
||||
if opts.paths:
|
||||
for pathList in opts.paths:
|
||||
for path in pathList:
|
||||
searchPath.append(path)
|
||||
if opts.libraries:
|
||||
for libraryList in opts.libraries:
|
||||
for library in libraryList:
|
||||
libraryFolders.append(library)
|
||||
libraryFolders.extend(mx.getDefaultDataLibraryFolders())
|
||||
mx.loadLibraries(libraryFolders, searchPath, stdlib)
|
||||
|
||||
# Read and validate the source document.
|
||||
doc = mx.createDocument()
|
||||
try:
|
||||
mx.readFromXmlFile(doc, opts.inputFilename)
|
||||
doc.setDataLibrary(stdlib)
|
||||
except mx.ExceptionFileMissing as err:
|
||||
print(err)
|
||||
sys.exit(0)
|
||||
valid, msg = doc.validate()
|
||||
if not valid:
|
||||
print("Validation warnings for input document:")
|
||||
print(msg)
|
||||
|
||||
# Construct the texture baker.
|
||||
baseType = mx_render.BaseType.FLOAT if opts.hdr else mx_render.BaseType.UINT8
|
||||
if platform == "darwin" and not opts.useGlslBackend:
|
||||
baker = mx_render_msl.TextureBaker.create(opts.width, opts.height, baseType)
|
||||
else:
|
||||
baker = mx_render_glsl.TextureBaker.create(opts.width, opts.height, baseType)
|
||||
|
||||
# Bake materials to textures.
|
||||
if opts.average:
|
||||
baker.setAverageImages(True)
|
||||
baker.writeDocumentPerMaterial(opts.writeDocumentPerMaterial)
|
||||
baker.bakeAllMaterials(doc, searchPath, opts.outputFilename)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user