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:
Diffstat (limited to 'intern/cycles/blender')
-rw-r--r--intern/cycles/blender/blender_object.cpp6
-rw-r--r--intern/cycles/blender/blender_smoke.cpp8
-rw-r--r--intern/cycles/blender/blender_sync.h2
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);