diff options
author | Daniel Genrich <daniel.genrich@gmx.net> | 2012-07-23 13:18:32 +0400 |
---|---|---|
committer | Daniel Genrich <daniel.genrich@gmx.net> | 2012-07-23 13:18:32 +0400 |
commit | 7f793b35b2c3a49d5a3ee617b2a5417022157aa0 (patch) | |
tree | 045fa6ee338d6ec27ea69006c74b89af5bfaa453 | |
parent | d0608872b7f8f02bf0066fc2da90e9d90ded34fa (diff) |
Start to work on Smoke + Cycles.
Goal is a proof of concept, then cleaning code up :-)
-rw-r--r-- | intern/cycles/blender/blender_object.cpp | 25 | ||||
-rw-r--r-- | intern/cycles/blender/blender_sync.h | 1 | ||||
-rw-r--r-- | intern/cycles/render/object.h | 5 |
3 files changed, 31 insertions, 0 deletions
diff --git a/intern/cycles/blender/blender_object.cpp b/intern/cycles/blender/blender_object.cpp index a928bd9a6ea..2a34da078ea 100644 --- a/intern/cycles/blender/blender_object.cpp +++ b/intern/cycles/blender/blender_object.cpp @@ -53,6 +53,26 @@ bool BlenderSync::BKE_object_is_modified(BL::Object b_ob) return false; } +/* Only looking for Smoke domains */ +// TODO DG: disable rendering of smoke flow?? +bool BlenderSync::BKE_modifiers_isSmokeEnabled(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) { + BL::Modifier mod = (*b_modifiers); + + if (mod.is_a(&RNA_SmokeModifier)) { + BL::SmokeModifier smd(mod); + + if(smd.smoke_type() == BL::SmokeModifier::smoke_type_DOMAIN) { + return true; + } + } + } + + return false; +} + bool BlenderSync::object_is_mesh(BL::Object b_ob) { BL::ID b_ob_data = b_ob.data(); @@ -242,6 +262,11 @@ void BlenderSync::sync_object(BL::Object b_parent, int b_index, BL::Object b_ob, /* mesh sync */ object->mesh = sync_mesh(b_ob, object_updated); + if(BKE_modifiers_isSmokeEnabled(b_ob)) + { + // TODO DG sync_volume(b_ob); + } + if(use_holdout != object->use_holdout) { object->use_holdout = use_holdout; scene->object_manager->tag_update(scene); diff --git a/intern/cycles/blender/blender_sync.h b/intern/cycles/blender/blender_sync.h index 8c31c4b86ba..b614fca6363 100644 --- a/intern/cycles/blender/blender_sync.h +++ b/intern/cycles/blender/blender_sync.h @@ -90,6 +90,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_is_mesh(BL::Object b_ob); bool object_is_light(BL::Object b_ob); bool object_use_particles(BL::Object b_ob); diff --git a/intern/cycles/render/object.h b/intern/cycles/render/object.h index 6d674731b07..bacfb8f18a4 100644 --- a/intern/cycles/render/object.h +++ b/intern/cycles/render/object.h @@ -57,6 +57,11 @@ public: int particle_id; vector<Particle> particles; + /* Voxel / 3D volume data */ + bool use_volume; + int3 resolution; + vector<float3> grid; + Object(); ~Object(); |