diff options
author | Sebastian Parborg <darkdefende@gmail.com> | 2021-01-26 20:23:13 +0300 |
---|---|---|
committer | Sebastian Parborg <darkdefende@gmail.com> | 2021-01-26 20:23:13 +0300 |
commit | 82523840cd40359a6c60bcc60983762eca87d17b (patch) | |
tree | fada3f96343c6b326bc71f0e53bfde2529764b6a /source/blender/nodes | |
parent | ae5c15bb4349426c5db276d7d73d750c43cc0346 (diff) | |
parent | abd6b1d7b281c85fce748e0535f1f769916cd9b3 (diff) |
Merge branch 'blender-v2.92-release'
Diffstat (limited to 'source/blender/nodes')
3 files changed, 10 insertions, 17 deletions
diff --git a/source/blender/nodes/geometry/nodes/node_geo_join_geometry.cc b/source/blender/nodes/geometry/nodes/node_geo_join_geometry.cc index 5c768531868..7549305aedb 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_join_geometry.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_join_geometry.cc @@ -233,11 +233,9 @@ static void join_components(Span<const InstancesComponent *> src_components, Geo for (const InstancesComponent *component : src_components) { const int size = component->instances_amount(); Span<InstancedData> instanced_data = component->instanced_data(); - Span<float3> positions = component->positions(); - Span<float3> rotations = component->rotations(); - Span<float3> scales = component->scales(); + Span<float4x4> transforms = component->transforms(); for (const int i : IndexRange(size)) { - dst_component.add_instance(instanced_data[i], positions[i], rotations[i], scales[i]); + dst_component.add_instance(instanced_data[i], transforms[i]); } } } diff --git a/source/blender/nodes/geometry/nodes/node_geo_point_instance.cc b/source/blender/nodes/geometry/nodes/node_geo_point_instance.cc index 54d37661d35..3bd8c355124 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_point_instance.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_point_instance.cc @@ -171,7 +171,9 @@ static void add_instances_from_geometry_component(InstancesComponent &instances, for (const int i : IndexRange(domain_size)) { if (instances_data[i].has_value()) { - instances.add_instance(*instances_data[i], positions[i], rotations[i], scales[i], ids[i]); + float transform[4][4]; + loc_eul_size_to_mat4(transform, positions[i], rotations[i], scales[i]); + instances.add_instance(*instances_data[i], transform, ids[i]); } } } diff --git a/source/blender/nodes/geometry/nodes/node_geo_transform.cc b/source/blender/nodes/geometry/nodes/node_geo_transform.cc index cd71a477d69..539a7551be9 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_transform.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_transform.cc @@ -99,27 +99,20 @@ static void transform_instances(InstancesComponent &instances, const float3 rotation, const float3 scale) { - MutableSpan<float3> positions = instances.positions(); - MutableSpan<float3> rotations = instances.rotations(); - MutableSpan<float3> scales = instances.scales(); + MutableSpan<float4x4> transforms = instances.transforms(); /* Use only translation if rotation and scale don't apply. */ if (use_translate(rotation, scale)) { - for (float3 &position : positions) { - add_v3_v3(position, translation); + for (float4x4 &transform : transforms) { + add_v3_v3(transform.ptr()[3], translation); } } else { float mat[4][4]; - float instance_mat[4][4]; - float quaternion[4]; loc_eul_size_to_mat4(mat, translation, rotation, scale); - for (int i = 0; i < positions.size(); i++) { - loc_eul_size_to_mat4(instance_mat, positions[i], rotations[i], scales[i]); - mul_m4_m4_pre(instance_mat, mat); - mat4_decompose(positions[i], quaternion, scales[i], instance_mat); - quat_to_eul(rotations[i], quaternion); + for (float4x4 &transform : transforms) { + mul_m4_m4_pre(transform.ptr(), mat); } } } |