Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Parborg <darkdefende@gmail.com>2021-01-20 20:17:25 +0300
committerSebastian Parborg <darkdefende@gmail.com>2021-01-20 20:17:25 +0300
commitb33d839162b6d4b8b85937eb095b661ac93cbddd (patch)
treeca9c1f422f67e61db76dc32c7da4fb0865c7b00a /source/blender/nodes
parenta823e825c899c30a98dd1c3fe64c5e3d72716921 (diff)
Fix T84867: Transform node does not rotate/scale instances
The manipulation of rot/scale was simply not implemented.
Diffstat (limited to 'source/blender/nodes')
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_transform.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/source/blender/nodes/geometry/nodes/node_geo_transform.cc b/source/blender/nodes/geometry/nodes/node_geo_transform.cc
index abfa603b584..4fe61dff72d 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_transform.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_transform.cc
@@ -92,6 +92,8 @@ static void transform_instances(InstancesComponent &instances,
const float3 scale)
{
MutableSpan<float3> positions = instances.positions();
+ MutableSpan<float3> rotations = instances.rotations();
+ MutableSpan<float3> scales = instances.scales();
/* Use only translation if rotation and scale don't apply. */
if (use_translate(rotation, scale)) {
@@ -101,9 +103,15 @@ static void transform_instances(InstancesComponent &instances,
}
else {
float mat[4][4];
+ float instance_mat[4][4];
+ float quaternion[4];
+
loc_eul_size_to_mat4(mat, translation, rotation, scale);
- for (float3 &position : positions) {
- mul_m4_v3(mat, position);
+ for (int i = 0; i < positions.size(); i++) {
+ loc_eul_size_to_mat4(instance_mat, positions[i], rotations[i], scales[i]);
+ mul_m4_m4_post(instance_mat, mat);
+ mat4_decompose(positions[i], quaternion, scales[i], instance_mat);
+ quat_to_eul(rotations[i], quaternion);
}
}
}