Find a file
Michael Kowalski 319c64205d USD: Scene graph instancing export
Refactored USD instancing export to support instanceable references.

With this change, it's now possible to instance object hierarchies and
geometry types other than meshes (e.g., curves, point clouds, etc.).

No longer marking mesh prims as instances in
USDGenericMeshWriter::write_mesh().

USDTransformWriter::do_write() now marks the Xform as instanceable
with a reference to the prototype's Xform when the Blender object is
an instance.

In USDAbstractWriter::mark_as_instance() the target prim is now marked
as instanceable.

Added AbstractHierarchyIterator virtual functions include_data_writers()
and include_child_writers() to allow pruning children of instanceable Xforms
in AbstractHierarchyIterator::make_writers(). These functions return true
in the base class implementation, so that the iterator behavior for Alembic
exports is unaffected.  In the USDHierarchyIterator subclass, these functions
are overridden to return false if instancing is enabled and the objects are
instances.

Added virtual function AbstractHierarchyIterator::should_determine_duplication_references()
which returns true if duplication references should be resolved for children
of a given context.  This function is overridden in USDHierarchyIterator to
skip processing children of instances, which is more efficient for USD export,
since children of instances are pruned during traversal for writing.  For nested
instances where the original prototype is not included in the export, this also
avoids designating a duplicated object parented to an instance as "the original",
which would cause USD errors since defining a prim under an instance
proxy is not allowed.

Extended logic in `AbstractHierarchyIterator::determine_duplication_references()`
to identify prototypes.

Added new function `HierarchyContext::is_prototype()`.

Disallowing merging with parent for instances and prototypes, since
the Xforms cannot be discarded in those cases.

Extended `USDWriterAbstract::ensure_usd_material()` with special logic
to ensure materials for prototype prims are defined in the subtree of the
prototype.  This helps ensure the hierarchical encapsulation requirement
for prototypes and is required by certain renderers (e.g., Houdini's Karma)
for instance materials to render.

Added a new `process_scene_graph_instances()` function to ensure
prototypes are exported as abstract prims.

Added python tests test_export_native_instancing_true and
test_export_native_instancing_false.

Pull Request: https://projects.blender.org/blender/blender/pulls/131707
2025-01-28 15:51:56 +01:00
.gitea Report template: Add link to manual system information collection page 2024-11-19 01:05:52 +01:00
.github Funding: Add FUNDING.yml to link to fund.blender.org on GitHub mirror 2024-07-31 10:03:57 +02:00
build_files Build: Add support for absolute paths for builddir in make.bat 2025-01-26 21:20:53 +01:00
doc PyDocs: Fix broken type section 2025-01-25 20:44:37 -05:00
extern Fix #105164: Blender exits when QuadriFlow solver fails 2025-01-22 19:27:00 +11:00
intern Cleanup: Remove unused includes in blenkernel 2025-01-28 15:27:34 +01:00
lib Clang Format: disable formatting lib/, same as was done for extern/ 2025-01-04 18:35:11 +01:00
locale I18N: Updated UI translations from git/weblate repository (40f7ba8cb18d1d). 2025-01-27 12:22:29 +01:00
release UI: Flip Material icon horizontally 2025-01-28 00:05:07 +01:00
scripts Anim: fix 'Fix to Camera' poll function exception when camera is missing 2025-01-28 14:13:53 +01:00
source USD: Scene graph instancing export 2025-01-28 15:51:56 +01:00
tests USD: Scene graph instancing export 2025-01-28 15:51:56 +01:00
tools Tools; blendfile & blend2json: Add support for ZSTD compressed files! 2025-01-24 15:01:24 +01:00
.clang-format ClangFormat: Remove unused sculpt macro exceptions 2024-11-12 00:44:24 +01:00
.clang-tidy Clang Tidy: Ignore some newer readability warnings 2025-01-02 16:22:44 +01:00
.editorconfig editorconfig: add HTML entry 2023-12-08 13:28:13 +11:00
.git-blame-ignore-revs
.gitignore Git: ignore compile_commands.json 2025-01-08 16:42:50 +01:00
.gitmodules Revert "Release cycle: Blender 4.3 Beta" 2024-10-02 12:35:26 +02:00
AUTHORS Vulkan: Add support for dynamic rendering local read 2025-01-13 08:10:31 +01:00
CMakeLists.txt macOS/QuickLook: support rich thumbnail in Finder 2025-01-23 17:00:19 +01:00
COPYING
GNUmakefile Tools: remove project_netbeans 2025-01-02 16:01:17 +11:00
make.bat make license: command to update the license file 2024-10-18 17:09:43 +02:00
pyproject.toml pyproject.toml: correct autopep8 configuration for 2.3.1 2024-10-16 20:55:03 +11:00
README.md Docs: Replace most wiki links with links to new developer docs 2024-01-18 16:49:38 +01:00

Blender

Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.

Blender screenshot

Project Pages

Development

License

Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different, but compatible license.

See blender.org/about/license for details.