Commit Graph

880 Commits

Author SHA1 Message Date
Campbell Barton
cccc2c77c5 Cleanup: consistent for C-style comment blocks 2025-08-08 07:37:33 +10:00
Jesse Yurkovich
2822b3badf Fix: USD: Use exr instead of hdr for world light texture
The spec for .usdz permits only a small handful of file formats to be
contained in the archive, and HDR is not among those supported[1]. This
also causes validation errors with the `usdchecker` tool (will be
properly tested in a follow up change).

Ignoring the potential for a user to export a .usdz file with materials
referencing unsupported file formats, Blender itself should use only
the supported formats for its business.

[1] https://openusd.org/release/spec_usdz.html#usdz-specification

Pull Request: https://projects.blender.org/blender/blender/pulls/144101
2025-08-07 20:54:22 +02:00
Falk David
4a013194dd Cleanup: Core: Replace FPS scene macro with member function
Replaces the `FPS` macro with `scene->frames_per_second()`.

The macro has two major issues:
* It hides that it depends on a `Scene *` variable named `scene`.
* It makes debugging harder.

This is now replaced with a member function on the scene.

Pull Request: https://projects.blender.org/blender/blender/pulls/144127
2025-08-07 11:30:25 +02:00
Jesse Yurkovich
cb9ae01c69 Cleanup: USD: Remove some redundant property type checks
For cases where we've already checked that the property is holding a
particular type, use UncheckedGet to ensure the type isn't checked a
second time. This matches all the other call sites doing similar.

Pull Request: https://projects.blender.org/blender/blender/pulls/144084
2025-08-06 21:21:24 +02:00
Damien Picard
5998795aa6 UI: Replace contractions with long-form text
Avoid using contractions for can't, aren't, doesn't, and shouldn't.
Following the writing style guide in the Human Interface Guidelines.

Pull Request: https://projects.blender.org/blender/blender/pulls/143852
2025-08-05 11:16:22 +02:00
Bastien Montagne
0e52304772 Fix building (missing include). 2025-08-04 17:54:15 +02:00
Brecht Van Lommel
526b776417 Fix: Build error with USD/Hydra with some build systems
Move API shared between USD and Hydra to usd_private.hh. It seems ninja
added an include directory other build systems don't.
2025-08-04 17:21:09 +02:00
Dawid Kurek
9afa991316 Hydra: Handle dome light rotation
This refactors the code for world to dome light to be shared between USD and
Hydra, and makes rotations work for Hydra the same way they do in USD.

One small behavior change is that missing image files now render black,
matching Cycles and EEVEE more closely.

Co-authored-by: Brecht Van Lommel <brecht@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/143035
2025-08-04 15:58:37 +02:00
Jesse Yurkovich
bdc0d39aa4 Fix #143722: Set a default exposure for Hydra dome/world light
The Storm hydra delegate requests this property and USD will trace, per
the bug report, if it is not present.

This started happening with the library update for 4.4 which is odd.
The code[1] in Storm has existed forever and so has the USD trace for
requesting data from an empty VtValue.

[1] https://github.com/PixarAnimationStudios/OpenUSD/blame/release/pxr/imaging/hdSt/light.cpp#L305

Pull Request: https://projects.blender.org/blender/blender/pulls/143746
2025-08-01 20:48:23 +02:00
Jacques Lucke
890ab23e0d Refactor: Nodes: return pointer instead of reference from in/output_by_identifier
This makes it possible to use these methods in cases where it's not guaranteed
that the identifier exists on a node.
2025-07-31 21:58:58 +02:00
илья _
b4a355b30d Fix: Ensure world nodes have topology cache for Hydra
Methods like directly_linked_links require a tree topology cache to be there.

Pull Request: https://projects.blender.org/blender/blender/pulls/143670
2025-07-31 19:49:15 +02:00
Damien Picard
f6771d8e21 UI: Improve running jobs labels
Use the form "Processing something..." (gerund, sentence case,
ellipsis) for running jobs progress label, according to Blender's
Human Interface Guidelines.

