[Bf-committers] A few requests for the new API

whiterabbit at dreamscapearts.com whiterabbit at dreamscapearts.com
Tue Mar 9 05:36:29 CET 2010

Hello everyone,

I'm not clear as to where I should report problems and request features 
for the new API so I'm going out on a limb and asking here. If there's 
somewhere I should do this officially someone Please point me in that 
direction ;-) I'm Eric Back aka whiterabbit the developer of the 
RIBMOSAIC RenderMan script 
I've been rewriting ribmosaic for Blender 2.5 and have run into several 

The gist of what I'm trying to do is create a panel for RenderMan passes 
very similar to Blender's render layer panel. I have something basically 
working however I've run into several difficulties that I feel should be 
improved and one serious showstopper!

The first task is to add a list widget to navigate passes with the 
ability to enable or disable them in the list (like layers do). The 
problem is "template_list" only recognizes the "name " property in 
"PropertyGroup". Features such as the "enabled" toggles for layers only 
activate with hard coded property types such as "SceneRenderLayer" (as 
far as I can tell from Blender's source). It would be nice to either 
have the template recognize certain property "attr" names and add 
buttons accordingly (such as if "attr" is "enabled" add a toggle) or to 
be able to specify them as template parameters. I've worked around the 
issue by adding the "enabled" toggle for passes just below the list 
however I'm sure users will ask why RIBMOSAIC doesn't work like 
Blender's with toggles in the list.

The next task is to add "visible layers" and "used layers" widgets for 
each pass (just like the layers panel has). The "visible_layers" 
property works as expected for this task, however even though I can 
create a 20 element boolean array using "BoolVectorProperty" I cannot 
assign it as a 'LAYER' subtype (so it will not show as a layers widget). 
As a work around I decided to use "template_layers" instead. This works 
however the widgets are too small since I think they are only meant for 
headers? I can make this work but it would be nice if either 'LAYER' was 
added as a subtype for "BoolVectorProperty" or parameters were added to 
"template_layers" to control its visual style (such as a small header 
style and larger panel style).

This last task is the "show stopper" for me currently. I can add and 
remove passes to the list easily using "PropertyGroup.add()" and 
"PropertyGroup.remove()" but I also need to reorder the passes in the 
list. This is critical as changing the order of the passes for export is 
very important. I noticed in Blender's source that certain property 
types have this behavior by using hard coded operators. Is it possible 
to add the "slot_move" operator for the "PropertyGroup" class as well, 
or is there some other way to do this in Python?

I also have a feature request. RenderMan handles texture export and 
lighting very differently then Blender. It would be nice to add the 
"COMPAT_ENGINES" feature to the Texture and Lamp panels so we can remove 
those Blender specific features from the render pipeline. This way all 
elements of Blender's render pipeline can be removed from the GUI.

Thanks in advance,
Eric Back (WHiTeRaBBiT)

More information about the Bf-committers mailing list