A small module for baking textures from MaterialX (.mtlx) format.
Project description
materialx-baker
Description
A small library for baking textures from .mtlx files. Given an .mtlx it produces a series of .exr files, one for each node graph inside the file.
Table of Contents
Features
- Baking textures to numpy arrays for in memory usage.
- Baking textures to .exr files.
Prerequisites
- python3.11+
- (optional) uv - https://docs.astral.sh/uv/ (for building from source)
Installation
Use pre-build wheel on PYPI.
pip install materialx_baker
Or clone the repository and use uv.
On linux
git clone https://github.com/KidziaK/materialx-baker
cd materialx-baker
uv pip install .
Usage
The main API is very simple and consists of 2 functions: bake_to_numpy(mtlx_path) and bake_to_file(mtlx_path, output_path).
As the names suggest, the first one will output the dictionary of N-dictionaries (where N is the number of node graphs inside the .mtlx).
Each inner dictionary is a key-value pair, where key is the name of the output for the given graph and value is the
numpy array holding a texture.
from materialx_baker import bake_to_numpy
from pathlib import Path
mtlx_path = Path("path_to_mtlx.mtlx")
textures = bake_to_numpy(mtlx_path)
for graph, tex in textures.items():
...
The second function bake_to_file() produces N .exr files with the appropriate textures.
from materialx_baker import bake_to_file
from pathlib import Path
mtlx_path = Path("path_to_mtlx.mtlx")
output_path = Path("output_dir/")
bake_to_file(mtlx_path, output_path) # <mtlx_name>_<graph_name>.mtlx
If you need custom logic for parsing, validating or controlling docs and graphs, you can import and use MTLXBaker class, however it is not recommended.
Testing
# Using pytest
pytest src/
Limitations
- Only works for geometry independent graphs. Geometry nodes like
positionwill cause an error. - Lacks support for certain nodes. These will be added in later versions.
- Output only support .exr. I'm not planning on adding other formats in the future.
- This is not a production ready project and requires some polishing. Use at your own risk.
License
The MIT License (MIT) - see LICENSE.txt
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file materialx_baker-0.1.8.tar.gz.
File metadata
- Download URL: materialx_baker-0.1.8.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ac98b2b288cbe5836e60526e347c226848bc73b15f23468ba5e59c1a8685ac9
|
|
| MD5 |
4f40f84cb9a16d53ccf6787cf0aa0db0
|
|
| BLAKE2b-256 |
279f08f446f5d521276cb06db08b8549f5ea23691a66e7092cc6166bd799bd52
|
File details
Details for the file materialx_baker-0.1.8-py3-none-any.whl.
File metadata
- Download URL: materialx_baker-0.1.8-py3-none-any.whl
- Upload date:
- Size: 9.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4aac6fd6be6c5c771d996c991d48304986872bfdf422ff8f0c3462909cbb4d9f
|
|
| MD5 |
8cd0724b110f309dc48bc26915d8c2be
|
|
| BLAKE2b-256 |
b6386666400513796702887fbff7355f201c14d2a746001a4795a9f65d26ba4e
|