|
Blender V4.3
|
Classes | |
| class | InverseEvalParams |
| struct | LocalInverseEvalTargets |
| struct | SocketToUpdate |
Typedefs | |
| using | RNAValueVariant = std::variant<float, int, bool> |
| using blender::nodes::inverse_eval::RNAValueVariant = std::variant<float, int, bool> |
Definition at line 359 of file inverse_eval.cc.
| bool blender::nodes::inverse_eval::backpropagate_socket_values | ( | bContext & | C, |
| Object & | object, | ||
| NodesModifierData & | nmd, | ||
| geo_eval_log::GeoModifierLog & | eval_log, | ||
| Span< SocketToUpdate > | sockets_to_update ) |
Try to change socket/node/modifier values so that the given sockets will have a specific value.
Definition at line 685 of file inverse_eval.cc.
References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), backpropagate_socket_values_through_node(), BLI_assert, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::contains(), convert_single_socket_value(), blender::nodes::partial_eval::eval_upstream(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::is_empty(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::keys(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr(), NodesModifierData::modifier, ModifierData::name, blender::nodes::NodeInContext::node, NodesModifierData::node_group, set_modifier_value(), set_socket_value(), set_value_node_value(), blender::nodes::SocketInContext::socket, blender::nodes::partial_eval::UpstreamEvalTargets::sockets, and blender::nodes::partial_eval::UpstreamEvalTargets::value_nodes.
Referenced by blender::nodes::gizmos::apply_gizmo_change().
|
static |
Definition at line 626 of file inverse_eval.cc.
References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::nodes::NodeInContext::context, blender::nodes::geo_eval_log::GeoTreeLog::ensure_socket_values(), blender::bke::bNodeType::eval_inverse, get_logged_socket_value(), blender::nodes::geo_eval_log::GeoModifierLog::get_tree_log(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::items(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr(), blender::nodes::NodeInContext::node, node, and params.
Referenced by backpropagate_socket_values().
| std::optional< bke::SocketValueVariant > blender::nodes::inverse_eval::convert_single_socket_value | ( | const bNodeSocket & | old_socket, |
| const bNodeSocket & | new_socket, | ||
| const bke::SocketValueVariant & | old_value ) |
Performs implicit conversion from the old to the new socket on the given value, if possible.
Definition at line 43 of file inverse_eval.cc.
References blender::bke::SocketValueVariant::allocate_single(), blender::bke::DataTypeConversions::convert_to_uninitialized(), blender::bke::get_implicit_type_conversions(), blender::bke::SocketValueVariant::get_single_ptr_raw(), blender::bke::DataTypeConversions::is_convertible(), bNodeSocket::type, and bNodeSocket::typeinfo.
Referenced by blender::nodes::gizmos::apply_gizmo_change(), and backpropagate_socket_values().
|
static |
Definition at line 204 of file inverse_eval.cc.
References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::nodes::NodeInContext::context, blender::bke::bNodeType::eval_elem, blender::nodes::value_elem::ElemVariant::intersect(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr(), blender::nodes::NodeInContext::node, node, and params.
Referenced by foreach_element_on_inverse_eval_path().
|
static |
Definition at line 69 of file inverse_eval.cc.
References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::nodes::NodeInContext::context, blender::bke::bNodeType::eval_inverse_elem, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr(), blender::nodes::NodeInContext::node, node, and params.
Referenced by find_local_inverse_eval_targets(), and foreach_element_on_inverse_eval_path().
| LocalInverseEvalTargets blender::nodes::inverse_eval::find_local_inverse_eval_targets | ( | const bNodeTree & | tree, |
| const SocketElem & | initial_socket_elem ) |
Scans the node tree backwards from the given socket to figure out which values may need to change to set the given socket to a specific value.
Definition at line 127 of file inverse_eval.cc.
References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), BLI_assert, blender::nodes::value_elem::SocketElem::elem, blender::nodes::partial_eval::eval_upstream(), evaluate_node_elem_upstream(), blender::nodes::value_elem::get_elem_variant_for_socket_type(), get_input_elems_to_propagate(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr(), propagate_socket_elem(), blender::nodes::value_elem::SocketElem::socket, blender::nodes::partial_eval::UpstreamEvalTargets::sockets, tree, and blender::nodes::partial_eval::UpstreamEvalTargets::value_nodes.
Referenced by blender::nodes::gizmos::build_tree_gizmo_propagation().
| void blender::nodes::inverse_eval::foreach_element_on_inverse_eval_path | ( | const ComputeContext & | initial_context, |
| const SocketElem & | initial_socket_elem, | ||
| FunctionRef< void(const ComputeContext &context)> | foreach_context_fn, | ||
| FunctionRef< void(const ComputeContext &context, const bNodeSocket &socket, const ElemVariant &elem)> | foreach_socket_fn ) |
Traverses the inverse evaluation path that starts at the given socket in a specific compute context.
| initial_context | Compute context where the inverse evaluation starts (e.g. may be deep in some nested node group). |
| initial_socket_elem | Socket and value element that is propagated backwards. |
| foreach_context_fn | If provided, it is called for each compute context that is touched by the inverse evaluation path. |
| foreach_socket_fn | If provided, it is called for each socket on the inverse evaluation path. |
Definition at line 273 of file inverse_eval.cc.
References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), BLI_assert, blender::nodes::value_elem::SocketElem::elem, blender::nodes::partial_eval::eval_downstream(), blender::nodes::partial_eval::eval_upstream(), evaluate_node_elem_downstream_filtered(), evaluate_node_elem_upstream(), blender::Vector< T, InlineBufferCapacity, Allocator >::extend(), get_input_elems_to_propagate(), blender::nodes::partial_eval::UpstreamEvalTargets::group_inputs, blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::items(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::keys(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup(), propagate_socket_elem(), propagate_value_elem_filtered(), blender::nodes::value_elem::SocketElem::socket, blender::nodes::partial_eval::UpstreamEvalTargets::sockets, and blender::nodes::partial_eval::UpstreamEvalTargets::value_nodes.
Referenced by blender::nodes::gizmos::foreach_compute_context_on_gizmo_path(), blender::nodes::gizmos::foreach_socket_on_gizmo_path(), and blender::nodes::gizmos::get_editable_gizmo_elem().
|
static |
Definition at line 116 of file inverse_eval.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::contains(), and blender::nodes::NodeInContext::node.
Referenced by find_local_inverse_eval_targets(), and foreach_element_on_inverse_eval_path().
| std::optional< SocketValueVariant > blender::nodes::inverse_eval::get_logged_socket_value | ( | geo_eval_log::GeoTreeLog & | tree_log, |
| const bNodeSocket & | socket ) |
Attempts to get the value for a specific socket from the log.
Definition at line 577 of file inverse_eval.cc.
References blender::nodes::geo_eval_log::GeoTreeLog::find_primitive_socket_value(), SOCK_BOOLEAN, SOCK_FLOAT, SOCK_INT, SOCK_MATRIX, SOCK_ROTATION, SOCK_VECTOR, and bNodeSocket::type.
Referenced by blender::nodes::gizmos::apply_gizmo_change(), and backpropagate_socket_values_through_node().
|
static |
Definition at line 98 of file inverse_eval.cc.
References blender::nodes::value_elem::convert_socket_elem(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_or_add(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr(), and blender::nodes::SocketInContext::socket.
Referenced by find_local_inverse_eval_targets(), and foreach_element_on_inverse_eval_path().
|
static |
Definition at line 242 of file inverse_eval.cc.
References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), blender::nodes::value_elem::convert_socket_elem(), blender::nodes::value_elem::ElemVariant::intersect(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_or_add(), blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_ptr(), and blender::nodes::SocketInContext::socket.
Referenced by foreach_element_on_inverse_eval_path().
|
static |
Definition at line 540 of file inverse_eval.cc.
References DEG_id_tag_update(), blender::bke::SocketValueVariant::get(), ID_RECALC_GEOMETRY, bNodeTreeInterfaceSocket::identifier, NodesModifierData::modifier, ModifierData::name, set_rna_property(), set_rna_property_float3(), SOCK_BOOLEAN, SOCK_FLOAT, SOCK_INT, SOCK_ROTATION, SOCK_VECTOR, and blender::math::to_euler().
Referenced by backpropagate_socket_values().
|
static |
Definition at line 361 of file inverse_eval.cc.
References AUTOKEY_FLAG_INSERTAVAILABLE, blender::animrig::autokeyframe_property(), blender::StringRefNull::c_str(), CTX_data_scene(), float, ID_IS_EDITABLE, int, blender::animrig::is_keying_flag(), PROP_BOOLEAN, PROP_FLOAT, PROP_INT, RNA_id_pointer_create(), RNA_path_resolve_property_full(), RNA_property_array_length(), RNA_property_boolean_set(), RNA_property_boolean_set_index(), RNA_property_float_set(), RNA_property_float_set_index(), RNA_property_float_ui_range(), RNA_property_int_set(), RNA_property_int_set_index(), RNA_property_int_ui_range(), RNA_property_type(), RNA_property_update(), and v.
Referenced by set_modifier_value(), set_rna_property_float3(), set_socket_value(), and set_value_node_value().
|
static |
Definition at line 456 of file inverse_eval.cc.
References set_rna_property().
Referenced by set_modifier_value(), set_socket_value(), and set_value_node_value().
|
static |
Definition at line 469 of file inverse_eval.cc.
References blender::bke::SocketValueVariant::get(), set_rna_property(), set_rna_property_float3(), SOCK_BOOLEAN, SOCK_FLOAT, SOCK_INT, SOCK_ROTATION, SOCK_VECTOR, blender::math::to_euler(), tree, and bNodeSocket::type.
Referenced by backpropagate_socket_values().
|
static |
Definition at line 505 of file inverse_eval.cc.
References FN_NODE_INPUT_BOOL, FN_NODE_INPUT_INT, FN_NODE_INPUT_ROTATION, FN_NODE_INPUT_VECTOR, blender::bke::SocketValueVariant::get(), set_rna_property(), set_rna_property_float3(), SH_NODE_VALUE, blender::math::to_euler(), and tree.
Referenced by backpropagate_socket_values().