Pull Request: https://projects.blender.org/blender/blender/pulls/141573
2025-07-31 16:32:41 +02:00
Campbell Barton
d13540fe7d Cleanup: rename locked interface setting functions
Follow the convention of using terms such as get/set as a suffix.
2025-07-30 13:01:43 +10:00
Habib Gahbiche
445eceb02a Nodes: Remove "Use Nodes" in Shader Editor for World
Part of https://projects.blender.org/blender/blender/pulls/141278

Blend files compatibility:
If a World exists and "Use Nodes" is disabled, we add new nodes to the
existing node tree (or create one if it doesn't) that emulates the
behavior of a world without a node tree. This ensures backward and
forward compatibility.

Python API compatibility:
- `world.use_nodes` was removed from Python API => **Breaking change**
- `world.color` is still being used by Workbench, so it stays there,
although it has no effect anymore when using Cycles or EEVEE.

Python API changes:
Creating a World using `bpy.data.worlds.new()` now creates a World with
 an empty (embedded) node tree. This was necessary to enable Python
scripts to add nodes without having to create a node tree (which is
currently not possible, because World node trees are embedded).

Pull Request: https://projects.blender.org/blender/blender/pulls/142342
2025-07-28 14:06:08 +02:00
Habib Gahbiche
cf5be88e7f Fix #143291: USD: World uses wrong output node
The problem was that the first output node was chosen instead of the
active one.

Pull Request: https://projects.blender.org/blender/blender/pulls/143292
2025-07-28 10:27:44 +02:00
Jesse Yurkovich
26c939849c Cleanup: USD: Various C++ cleanups for point instancing export support
- Use Blender C++ containers
- Use const in more places
- Remove unnecessary headers
- Style/guideline cleanups

Pull Request: https://projects.blender.org/blender/blender/pulls/143397
2025-07-28 07:16:26 +02:00
Jesse Yurkovich
f7210eabd8 USD: Enable the allow_unicode export operator property by default
All supported versions of Blender are capable of handling the Unicode
prim and property names now.

It's difficult to determine how much of the USD ecosystem is using
version 24.03 or greater so there is some risk of our files (when they
make use of Unicode names) not loading correctly for other DCC
applications.

Pull Request: https://projects.blender.org/blender/blender/pulls/142747
2025-07-28 07:15:50 +02:00
Campbell Barton
e93e9db6b7 Cleanup: UTF8 string functions for color-space & imbuf strings
Use UTF8 aware functions unless raw bytes are expected.
2025-07-27 04:34:04 +00:00
Campbell Barton
649b89781e Cleanup: ensure UTF8 string copy for DNA & screen data
Use `BLI_strncpy_utf8` & `BLI_snprintf_utf8` for fixed size buffers in
DNA and screen data structures such as panels, menus & operators.

This could be considered a fix as copying a UTF8 string into a smaller
buffer without proper truncation can create an invalid UTF8 sequence.
However identifying which of these users are likely to run into would
be time consuming and not especially useful.
2025-07-26 12:33:15 +00:00
Hans Goudey
9c9695b103 Refactor: Move ReportList definition from DNA to blenkernel
Ever since [0], ReportList is not actually used in any DNA structs.
That makes sense, since reports are conceptually only necessary
at runtime. Move the definition of the struct to BKE_report.hh, and
fix a bunch of include errors where types were previously available
transitively. Besides adding some clarity, theoretically this change
could reduce compile times because of less header parsing.

[0]: 1bf6d8b0b9

Pull Request: https://projects.blender.org/blender/blender/pulls/138872
2025-07-24 15:59:52 +02:00
Jesse Yurkovich
cd6c338ba5 Fix #142972: FBX/USD import crash filling shape key data on empty mesh
The call to `BKE_keyblock_convert_from_mesh` can leave the KeyBlock's
data field null if the passed in mesh has no verts.

Continue to allow the shape keys to be created, but do not attempt to
actually fill them in with data. This seems to match the old FBX
importer's behavior.

Pull Request: https://projects.blender.org/blender/blender/pulls/142995
2025-07-24 08:43:14 +02:00
Campbell Barton
5c7bc1f9c0 Cleanup: use size-comments checked by "make check_size_comments" 2025-07-23 09:59:26 +10:00
Dawid Kurek
e50ced2e80 Hydra: Forward camera custom properties of type double to render delegate
Pull Request: https://projects.blender.org/blender/blender/pulls/142857
2025-07-22 16:28:19 +02:00
Campbell Barton
996210999b Cleanup: use C style comments for descriptive text, doxygen doc-strings
Also replace add-hoc groups in BKE_collision.h with doxy groups.
2025-07-22 11:59:43 +10:00
Habib Gahbiche
a775d58b2e Fix: Assert after importing a USD scene with DomeLight
**How to reproduce the bug:**
Load the attached Blend File OR

1. Create a new World in python: bpy.data.worlds.new("Test")
2. Switch to this new world in the UI (but do nothing else to it)
3. Import in a USD file with a DomeLight (see attached file in PR)
4. Close Blender
5. Observe assert `BLI_assert(ELEM(owner_id, nullptr, id));`

The issue was caused by a assigning a regular node tree
`World->nodetree` whereas an embedded one is expected.

Pull Request: https://projects.blender.org/blender/blender/pulls/142367
2025-07-21 10:21:51 +02:00
Jesse Yurkovich
c2cf3783c4 USD: Rename attr_import_mode option to property_import_mode
This rename creates separation between USD primvars/Blender geometry
attributes - which are not controlled with this setting - and the
concept of USD attributes+userProperties/Blender custom object
properties - that this option deals with.

Ref #134012

Pull Request: https://projects.blender.org/blender/blender/pulls/142301
2025-07-18 20:58:48 +02:00
Jesse Yurkovich
fe54725113 USD: Rename import_subdiv option to import_subdivision
This aligns with the option used for USD export (export_subdivision) and
the option used for FBX import (import_subdivision).

Ref #134012

Pull Request: https://projects.blender.org/blender/blender/pulls/142278
2025-07-18 20:56:01 +02:00
Dawid-Kurek
ccd619bdb2 Hydra: Pass camera's custom croperties to render delegate
Makes it possible to read custom camera properties in a render delegate,
e.g with HdSceneDelegate::GetCameraParamValue().

Pull Request: https://projects.blender.org/blender/blender/pulls/138918
2025-07-18 15:55:18 +02:00
Jesse Yurkovich
84367f8cb9 Fix #142084: Importing broken USD skeletons can crash
The repro file in question contained invalid paths for the USD Skeleton.
This was not detected in our import code which proceeded to create bones
with empty (`""`), incorrect, names and subsequently allowed the
rest-pose setup to use non-existent bones during processing.

The primary fix here is to ensure that all incoming joint paths are both
valid and unique[1]. A secondary fix is made to the rest-pose function
to use our joint-to-bone map to ensure we are using the correct bone
names.

[1] https://openusd.org/release/api/class_usd_skel_skeleton.html#aa6bf8297f4aae6de9fbf1b784c524d30

Pull Request: https://projects.blender.org/blender/blender/pulls/142133
2025-07-17 19:49:29 +02:00
Jesse Yurkovich
1d2c1d2fa7 Fix #141718: Discontinuous rotations on some USD skeleton imports
Due to ambiguity when decomposing the incoming skeleton joint matrix,
it's possible for the returned quaternion rotation to be "flipped" from
the perspective of prior/future frames due to the quaternion
double-cover property. This would manifest as glitchy animations and
subtly incorrect motion blur results during render.

This PR implements the traditional mitigation of comparing with the
prior frame's rotation data and negating the quat if necessary. An
alternate method to instead compare with the rest positions was
attempted but it still allowed flipped/discontinuous rotations for
spinning objects like wheels and propellers.

Pull Request: https://projects.blender.org/blender/blender/pulls/142026
2025-07-17 19:44:46 +02:00
Campbell Barton
ec8751f826 Cleanup: white-space around C-style comment blocks
Also use C++ style comments for disabling code.
2025-07-13 21:58:53 +10:00
Jesse Yurkovich
c8052bd0dc Cleanup: USD: Use string instead of char array for prim_path options
Use `std::string` rather than raw char arrays for `root_prim_path` and
`prim_path_mask`. This is a more natural fit for these arbitrary length
strings and it simplifies downstream consumers of the values.

Pull Request: https://projects.blender.org/blender/blender/pulls/141801
2025-07-11 22:59:35 +02:00
Jesse Yurkovich
319a2a5e57 Cleanup: USD: Use pxr::UsdTimeCode for all time values
Standardize on using `pxr::UsdTimeCode time` rather than the assortment
of other uses we had including:
- double motionSampleTime
- double motion_sample_time
- float time (!)
- pxr::UsdTimeCode timecode

This matches what the USD API itself uses.

The only exception is for the APIs and types defined in usd.hh that need
to be useable inside Blender itself. Those will remain unchanged and
continue to use "double motion_sample_time".

Pull Request: https://projects.blender.org/blender/blender/pulls/141756
2025-07-11 01:28:49 +02:00
Brecht Van Lommel
4653b65f7c Logging: Add DEBUG, TRACE severity, replace numeric levels
The numeric levels have no obvious meaning. This removes the distinction
between severity and levels, instead there is a single list of named levels
with defined meaning.

Debug means information that's mainly useful for developers, and trace is for
very verbose code execution tracing.

Pull Request: https://projects.blender.org/blender/blender/pulls/140244
2025-07-09 20:59:26 +02:00
Jesse Yurkovich
26a511df7a Merge branch 'blender-v4.5-release' 2025-07-08 19:45:03 -07:00
Jesse Yurkovich
a8f543f6a8 Fix: USD: Add MeshSequenceCache modifier for animated crease values
The mesh importer was only checking for animated positions, velocities,
and primvars when determining if a cache modifier needed to be used.
Extend this to crease values (and normals) too.

The added test ensures a base level of coverage here.

Related to: #141633

Pull Request: https://projects.blender.org/blender/blender/pulls/141643
2025-07-09 04:44:30 +02:00
Jesse Yurkovich
779f6cb387 Merge branch 'blender-v4.5-release' 2025-07-07 21:20:02 -07:00
Michael B Johnson
a5f915d3d3 Fix: USD: Correct the exported extents for point instancers
Adds and corrects the extent attributes of USD PointInstancer prims.
Extents are now computed for PointInstancers just before the USD stage
is saved and during the export finalization step. The unit test has been
updated accordingly.

This PR also marks all point instancers' prototypes as over after the
extent calculation is done, including the prototypes used by nested
point instancers. This follows the official USD recommendation to place
prototypes under a point instancer marked as over:
https://openusd.org/docs/api/class_usd_geom_point_instancer.html#:~:text=place%20them%20under%20a%20prim%20that%20is%20just%20an%20%22over%22

Authored by Apple: Zili Zhou (Liz)

Co-authored-by: Zili (Liz) Zhou <zili_zhou@apple.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/141299
2025-07-08 06:19:32 +02:00
Campbell Barton
0ceedc2a7d Cleanup: various non-functional changes in C++ 2025-07-05 09:03:09 +10:00
Hans Goudey
1f92fd7577 Refactor: Use AttrType instead of CustomData type in attribute API
Change `eCustomDataType` to `bke::AttrType` for uses of the attribute
API (the `AttributeAccessor` one anyway). I didn't touch any values that
might be saved in files; those should be handled on a case by case basis.

Part of #122398

Pull Request: https://projects.blender.org/blender/blender/pulls/141301
2025-07-01 22:14:26 +02:00
Jesse Yurkovich
2683c876f0 Fix: Increase maximum collection name length for Collection Export
Follow up to fdaaea6328

The initial collection export code used the wrong define.

Pull Request: https://projects.blender.org/blender/blender/pulls/141239
2025-07-01 20:14:35 +02:00
Jesse Yurkovich
636444ae10 Fix: USD: Use correct ReportList if collection cannot be found for export
The `worker_status` hasn't been initialized yet because the job hasn't
started. Use the incoming `reports` list directly.

Pull Request: https://projects.blender.org/blender/blender/pulls/141242
2025-06-30 15:00:45 -07:00
Jesse Yurkovich
2a1ad5bf6c Fix: USD: Use correct ReportList if collection cannot be found for export
The `worker_status` hasn't been initialized yet because the job hasn't
started. Use the incoming `reports` list directly.

Pull Request: https://projects.blender.org/blender/blender/pulls/141242
2025-06-30 23:59:01 +02:00
Jesse Yurkovich
3e58b6dd6a Cleanup: USD: Various non-functional changes for usd_light_convert.cc
- Remove dead conditionals from usage of `bke::node_add_static_node`
  with known node types
- Include-what-you-use additions

Pull Request: https://projects.blender.org/blender/blender/pulls/141188
2025-06-30 20:55:37 +02:00
Jesse Yurkovich
72de50483e Cleanup: USD: Prevent some unneeded char to string conversions
Notably, there were several code paths which could end up converting to
strings, sometimes multiple times, when passing data into USD APIs.

Reduce the use of raw `char *` in the asset interface and use
`std::string` instead to match what will be passed into USD. Using
string views, of any variety, will not help here since the APIs don't
natively support those.

Pull Request: https://projects.blender.org/blender/blender/pulls/140997
2025-06-26 20:13:25 +02:00
Jesse Yurkovich
8219e2202f Cleanup: USD: Various non-functional changes for usd_hook.cc
Follow our C++ coding guidelines related to member variable naming and
ordering within classes.

Pull Request: https://projects.blender.org/blender/blender/pulls/140785
2025-06-23 19:25:36 +02:00
Jesse Yurkovich
0b45984b44 Merge branch 'blender-v4.5-release' 2025-06-20 11:47:09 -07:00
Jesse Yurkovich
5c25a24528 Fix: USD: Prevent unreachable assert when processing String attributes
Incoming string attributes from USD have never been fully processed yet
they were added to our list of convertible types. This list originally
came from the Mesh reader before it was made common, but for Meshes the
string type was being skipped elsewhere so there was no harm. Now that
Point Clouds and Curves use this common code, it does matter.

Files containing string attributes for these object types will hit the
`BLI_assert_unreachable` call inside `copy_primvar_to_blender_attribute`
and trace an error to the console requesting the user to file bugs. This
was discovered while looking into the old Moana scene.

Remove the string entry for now as there's no regression in behavior and
it prevents the assert from firing (functionally harmless in Release
builds but the output to the terminal is unnecessary).

Pull Request: https://projects.blender.org/blender/blender/pulls/140681
2025-06-20 20:46:32 +02:00
Jesse Yurkovich
2a86a93349 Merge branch 'blender-v4.5-release' 2025-06-18 14:55:49 -07:00
Jesse Yurkovich
5e5c51215a Fix: USD: Only process displacement if there's a valid source specified
Some USD files have the displacement input specified in the shader but
do not have it marked as an output in either the shader or the material.

Skip processing if we do not have a valid displacement source.

Pull Request: https://projects.blender.org/blender/blender/pulls/140619
2025-06-18 23:55:04 +02:00