31 builder.single_input<
float4x4>(
"Transform");
32 builder.single_output<
float3>(
"Translation", mf::ParamFlag::SupportsUnusedOutput);
33 builder.single_output<
math::Quaternion>(
"Rotation", mf::ParamFlag::SupportsUnusedOutput);
34 builder.single_output<
float3>(
"Scale", mf::ParamFlag::SupportsUnusedOutput);
49 if (!translation.is_empty()) {
50 mask.foreach_index_optimized<
int64_t>(
51 [&](
const int64_t i) { translation[i] = transforms[i].location(); });
54 if (rotation.is_empty() && !scale.is_empty()) {
57 else if (!rotation.is_empty() && scale.is_empty()) {
58 mask.foreach_index([&](
const int64_t i) {
63 else if (!rotation.is_empty() && !scale.is_empty()) {
64 mask.foreach_index([&](
const int64_t i) {
81 using namespace value_elem;
82 const MatrixElem matrix_elem =
params.get_input_elem<MatrixElem>(
"Transform");
83 params.set_output_elem(
"Translation", matrix_elem.translation);
84 params.set_output_elem(
"Rotation", matrix_elem.rotation);
85 params.set_output_elem(
"Scale", matrix_elem.scale);
90 using namespace value_elem;
91 MatrixElem transform_elem;
92 transform_elem.translation =
params.get_output_elem<VectorElem>(
"Translation");
93 transform_elem.rotation =
params.get_output_elem<RotationElem>(
"Rotation");
94 transform_elem.scale =
params.get_output_elem<VectorElem>(
"Scale");
95 params.set_input_elem(
"Transform", transform_elem);
#define NODE_CLASS_CONVERTER
#define NOD_REGISTER_NODE(REGISTER_FUNC)
const Signature & signature() const
void set_signature(const Signature *signature)
void set_matching_fn(const mf::MultiFunction *fn)
local_group_size(16, 16) .push_constant(Type b
void node_register_type(bNodeType *ntype)
QuaternionBase< T > normalized_to_quaternion_safe(const MatBase< T, 3, 3 > &mat)
MatBase< T, NumCol, NumRow > normalize_and_get_size(const MatBase< T, NumCol, NumRow > &a, VectorT &r_size)
MatBase< T, NumCol, NumRow > normalize(const MatBase< T, NumCol, NumRow > &a)
VecBase< T, 3 > to_scale(const MatBase< T, NumCol, NumRow > &mat)
MatT from_loc_rot_scale(const typename MatT::loc_type &location, const RotationT &rotation, const VecBase< typename MatT::base_type, ScaleDim > &scale)
MatBase< float, 3, 3 > float3x3
void fn_node_type_base(blender::bke::bNodeType *ntype, int type, const char *name, short nclass)
NodeInverseElemEvalFunction eval_inverse_elem
NodeInverseEvalFunction eval_inverse
NodeElemEvalFunction eval_elem
NodeMultiFunctionBuildFunction build_multi_function
NodeDeclareFunction declare