While there may be arguments for different positions of the selection
inputs, it's important to be consistent, and putting them right after
the corresponding geometry works well when there are multiple
geometry inputs. Addresses T91646.
This commit adds a fields version of the mesh to curve node, with a
field for the input selection. In order to reduce code duplication,
it adds the mesh to curve conversion to the new geometry module
and calls that implementation from both places.
More details on the geometry module can be found here: T86869
Differential Revision: https://developer.blender.org/D12579
The sockets are not exposed in any nodes yet.
They work similar to the Object/Collection/Texture sockets,
which also just reference a data block.
Based on rB207472930834
Reviewed By: JacquesLucke
Differential Revision: https://developer.blender.org/D12861
Add a boolean field to the Set Position Node. This value allows
for each point to either have its position set to the input position
value or have the input value added to the current position.
Differential Revision: https://developer.blender.org/D12773
This changes the edge split node to have a selection input, which is
more aligned with the other design changes. This loses the ability to
split edges based on an angle, but the edge angle can be added as a
field input node in the future, which will make for a much more
flexible system.
Differential Revision: https://developer.blender.org/D12829
Previously the attribute capture node only worked on realized geometry,
which was very confusing when other nodes worked on each individual
instance. The realize instances node is the way to explicitly change
between the two behaviors. Addresses T92155.
Differential Revision: https://developer.blender.org/D12841
Adds a node that can rotate each of a geometry's instances in global
(to the modifier object) or local space (of each point) by a specified
angle around a pivot point.
In the future, separating the local-global choice for the pivot and the
rotation might be useful. However, for now the node is kept simple.
Differential Revision: https://developer.blender.org/D12682
Adds a node that can scale a geometry's instances. With "Local" turned
on, the instance is scaled individually from the center point input,
while when local space is turned off, it's more like the transform
node, except it scales outward from the center point instead of only
from the origin.
Differential Revision: https://developer.blender.org/D12681
Add a boolean selection field to the Instance on Points node.
This will select which points from the source geometry will be used
to create the instances.
Differential Revision: https://developer.blender.org/D12847
Adds a node that can translate instances in the transform space of
the modifier object, or the local space of their original transform.
One reason to have a special node for instances is that they always
have the existing transform, unlike mesh or point cloud points.
Differential Revision: https://developer.blender.org/D12679
Check when the node fails to create BVH trees, and fill the result
with zero in that case, which is most likely the expected value when
the node encounters an error. Warnings will be added with a separate
patch.
There was only a check for the component but not for if it was empty.
Because the curve fill node produces an empty curve component, a
nullptr was read, causing a crash. Generally nodes shouldn't produce
empty components, but currently we cannot rely on that fact.
Differential Revision: https://developer.blender.org/D12838
For fixed pivots, make sure the correct pivot axis is being used.
Also add continues or invalid rotations.
Differential Revision: https://developer.blender.org/D12824
There is not enough time before the release to improve Random Walk to handle
all cases this was used for, so restore it for now.
Since there is no more path splitting in cycles-x, this can increase noise in
non-flat areas for the sample number of samples, though fewer rays will be traced
also. This is fundamentally a trade-off we made in the new design and why Random
Walk is a better fit. However the importance resampling we do now does help to
reduce noise.
Differential Revision: https://developer.blender.org/D12800
This commit implements T91780, adding nodes to get and set builtin
attributes. Individual set nodes are used so that the values can be
exposed for direct editing, which is useful for attributes like shade
smooth and spline resolution. Individual input nodes are used to allow
reusing nodes for multiple components, and to allow grouping multiple
outputs conceptually in the same node in the future.
Input Nodes
- Radius
- Curve Tilt
- Curve Handle Positions
- Is Shade Smooth
- Spline Resolution
- Is Spline Cyclic
'Set' Nodes
- Curve Radius
- Point Radius
- Curve Tilt
- Curve Handle Positions
- Is Shade Smooth
- Spline Resolution
- Is Spline Cyclic
Using hardcoded categories is necessary to add separators to the node
menu.
Differential Revision: https://developer.blender.org/D12687
Delete Geometry:
This adds a copy of the old node in the legacy folder and updates the
node to work with fields. The invert option is removed, because it is
something that should be very easy with fields, and to be consistent
with other nodes which have a selection. There is also a dropdown to
select the domain, because the domain can't be determined from the
field input. When the domain does not belong on any of the components
an info message is displayed.
Separate Geometry:
A more general version of the old Point Separate node. The "inverted"
output is the same as using the delete geometry node.
Differential Revision: https://developer.blender.org/D12574
This commit introduces the Align Euler to Vector function node which
rotates to a body into a given direction. The node replaces the legacy
"Align Rotation to Vector" node, which only worked on an attribute
named `rotation` internally. The "Euler" in the name is meant to make
it clearer that the rotation isn't interchangeable with a regular
vector.
Addresses T91374.
Differential Revision: https://developer.blender.org/D12726
Move texture nodes to C++ and use new socket declaration
Brick, Checker, Image, Magic and Wave
Differential Revision: https://developer.blender.org/D12778
Rename the "String Join" node to "Join Strings" to
go with the verb first naming convention.
Differential Revision: https://developer.blender.org/D12678
Fix the selection logic on the Handle Type Selection node to work
as intended:
(Left is Selected AND Left is ChosenType)
OR
(Right is Selected AND Right is ChosenType)
This update allows the Trim Curve node to use float field inputs
for the start and end inputs. These fields are evaluated on the
spline domain.
Differential Revision: https://developer.blender.org/D12744
See T91826, there is a bug in the code where both `.` and `_` are used as a seperator for `BLI_uniquename_cb`.
This resulted in some nodes becoming disconnected on file load.
Until this is resolved, the chnages are reverted to prevent data loss.
This node creates a boolean field selection of bezier spline points
that have a handle of the given type on the selected 'side' of the
contol point. This is evaluated on the point domain.
Differential Revision: https://developer.blender.org/D12559