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:
authorDaniel Genrich <daniel.genrich@gmx.net>2012-07-23 13:18:32 +0400
committerDaniel Genrich <daniel.genrich@gmx.net>2012-07-23 13:18:32 +0400
commit7f793b35b2c3a49d5a3ee617b2a5417022157aa0 (patch)
tree045fa6ee338d6ec27ea69006c74b89af5bfaa453
parentd0608872b7f8f02bf0066fc2da90e9d90ded34fa (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.cpp25
-rw-r--r--intern/cycles/blender/blender_sync.h1
-rw-r--r--intern/cycles/render/object.h5
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();