[Bf-python] Custom Properties on RenderLayers possible?

Julian Eisel eiseljulian at gmail.com
Sun Jul 30 13:19:43 CEST 2017


Hi,

Support for custom properties in render-layers was just added for
2.79, see https://developer.blender.org/rB4cf7fc3b3a4d0. Your script
should work with it :)

Cheers,
- Julian -

On 28 July 2017 at 13:17, Kerim Borchaev <kerim.borchaev at gmail.com> wrote:
> I don't know if it's a bug or limitation of 2.78(I have same results)
> but in Blender 2.79 testbuild2 it works!
>
>
>
> On Thu, Jul 27, 2017 at 3:03 PM, Simon Rainerson
> <simon.rainerson at goodbyekansas.com> wrote:
>> Hello
>>
>> I'm trying to get blender to run on our render farm and I would like to have
>> different priorities or frame ranges or other things per render layer. I
>> thought it would be practical to store these properties on the render layers
>> themselves, but when I tested that I couldn't get it to work.
>>
>> Is it a known/intended limitation, a bug or just me not knowing what I'm
>> doing?
>>
>> Here is my test code (also attached):
>>
>>
>>>> import bpy
>>>>
>>>>
>>>> class RENDER_UL_my_renderlayers(bpy.types.UIList):
>>>>
>>>>     def draw_item(self, context, layout, data, item, icon, active_data,
>>>> active_propname, index):
>>>>
>>>>         layer = item
>>>>
>>>>         row=layout.row()
>>>>
>>>>         print(dir(layer))
>>>>
>>>>         row.prop(layer, 'name', text='')
>>>>
>>>>         row.prop(layer, 'test2', text='')
>>>>
>>>>         row.prop(layer, 'use', text = '')
>>>>
>>>>
>>>> class TEST_PANEL(bpy.types.Panel):
>>>>
>>>>     bl_label = "TEST"
>>>>
>>>>     bl_idname = "RENDER_PT_ui_test"
>>>>
>>>>     bl_space_type = 'PROPERTIES'
>>>>
>>>>     bl_region_type = 'WINDOW'
>>>>
>>>>     bl_context = "render"
>>>>
>>>>
>>>>     def draw(self, context):
>>>>
>>>>         layout = self.layout
>>>>
>>>>         col = layout.column()
>>>>
>>>>         col.prop(context.scene, "test1")
>>>>
>>>>         col.template_list('RENDER_UL_my_renderlayers', 'RenderLayers',
>>>> context.scene.render, 'layers', context.scene, "testindex")
>>>>
>>>>
>>>> def register():
>>>>
>>>>     bpy.types.Scene.test1 = bpy.props.IntProperty()
>>>>
>>>>     bpy.types.Scene.testindex = bpy.props.IntProperty()
>>>>
>>>>     bpy.types.SceneRenderLayer.test2 = bpy.props.IntProperty()
>>>>
>>>>
>>>>
>>>>     bpy.utils.register_class(RENDER_UL_my_renderlayers)
>>>>
>>>>     bpy.utils.register_class(TEST_PANEL)
>>>>
>>>>
>>>> def unregister():
>>>>
>>>>     bpy.utils.unregister_class(RENDER_UL_my_renderlayers)
>>>>
>>>>     bpy.utils.unregister_class(TEST_PANEL)
>>>>
>>>>
>>>>     del bpy.types.Scene.test1
>>>>
>>>>     del bpy.types.Scene.test2
>>>>
>>>>     del bpy.types.Scene.testindex
>>>>
>>>>
>>>>
>>>> if __name__ == "__main__":
>>>>
>>>>     register()
>>
>>
>> In the console I get
>>>
>>> rna_uiItemR: property not found: SceneRenderLayer.test2
>>
>>
>> In the print(dir(layer)) test2 shows up but If I do
>>>
>>> bpy.data.scenes[0].render.layers[0].test2
>>
>> I get
>>>
>>> (<built-in function IntProperty>, {})
>>
>> Instead of a number.
>>
>> test1 shows up like it should.
>>
>> Thanks
>>
>> SIMON RAINERSON
>> Techincal Director
>>
>> GOODBYE KANSAS STUDIOS
>> Rosenlundsgatan 40, 4th floor
>> 118 53 Stockholm, Sweden
>>
>> Ph: +46 8 556 990 00
>> www.goodbyekansas.com
>>
>>
>> _______________________________________________
>> Bf-python mailing list
>> Bf-python at blender.org
>> https://lists.blender.org/mailman/listinfo/bf-python
>>
> _______________________________________________
> Bf-python mailing list
> Bf-python at blender.org
> https://lists.blender.org/mailman/listinfo/bf-python



More information about the Bf-python mailing list