forked from bartvdbraak/blender
Cycles: add object level holdout property.
This works the same as the holdout shader and Z mask layer. Combined with overrides in 2.8 this is intended to replace the Z mask layer bits.
This commit is contained in:
parent
7e349f2745
commit
e4b54f44c1
@ -1087,6 +1087,15 @@ class CyclesObjectSettings(bpy.types.PropertyGroup):
|
|||||||
default=False,
|
default=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
cls.is_holdout = BoolProperty(
|
||||||
|
name="Holdout",
|
||||||
|
description="Render objects as a holdout or matte, creating a "
|
||||||
|
"hole in the image with zero alpha, to fill out in "
|
||||||
|
"compositing with real footange or another render",
|
||||||
|
default=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def unregister(cls):
|
def unregister(cls):
|
||||||
del bpy.types.Object.cycles
|
del bpy.types.Object.cycles
|
||||||
|
@ -868,7 +868,9 @@ class CYCLES_OBJECT_PT_cycles_settings(CyclesButtonsPanel, Panel):
|
|||||||
if ob.type != 'LAMP':
|
if ob.type != 'LAMP':
|
||||||
flow.prop(visibility, "shadow")
|
flow.prop(visibility, "shadow")
|
||||||
|
|
||||||
layout.prop(cob, "is_shadow_catcher")
|
row = layout.row()
|
||||||
|
row.prop(cob, "is_shadow_catcher")
|
||||||
|
row.prop(cob, "is_holdout")
|
||||||
|
|
||||||
col = layout.column()
|
col = layout.column()
|
||||||
col.label(text="Performance:")
|
col.label(text="Performance:")
|
||||||
|
@ -295,7 +295,9 @@ Object *BlenderSync::sync_object(BL::Object& b_parent,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Visibility flags for both parent and child. */
|
/* Visibility flags for both parent and child. */
|
||||||
bool use_holdout = (layer_flag & render_layer.holdout_layer) != 0;
|
PointerRNA cobject = RNA_pointer_get(&b_ob.ptr, "cycles");
|
||||||
|
bool use_holdout = (layer_flag & render_layer.holdout_layer) != 0 ||
|
||||||
|
get_boolean(cobject, "is_holdout");
|
||||||
uint visibility = object_ray_visibility(b_ob) & PATH_RAY_ALL_VISIBILITY;
|
uint visibility = object_ray_visibility(b_ob) & PATH_RAY_ALL_VISIBILITY;
|
||||||
|
|
||||||
if(b_parent.ptr.data != b_ob.ptr.data) {
|
if(b_parent.ptr.data != b_ob.ptr.data) {
|
||||||
@ -374,7 +376,6 @@ Object *BlenderSync::sync_object(BL::Object& b_parent,
|
|||||||
object_updated = true;
|
object_updated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
PointerRNA cobject = RNA_pointer_get(&b_ob.ptr, "cycles");
|
|
||||||
bool is_shadow_catcher = get_boolean(cobject, "is_shadow_catcher");
|
bool is_shadow_catcher = get_boolean(cobject, "is_shadow_catcher");
|
||||||
if(is_shadow_catcher != object->is_shadow_catcher) {
|
if(is_shadow_catcher != object->is_shadow_catcher) {
|
||||||
object->is_shadow_catcher = is_shadow_catcher;
|
object->is_shadow_catcher = is_shadow_catcher;
|
||||||
|
Loading…
Reference in New Issue
Block a user