[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58999] trunk/blender/intern/cycles/ blender/blender_object.cpp: Fix #36355: cycles render of objects with both duplis and hair would not render
Brecht Van Lommel
brechtvanlommel at pandora.be
Wed Aug 7 21:02:15 CEST 2013
Revision: 58999
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58999
Author: blendix
Date: 2013-08-07 19:02:15 +0000 (Wed, 07 Aug 2013)
Log Message:
-----------
Fix #36355: cycles render of objects with both duplis and hair would not render
the hair in some cases.
Modified Paths:
--------------
trunk/blender/intern/cycles/blender/blender_object.cpp
Modified: trunk/blender/intern/cycles/blender/blender_object.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_object.cpp 2013-08-07 18:31:26 UTC (rev 58998)
+++ trunk/blender/intern/cycles/blender/blender_object.cpp 2013-08-07 19:02:15 UTC (rev 58999)
@@ -348,32 +348,41 @@
bool hair_present = false;
bool show_emitter = false;
- bool hide = false;
+ bool hide_as_dupli_parent = false;
+ bool hide_as_dupli_child_original = false;
for(b_ob.particle_systems.begin(b_psys); b_psys != b_ob.particle_systems.end(); ++b_psys) {
if((b_psys->settings().render_type() == BL::ParticleSettings::render_type_PATH) &&
(b_psys->settings().type()==BL::ParticleSettings::type_HAIR))
hair_present = true;
- if(b_psys->settings().use_render_emitter()) {
- hide = false;
+ if(b_psys->settings().use_render_emitter())
show_emitter = true;
- }
}
/* duplicators hidden by default, except dupliframes which duplicate self */
if(b_ob.is_duplicator())
if(top_level || b_ob.dupli_type() != BL::Object::dupli_type_FRAMES)
- hide = true;
+ hide_as_dupli_parent = true;
/* hide original object for duplis */
BL::Object parent = b_ob.parent();
if(parent && object_render_hide_original(b_ob.type(), parent.dupli_type()))
if(parent_hide)
- hide = true;
-
- hide_triangles = (hair_present && !show_emitter);
- return hide && !show_emitter;
+ hide_as_dupli_child_original = true;
+
+ if(show_emitter) {
+ hide_triangles = false;
+ return (hide_as_dupli_parent || hide_as_dupli_child_original);
+ }
+ else if(hair_present) {
+ hide_triangles = true;
+ return hide_as_dupli_child_original;
+ }
+ else {
+ hide_triangles = false;
+ return (hide_as_dupli_parent || hide_as_dupli_child_original);
+ }
}
static bool object_render_hide_duplis(BL::Object b_ob)
More information about the Bf-blender-cvs
mailing list