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-26 20:23:13 +0300
committerSebastian Parborg <darkdefende@gmail.com>2021-01-26 20:23:13 +0300
commit82523840cd40359a6c60bcc60983762eca87d17b (patch)
treefada3f96343c6b326bc71f0e53bfde2529764b6a /source/blender/nodes
parentae5c15bb4349426c5db276d7d73d750c43cc0346 (diff)
parentabd6b1d7b281c85fce748e0535f1f769916cd9b3 (diff)
Merge branch 'blender-v2.92-release'
Diffstat (limited to 'source/blender/nodes')
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_join_geometry.cc6
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_point_instance.cc4
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_transform.cc17
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);
}
}
}