[Bf-usd] USD experimental development branch proposal

Sybren A. Stüvel sybren at blender.org
Fri Aug 6 12:09:23 CEST 2021


Hello,

On Fri, 6 Aug 2021 at 02:30, Michael A Kowalski <makowalski at nvidia.com>
wrote:

> As part of the ongoing USD development effort, I would like to propose
> establishing a USD experimental branch on git.blender.org, initially
> based on the design and feature list described below.
>

For further development of USD features, it's probably better to not have a
single, long-lived branch. It'll be simpler to work on smaller,
feature-specific branches that can be reviewed & merged into the master
branch. Not only will it make the process of reviewing and testing changes
easier, it'll also help in making features available to general Blender
users more quickly.

UNIVERSAL MATERIAL MAPPING (UMM) SUPPORT
>
>
>
> Conversion to and from MDL materials is accomplished using the UMM addon.
> UMM is a tool developed by NVIDIA that allows users to specify custom rules
> for converting between arbitrary shader networks.
>

I'm wondering about the Universal Material Mapping add-on. It is described
as if it's an already-existing tool by NVIDIA, but I can't find it when I
do a web search
<https://duckduckgo.com/?q=Universal+Material+Mapping+nvidia> for it.
It could be really powerful (for studios) to have such a mapping defined in
Python. However, so far the USD code is purely written in C++, and doesn't
rely on any Python add-on. IF Python code is going to be used in this
process, I would strongly suggest a way to make things work also when the
add-on is disabled or otherwise not available (as in, not crash or disable
the import/export, but just have somewhat more limited functionality).

This addon is GPL compatible open source and is implemented purely in
> Python, with no dependencies on additional libraries or modules.  It could
> potentially be distributed as part of the Blender build, or it could be
> provided separately, to be installed by the user.
>

I don't think it's a good idea to limit Blender's USD import/export
functionality in such a way. If it's so simple (as in, no dependencies),
why wouldn't it be bundled with Blender?

Cheers,
Sybren

On Fri, 6 Aug 2021 at 02:30, Michael A Kowalski <makowalski at nvidia.com>
wrote:

> Hello everyone,
>
>
>
> As part of the ongoing USD development effort, I would like to propose
> establishing a USD experimental branch on git.blender.org, initially
> based on the design and feature list described below.
>
>
>
> Feedback and comments are welcome!
>
>
>
> Thank you.
>
>
>
> Best Regards,
>
> Michael
>
>
>
>
>
>
>
> USD BRANCH DESIGN AND FEATURES
>
>
>
> The proposed experimental USD branch will contain enhancements to
> Blender’s USD importer and exporter, including support for MDL material
> conversion through a Universal Material Mapper (UMM) addon.
>
>
>
> The extensions to the USD importer and exporter adhere closely to the
> current USD IO module design, implemented as a collection of USD reader and
> writer classes which handle converting between USD primitives and Blender
> objects.  This design will be compatible with plans to implement
> collection-based IO in Blender in the future.
>
>
>
> The implementation consists of source code which originated in branches
> open-sourced by Tangent Animation, combined with contributions from
> NVIDIA.  The modifications in this branch are incremental to the Blender
> 3.0 release, with updates pulled from the master branch on a regular basis.
>
>
>
> The following is a list of new IO features and improvements supported in
> this branch:
>
>
>
>    * Instancing import:  Import USD scene instances as Blender collection
> instances.
>
>
>
>    * Instancing export:  Extend the existing instancing option to support
> exporting arbitrary object hierarchies as USD scene instances.  Additional
> support for exporting Blender particle systems as USD point instancers.
>
>
>
>    * Environment map IO:  Logic to convert between USD dome lights and
> Blender world materials, including environment textures.
>
>
>
>    * Unit conversion scene scale:  Automatically scale the scene for unit
> conversion on import and export (e.g., scale the imported objects based on
> the USD’s meters per unit value).
>
>
>
>    * Curve export.
>
>
>
>    * Armature export:  Export armatures and skinned meshes to USD
> skeletons and skeletal animations.
>
>
>
>    * Light unit conversion:  Experimental code to convert between light
> intensity units in Nits and Blender’s light energy units, on import and
> export.
>
>
>
>    * Transform operator options:  Option to save transforms to USD as the
> combination of scale, rotate and translate operators, where the rotation
> can be expressed as Euler angles or a quaternion.
>
>
>
>    * Export to USD shader nodes:  Convert Blender shader nodes to
> UsdPreviewSurface nodes, MDL material nodes or a custom USD representation
> of Cycles shaders.
>
>
>
>    * Import MDL materials:  Convert MDL materials to Blender shader
> networks.
>
>
>
>    * Texture export:  An option to save textures to a directory relative
> to the USD being exported, using either absolute or relative asset paths.
> This feature works with UDIM tiles as well as packed and in-memory “baked”
> textures.
>
>
>
>    * Option to specify a default primitive on export.
>
>
>
>    * Option to add a root primitive on export. This option adds a single
> prim as the parent of all exported prims.
>
>
>
> Near term work in progress includes:
>
>
>
>    * Option to export meshes as individual USD “prop” files that are
> referenced in the scene.
>
>
>
>
>
> UNIVERSAL MATERIAL MAPPING (UMM) SUPPORT
>
>
>
> Conversion to and from MDL materials is accomplished using the UMM addon.
> UMM is a tool developed by NVIDIA that allows users to specify custom rules
> for converting between arbitrary shader networks.  Although it’s currently
> used for translating MDL shaders, it could potentially be used to convert
> any material type.  The UMM addon Python module provides an API for the
> conversion which is invoked by the USD exporter using the C Python API.
> This addon is GPL compatible open source and is implemented purely in
> Python, with no dependencies on additional libraries or modules.  It could
> potentially be distributed as part of the Blender build, or it could be
> provided separately, to be installed by the user.
>
>
>
>
>
>
> _______________________________________________
> Bf-usd mailing list
> Bf-usd at blender.org
> List details, subscription details or unsubscribe:
> https://lists.blender.org/mailman/listinfo/bf-usd
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.blender.org/pipermail/bf-usd/attachments/20210806/7e77edc1/attachment.htm>


More information about the Bf-usd mailing list