Geometry Nodes: transform Object Info outputs to local space
Ref T83670. Differential Revision: https://developer.blender.org/D10071
This commit is contained in:
parent
c083398921
commit
beb5863ed4
Notes:
blender-bot
2023-02-14 08:08:56 +01:00
Referenced by issue #83670, Use local space for the Object Info node
|
@ -134,6 +134,7 @@ static void findUsedIds(const bNodeTree &tree, Set<ID *> &ids)
|
|||
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
|
||||
{
|
||||
NodesModifierData *nmd = reinterpret_cast<NodesModifierData *>(md);
|
||||
DEG_add_modifier_to_transform_relation(ctx->node, "Nodes Modifier");
|
||||
if (nmd->node_group != nullptr) {
|
||||
DEG_add_node_tree_relation(ctx->node, nmd->node_group, "Nodes Modifier");
|
||||
|
||||
|
|
|
@ -50,8 +50,11 @@ static void geo_node_object_info_exec(GeoNodeExecParams params)
|
|||
const Object *self_object = params.self_object();
|
||||
|
||||
if (object != nullptr) {
|
||||
float transform[4][4];
|
||||
mul_m4_m4m4(transform, self_object->imat, object->obmat);
|
||||
|
||||
float quaternion[4];
|
||||
mat4_decompose(location, quaternion, scale, object->obmat);
|
||||
mat4_decompose(location, quaternion, scale, transform);
|
||||
quat_to_eul(rotation, quaternion);
|
||||
|
||||
if (object != self_object) {
|
||||
|
@ -64,8 +67,6 @@ static void geo_node_object_info_exec(GeoNodeExecParams params)
|
|||
Mesh *copied_mesh = BKE_mesh_copy_for_eval(mesh, false);
|
||||
|
||||
/* Transform into the local space of the object that is being modified. */
|
||||
float transform[4][4];
|
||||
mul_m4_m4m4(transform, self_object->imat, object->obmat);
|
||||
BKE_mesh_transform(copied_mesh, transform, true);
|
||||
|
||||
MeshComponent &mesh_component = geometry_set.get_component_for_write<MeshComponent>();
|
||||
|
|
Loading…
Reference in New Issue