Skip to main content

Utilities handling I/O of MaterialX in JSON format

Project description

MaterialX JSON I/O

Contents

Introduction

This is a Python package for supporting interoperability of MaterialX documents by adding support conversion to / from a JSON representation.

The JSON representation is lossless and is targeted at integrations which prefer to use JSON as a data exchange format instead of XML.

Documentation

Visit the home page for For further information about this package, including links to API documentation and a Jupyter notebook with sample code that expands on the basic Usage example.

Integrations

A plugin using this package is available as a sample as part of QuilitX as of this change [https://github.com/PrismPipeline/QuiltiX/commit/e34ebfec22a334d323803b6797beb8db581ebb18].

Installation

The Python package is losted on PyPi and can be installed using `pip``:

pip install materialxjson

or the source repository can be cloned and the package built from the command line:

python -m build

This will build a distribution folder called dist which contains a zip file which can be installed using:

pip --install <name of zip>

Usage

The following example shows bidirectional conversion:

  1. A MaterialX file in XML format is read in and written to a string in JSON format.
  2. A MaterialX file in JSON format is read in and written to a string in XML format.

Note that any JSON package can be used to perform JSON I/O. The json package is used by the utilities provided in this package.

Package Setup

The materialjson package can be loaded as follows, along with MaterialX and json packages:

import json
import MaterialX as mx
from materialxjson import core

XML to JSON Format Conversion

A MaterialX document can be read in from an XML file as follows:

import pkg_resources

# Read in MaterialX file
mtlxFileName = pkg_resources.resource_filename('materialxjson', 'data/standard_surface_default.mtlx')

doc = mx.createDocument()
mx.readFromXmlFile(doc, mtlxFileName)

and then converted to JSON format as follows by creating a MaterialXJson object and calling the documentToJSON method:

# Create I/O handler
mtlxjson = core.MaterialXJson()

# Write to JSON format
jsonObject = mtlxjson.documentToJSON(doc)

The contents of the JSON object can be extracted out using the json package as follows. (An indentation level of 2 is used to make the output more readable.)

# Convert JSON object to JSON string
jsonString = core.Util.jsonToJSONString(jsonObject)

JSON to XML Format Conversion

A JSON file can be read in as follows. In this case we load the sample file included with the package:

# Get file to load
jsonFileName = pkg_resources.resource_filename('materialxjson', 'data/standard_surface_default_mtlx.json')

# Load JSON file
jsonObject = core.Util.readJson(jsonFileName)

The JSON object is then converted to a MaterialX document and written out to an XML string as follows:

# Create I/O handler
mtlxjson = core.MaterialXJson()

# Read JSON object into document
doc = mx.createDocument()
mtlxjson.documentFromJSON(jsonObject, doc)

# Write to XML String
docstring = core.Util.documentToXMLString(doc)

Caveats

The following are some caveats to be aware of when using this package:

  • There is no equivalent support for "include files" for JSON conversion. The JSON representation is intended to be a single file representation.
  • XML comments are not preserved in the JSON representation.

Author

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

materialxjson-1.39.3.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

materialxjson-1.39.3-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file materialxjson-1.39.3.tar.gz.

File metadata

  • Download URL: materialxjson-1.39.3.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.0

File hashes

Hashes for materialxjson-1.39.3.tar.gz
Algorithm Hash digest
SHA256 1136b5ca69e6905eb3e02e1a6bc6dfbeb115d6adf6fbafec91d2099e3939d317
MD5 bfe976986227d817f07abf86905b46d8
BLAKE2b-256 cd43a5aabc06ab0ca3f119d97faadb77bf2af102b3e34d50ab0ce5dcdf7f728b

See more details on using hashes here.

File details

Details for the file materialxjson-1.39.3-py3-none-any.whl.

File metadata

  • Download URL: materialxjson-1.39.3-py3-none-any.whl
  • Upload date:
  • Size: 17.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.0

File hashes

Hashes for materialxjson-1.39.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ac4f6c941e36c5b7db9aafd22fc281d2e2c21b7c1e8ce28a0521c63a441588aa
MD5 b0980cbe9fff61df16bfe8d5bbd1421d
BLAKE2b-256 2fba8192b2810c8b66f2e6dc3c217cf39da2d20057f4dc7f4f48bf3d38163cd3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page