[Bf-blender-cvs] [aae4262b603] cycles_procedural_api: do not clear hair arrays when synchronizing
Kévin Dietrich
noreply at git.blender.org
Sat Sep 26 19:24:34 CEST 2020
Commit: aae4262b603a760b209d74c5038f7e70491950f7
Author: Kévin Dietrich
Date: Tue Sep 22 17:34:37 2020 +0200
Branches: cycles_procedural_api
https://developer.blender.org/rBaae4262b603a760b209d74c5038f7e70491950f7
do not clear hair arrays when synchronizing
===================================================================
M intern/cycles/blender/blender_curves.cpp
M intern/cycles/blender/blender_mesh.cpp
===================================================================
diff --git a/intern/cycles/blender/blender_curves.cpp b/intern/cycles/blender/blender_curves.cpp
index e79c5c6933e..1af592fc8ab 100644
--- a/intern/cycles/blender/blender_curves.cpp
+++ b/intern/cycles/blender/blender_curves.cpp
@@ -822,27 +822,37 @@ void BlenderSync::sync_hair(BL::Depsgraph b_depsgraph,
Hair *hair,
array<Node *> &used_shaders)
{
- hair->clear();
- hair->set_used_shaders(used_shaders);
+ Hair new_hair;
+ new_hair.set_used_shaders(used_shaders);
if (view_layer.use_hair) {
if (b_ob.type() == BL::Object::type_HAIR) {
/* Hair object. */
- sync_hair(hair, b_ob, false);
+ sync_hair(&new_hair, b_ob, false);
}
else {
/* Particle hair. */
- bool need_undeformed = hair->need_attribute(scene, ATTR_STD_GENERATED);
+ bool need_undeformed = new_hair.need_attribute(scene, ATTR_STD_GENERATED);
BL::Mesh b_mesh = object_to_mesh(
b_data, b_ob, b_depsgraph, need_undeformed, Mesh::SUBDIVISION_NONE);
if (b_mesh) {
- sync_particle_hair(hair, b_mesh, b_ob, false);
+ sync_particle_hair(&new_hair, b_mesh, b_ob, false);
free_object_to_mesh(b_data, b_ob, b_mesh);
}
}
}
+ /* update original sockets */
+
+ for (const SocketType &socket : new_hair.type->inputs) {
+ hair->set_value(socket, new_hair, socket);
+ }
+
+ foreach (Attribute &attr, new_hair.attributes.attributes) {
+ hair->attributes.attributes.push_back(std::move(attr));
+ }
+
/* tag update */
/* Compares curve_keys rather than strands in order to handle quick hair
diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp
index 865a470b437..a656bad2b2c 100644
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@ -1056,6 +1056,8 @@ void BlenderSync::sync_mesh(BL::Depsgraph b_depsgraph,
/* mesh fluid motion mantaflow */
sync_mesh_fluid_motion(b_ob, scene, &new_mesh);
+ /* update original sockets */
+
for (const SocketType &socket : new_mesh.type->inputs) {
mesh->set_value(socket, new_mesh, socket);
}
More information about the Bf-blender-cvs
mailing list