diff options
Diffstat (limited to 'intern/cycles/blender')
-rw-r--r-- | intern/cycles/blender/blender_object.cpp | 6 | ||||
-rw-r--r-- | intern/cycles/blender/blender_smoke.cpp | 8 | ||||
-rw-r--r-- | intern/cycles/blender/blender_sync.h | 2 |
3 files changed, 8 insertions, 8 deletions
diff --git a/intern/cycles/blender/blender_object.cpp b/intern/cycles/blender/blender_object.cpp index 3ae7cfc3524..26c0881aa16 100644 --- a/intern/cycles/blender/blender_object.cpp +++ b/intern/cycles/blender/blender_object.cpp @@ -255,7 +255,6 @@ void BlenderSync::sync_object(BL::Object b_parent, int b_index, BL::Object b_ob, object->motion.pre = tfm; object->motion.post = tfm; object->use_motion = false; - object->use_volume = false; object->random_id = hash_int_2d(hash_string(object->name.c_str()), b_index); @@ -279,11 +278,8 @@ void BlenderSync::sync_object(BL::Object b_parent, int b_index, BL::Object b_ob, if (object_use_particles(b_ob)) sync_particles(object, b_ob); - if(BKE_modifiers_isSmokeEnabled(b_ob)) - { - object->use_volume = true; + if(object_use_smoke(b_ob)) sync_smoke(object, b_ob); - } object->tag_update(scene); } diff --git a/intern/cycles/blender/blender_smoke.cpp b/intern/cycles/blender/blender_smoke.cpp index 742b488aa5a..e59d9bea01d 100644 --- a/intern/cycles/blender/blender_smoke.cpp +++ b/intern/cycles/blender/blender_smoke.cpp @@ -33,7 +33,7 @@ CCL_NAMESPACE_BEGIN /* Only looking for Smoke domains */ // TODO DG: disable rendering of smoke flow?? -bool BlenderSync::BKE_modifiers_isSmokeEnabled(BL::Object b_ob) +bool BlenderSync::object_use_smoke(BL::Object b_ob) { BL::Object::modifiers_iterator b_modifiers; for(b_ob.modifiers.begin(b_modifiers); b_modifiers != b_ob.modifiers.end(); ++b_modifiers) { @@ -43,7 +43,11 @@ bool BlenderSync::BKE_modifiers_isSmokeEnabled(BL::Object b_ob) BL::SmokeModifier smd(mod); if(smd.smoke_type() == BL::SmokeModifier::smoke_type_DOMAIN) { - return true; + BL::ID key = (BKE_object_is_modified(b_ob))? b_ob: b_ob.data(); + Mesh *mesh = mesh_map.find(key); + if (mesh) { + return mesh->need_attribute(scene, ATTR_STD_SMOKE_DENSITY); + } } } } diff --git a/intern/cycles/blender/blender_sync.h b/intern/cycles/blender/blender_sync.h index 0ecd60c4dc0..f3fc318f8f9 100644 --- a/intern/cycles/blender/blender_sync.h +++ b/intern/cycles/blender/blender_sync.h @@ -91,7 +91,7 @@ private: /* util */ void find_shader(BL::ID id, vector<uint>& used_shaders, int default_shader); bool BKE_object_is_modified(BL::Object b_ob); - bool BKE_modifiers_isSmokeEnabled(BL::Object b_ob); + bool object_use_smoke(BL::Object b_ob); bool object_is_mesh(BL::Object b_ob); bool object_is_light(BL::Object b_ob); bool object_use_particles(BL::Object b_ob); |