These are very out of date. Specifically Alembic and USD.
Chapter 5.1.1 Topbar and Statusbar - File menu
Details
SHA-1: ff8261ff6a3fc4616ed55578dc0efb5b695af982
* USD: Small wording and layout changes for custom properties options
Make the recently added option descriptions a bit more consistent with
each other.
Small layout change to not have so much spacing between the 2 related
export options and move them under the existing options.
Pull Request: https://projects.blender.org/blender/blender/pulls/121198
Details
SHA-1: 241538006183c639571707e965a185fb292c369b
* USD Export: Adding the ability to choose Stage Up Axis at export time.
This patch allows the user to choose the Stage Up Axis at export time,
allowing the export to match another target software package. The most
common is reorienting to Y up. The up axis is written to stage metadata
and a top-level orientation is applied to reorient objects in the Stage.
The new orientation is required because the Stage metadata `upAxis` is,
apparently, not used during certain USD composition arcs. The
recomendation is to only use a single `upAxis` throughout the pipeline
and this option here allows files produced by Blender to more easily
conform to the conventions used as needed.
Co-authored-by: Charles Wardlaw
Pull Request: https://projects.blender.org/blender/blender/pulls/121226
Details
SHA-1: a71027d37f554284776a2f6f7c87b4c9ecbffb6d
* glTF exporter: UDIM for merged channel textures
Was never implemented
Details
![image](https://github.com/Bforartists/Manual/assets/35357409/9137a868-034e-4cfc-83fa-c2a8a3b49ef3)
Details
SHA-1: a6a5fd053a3cd036ac06028dc11c5b4c37e7935a
* USD Export: filtering option for types to export
Added option for filtering types of objects to export. Meshes,
materials, lights, cameras, volumes, and curves are all equally
supported.
This is useful for many situations in which a user might want a
subset of objects from a Collection without wanting to build a
sub-collection or otherwise reorganize their scene. Exporting
Armatures and their animation as UsdSkel objects and UsdSkelAnim
clips, but without meshes, is a good example.
Co-authored-by: Charles Wardlaw
Pull Request: https://projects.blender.org/blender/blender/pulls/121325
Details
SHA-1: bfa54f22ceb1833245af7b741751baf02039c18c
* USD Import: Added an option to import only defined prims
Prims in a UsdStage can be created directly (def) or as an over. Overs
might not always be desired at import time. This patch adds the ability
to choose whether to load only defined prims (the default behaviour, and
as it exists currently in main). By unchecking this option at import
time, prims created as overs will also be imported.
Co-authored-by: Charles Wardlaw
Pull Request: https://projects.blender.org/blender/blender/pulls/121321
Details
SHA-1: b2d1979882f96c7894298e8d424f952e706b12c0
* USD Export: option to triangulate meshes
This allows for the source of truth data in the Blender scene to remain
untouched while producing triangulated output suitable for game and VR
pipelines, where only triangles are ingested. This addition aligns USD
with some of the other exporters which offer a similar feature.
Co-authored-by: Charles Wardlaw
Pull Request: https://projects.blender.org/blender/blender/pulls/121274
Details
SHA-1: 3e73b9caa5a1aac2d3c2eaa5dee8e19081135b40
* USD Export: Add the ability to downsample textures for USDZ
This allows for exporting multiple versions of an asset's textures
without having to manually save or do manual edits from within the UI.
This is beneficial for game creators who might want to store the
original textures at full resolution, but then bake down at export time
for multiple different targets quality levels. It can also be good for
compressing textures for VR usage.
This only affects USDZ exports.
Default option: Keep textures at the same resolution. Choosing a
resolution will downsample any images that exceed that maximum
resolution while leaving the others.
A custom setting is provided to allow the user to manually enter their
desired size if the provided options aren't suitable.
Co-authored-by: Charles Wardlaw
Pull Request: https://projects.blender.org/blender/blender/pulls/121237
Details
SHA-1: 9ad2c7df0b8f0346d050ddcd7bd3838cd47fd11d
* USD: implement native Unicode support
Make use of USD's new UTF-8 support to allow our import/export code to
accept and generate appropriate USD files. This has been a long standing
shortcoming since USD's introduction, with incomplete and complicated
DCC-specific workarounds often attempted.
Summary of changes
- Export gets a new "Allow Unicode" option defaulting to "false". The
new Unicode USD files are not backward compatible. DCCs using older
versions of USD (before 24.03) will not be able to load such files so
we want to provide this as an opt-in option for now.
- Every location which used to call either `USDHierarchyIterator::make_valid_name`
or `pxr::TfMakeValidIdentifier` will now go through a new `make_safe_name`
API instead
- Export code is responsible for passing in the `allow_unicode` option
- Import code will always pass in `true` meaning Blender will happily
accept both existing and new Unicode USD files
Strangely, USD does not provide a convenient way of making valid UTF-8
identifiers and they left their old API unchanged. We had to roll our
own per their advice: https://forum.aousd.org/t/how-to-make-a-unicode-identifier-valid/1435
Pull Request: https://projects.blender.org/blender/blender/pulls/122471
Details
SHA-1: f913fb615905aaa5af68f2d90ca7fc7640683229
* USD: Add MaterialX shader export
This change adds the ability to export MaterialX networks into the resulting
USD layer.
Details:
A new export option has been added to the USD export to enable MaterialX
export. It is off by default currently due to reasons in the caveats
section.
When enabled, it exports the MaterialX shading network alongside the
UsdPreviewSurface network, on the same USD Material. This allows the same
material to be used by renderers that don't support MaterialX, using the
USDPreviewSurface as a fallback. This is similar to setups in other DCC
packages, and matches the format we've used in our Reality Composer Pro
asset library.
It uses the existing MaterialX framework used to generate MaterialX
documents for rendering, to act as the basis for the USD graph. In this
process it also re-uses the existing texture export code as well if provided
and necessary.
Once the MaterialX document is created, use usdMtlx to generate a USD
shading network. Unfortunately, usdMtlx generates a graph that is unlike
what other DCCs that support MaterialX-embedded-in-USD generates. It
generates several extra prim hierarchies, and externalizes all shader
inputs, making them difficult to edit in other MaterialX graph editors.
To workaround this, generate the MaterialX shading network onto a
temporary stage, where we then run various pre-processing steps to prevent
prim collisions and to reflow the paths once they're converted.
The PrimSpecs are then copied over to their new path. The resulting prim
hierarchy matches what many artists we've worked with prefer to work with.
Caveats:
The Export MaterialX check is off by default. When using the Principled
BSDF, the resulting graph is very usable. However, when using some of the
other BSDFs, the shading networks generated by the existing MaterialX
framework in Blender generate some shading graphs that are difficult for
usdview and other DCC's to understand. The graph is still correct, but
because we're trying to prioritize compatibility, the default is off.
In future PRs we can aim to make the graphs for those other BSDFs play
better with other DCCs.
Other Implementation Details:
As part of this commit we've also done the following:
* Place some of the materialx graphs inside a passthrough nodegraph to
avoid node conflicts.
* Better handle some shader output types , and better handle some
conflict cases.
* Moved the ExportTextureFunction to materials.h due to some difficult
to resolve header ordering issues. This has no effect on any runtime code.
* There is a test for the MaterialX export that does some basic checking to
make sure we get an export out the other end that matches our expectations
Authored by Apple: Dhruv Govil
This PR is based on an earlier implementation by Brecht van Lommel , as well
as Brian Savery and his teams' work at AMD to implement the general
MaterialX framework within Blender.
Pull Request: https://projects.blender.org/blender/blender/pulls/122575
VS
These are very out of date. Specifically Alembic and USD.
Chapter 5.1.1 Topbar and Statusbar - File menu
Details
SHA-1: ff8261ff6a3fc4616ed55578dc0efb5b695af982 * USD: Small wording and layout changes for custom properties options Make the recently added option descriptions a bit more consistent with each other. Small layout change to not have so much spacing between the 2 related export options and move them under the existing options. Pull Request: https://projects.blender.org/blender/blender/pulls/121198Details
SHA-1: 241538006183c639571707e965a185fb292c369b * USD Export: Adding the ability to choose Stage Up Axis at export time. This patch allows the user to choose the Stage Up Axis at export time, allowing the export to match another target software package. The most common is reorienting to Y up. The up axis is written to stage metadata and a top-level orientation is applied to reorient objects in the Stage. The new orientation is required because the Stage metadata `upAxis` is, apparently, not used during certain USD composition arcs. The recomendation is to only use a single `upAxis` throughout the pipeline and this option here allows files produced by Blender to more easily conform to the conventions used as needed. Co-authored-by: Charles WardlawDetails
SHA-1: a71027d37f554284776a2f6f7c87b4c9ecbffb6d * glTF exporter: UDIM for merged channel textures Was never implementedDetails
![image](https://github.com/Bforartists/Manual/assets/35357409/9137a868-034e-4cfc-83fa-c2a8a3b49ef3)Details
SHA-1: a6a5fd053a3cd036ac06028dc11c5b4c37e7935a * USD Export: filtering option for types to export Added option for filtering types of objects to export. Meshes, materials, lights, cameras, volumes, and curves are all equally supported. This is useful for many situations in which a user might want a subset of objects from a Collection without wanting to build a sub-collection or otherwise reorganize their scene. Exporting Armatures and their animation as UsdSkel objects and UsdSkelAnim clips, but without meshes, is a good example. Co-authored-by: Charles WardlawDetails
SHA-1: bfa54f22ceb1833245af7b741751baf02039c18c * USD Import: Added an option to import only defined prims Prims in a UsdStage can be created directly (def) or as an over. Overs might not always be desired at import time. This patch adds the ability to choose whether to load only defined prims (the default behaviour, and as it exists currently in main). By unchecking this option at import time, prims created as overs will also be imported. Co-authored-by: Charles WardlawDetails
SHA-1: b2d1979882f96c7894298e8d424f952e706b12c0 * USD Export: option to triangulate meshes This allows for the source of truth data in the Blender scene to remain untouched while producing triangulated output suitable for game and VR pipelines, where only triangles are ingested. This addition aligns USD with some of the other exporters which offer a similar feature. Co-authored-by: Charles WardlawDetails
SHA-1: 3e73b9caa5a1aac2d3c2eaa5dee8e19081135b40 * USD Export: Add the ability to downsample textures for USDZ This allows for exporting multiple versions of an asset's textures without having to manually save or do manual edits from within the UI. This is beneficial for game creators who might want to store the original textures at full resolution, but then bake down at export time for multiple different targets quality levels. It can also be good for compressing textures for VR usage. This only affects USDZ exports. Default option: Keep textures at the same resolution. Choosing a resolution will downsample any images that exceed that maximum resolution while leaving the others. A custom setting is provided to allow the user to manually enter their desired size if the provided options aren't suitable. Co-authored-by: Charles WardlawDetails
SHA-1: 9ad2c7df0b8f0346d050ddcd7bd3838cd47fd11d * USD: implement native Unicode support Make use of USD's new UTF-8 support to allow our import/export code to accept and generate appropriate USD files. This has been a long standing shortcoming since USD's introduction, with incomplete and complicated DCC-specific workarounds often attempted. Summary of changes - Export gets a new "Allow Unicode" option defaulting to "false". The new Unicode USD files are not backward compatible. DCCs using older versions of USD (before 24.03) will not be able to load such files so we want to provide this as an opt-in option for now. - Every location which used to call either `USDHierarchyIterator::make_valid_name` or `pxr::TfMakeValidIdentifier` will now go through a new `make_safe_name` API instead - Export code is responsible for passing in the `allow_unicode` option - Import code will always pass in `true` meaning Blender will happily accept both existing and new Unicode USD files Strangely, USD does not provide a convenient way of making valid UTF-8 identifiers and they left their old API unchanged. We had to roll our own per their advice: https://forum.aousd.org/t/how-to-make-a-unicode-identifier-valid/1435 Pull Request: https://projects.blender.org/blender/blender/pulls/122471Details
SHA-1: f913fb615905aaa5af68f2d90ca7fc7640683229 * USD: Add MaterialX shader export This change adds the ability to export MaterialX networks into the resulting USD layer. Details: A new export option has been added to the USD export to enable MaterialX export. It is off by default currently due to reasons in the caveats section. When enabled, it exports the MaterialX shading network alongside the UsdPreviewSurface network, on the same USD Material. This allows the same material to be used by renderers that don't support MaterialX, using the USDPreviewSurface as a fallback. This is similar to setups in other DCC packages, and matches the format we've used in our Reality Composer Pro asset library. It uses the existing MaterialX framework used to generate MaterialX documents for rendering, to act as the basis for the USD graph. In this process it also re-uses the existing texture export code as well if provided and necessary. Once the MaterialX document is created, use usdMtlx to generate a USD shading network. Unfortunately, usdMtlx generates a graph that is unlike what other DCCs that support MaterialX-embedded-in-USD generates. It generates several extra prim hierarchies, and externalizes all shader inputs, making them difficult to edit in other MaterialX graph editors. To workaround this, generate the MaterialX shading network onto a temporary stage, where we then run various pre-processing steps to prevent prim collisions and to reflow the paths once they're converted. The PrimSpecs are then copied over to their new path. The resulting prim hierarchy matches what many artists we've worked with prefer to work with. Caveats: The Export MaterialX check is off by default. When using the Principled BSDF, the resulting graph is very usable. However, when using some of the other BSDFs, the shading networks generated by the existing MaterialX framework in Blender generate some shading graphs that are difficult for usdview and other DCC's to understand. The graph is still correct, but because we're trying to prioritize compatibility, the default is off. In future PRs we can aim to make the graphs for those other BSDFs play better with other DCCs. Other Implementation Details: As part of this commit we've also done the following: * Place some of the materialx graphs inside a passthrough nodegraph to avoid node conflicts. * Better handle some shader output types , and better handle some conflict cases. * Moved the ExportTextureFunction to materials.h due to some difficult to resolve header ordering issues. This has no effect on any runtime code. * There is a test for the MaterialX export that does some basic checking to make sure we get an export out the other end that matches our expectations Authored by Apple: Dhruv Govil This PR is based on an earlier implementation by Brecht van Lommel , as well as Brian Savery and his teams' work at AMD to implement the general MaterialX framework within Blender. Pull Request: https://projects.blender.org/blender/blender/pulls/122575