Fix T55403: Alembic: export of animated child hairs
authorSybren A. Stüvel <sybren@blender.org>
Thu, 19 Sep 2019 14:53:53 +0000 (16:53 +0200)
committerSybren A. Stüvel <sybren@blender.org>
Thu, 19 Sep 2019 14:59:10 +0000 (16:59 +0200)
The parent hairs were written to Alembic even when the 'Parent Particles'
checkbox (`use_parent_particles`) was disabled. In this case the parent
hairs were not correct in Blender's memory, and thus also not correct in
the exported Alembic file. The Alembic exporter now respects this setting
and doesn't write the parent hairs when 'Parent Particles' is off.

source/blender/alembic/intern/abc_hair.cc

index 38042bc728671dbdd5663d3c22b93ab73484d75e..98387be2e613e691150aafaa35552b8dc62012c1 100644 (file)
@@ -79,10 +79,14 @@ void AbcHairWriter::do_write()
 
   if (m_psys->pathcache) {
     ParticleSettings *part = m_psys->part;
+    bool export_children = m_settings.export_child_hairs && m_psys->childcache &&
+                           part->childtype != 0;
 
-    write_hair_sample(mesh, part, verts, norm_values, uv_values, hvertices);
+    if (!export_children || part->draw & PART_DRAW_PARENT) {
+      write_hair_sample(mesh, part, verts, norm_values, uv_values, hvertices);
+    }
 
-    if (m_settings.export_child_hairs && m_psys->childcache) {
+    if (export_children) {
       write_hair_child_sample(mesh, part, verts, norm_values, uv_values, hvertices);
     }
   }