Geometry Nodes: transform Object Info outputs to local space

Ref T83670.

Differential Revision: https://developer.blender.org/D10071
This commit is contained in:
Jacques Lucke 2021-01-11 15:00:29 +01:00
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
2 changed files with 5 additions and 3 deletions

View File

@ -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");

View File

@ -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>();