[Bf-committers] Python callbacks and keeping properties in sync

Wenzel Jakob wenzel at wazlaf.org
Wed Mar 30 16:23:31 CEST 2011

Hello Ton and Doug,

Campbell requested to put use cases at the bottom of his Wiki page 
(http://wiki.blender.org/index.php/User:Ideasman42) so that a list of 
requirements can be made.

@Doug: do you have additional use cases? I just put the one that 
currently bothers me the most (see also below).


*Notifications for custom property changes*: When implementing an 
additional rendering backend in Blender, there will usually be a slew of 
custom material properties. In LuxRender and Mitsuba, these are 
reachable via bpy.data.materials[index].(lux/mitsuba)_material.*.* (i.e. 
with some nesting). For instance, the 'v' roughness parameter of the 
Ward model in Mitsuba would be stored 

An important use case would be to register a callback that is invoked 
whenever one of these properties is changed so that the user interface 
can be updated (for instance to cause a redraw of the material preview). 
In the most general case, the callback would have a signature that 
provides information about what particular property was changed, and it 
would also provide the old and new value.

Ideally, this callback would be active across all material instances, 
without having to register it manually for each one. -- Wenzel 09:21, 30 
March 2011 (CEST)

On 03/30/2011 04:09 PM, Ton Roosendaal wrote:
> Hi Doug,
> I remind Campbell about this regularly, and we've reviewed a couple of
> strategies for it.
> The issue is extremely complex though, especially because existing
> code might need to be upgraded to comply to a decent API on python
> level.
> In short:
> - Data-Data dependencies belong in the dependency graph, handled
> reliably outside UI.
> - Data-UI dependencies can be handled on notifier or event levels
> Issues:
> - Some UI widgets/menus might maintain data as well, with dependencies
> - Our UI is directly using data pointers to write/read, with
> dependencies
> What would be helpful is to first make the minimal list of crucial
> features required for proper handling of exporter/integration scripts.
> I'm still missing the big picture a bit.
> -Ton-
> ------------------------------------------------------------------------
> Ton Roosendaal  Blender Foundation   ton at blender.org    www.blender.org
> Blender Institute   Entrepotdok 57A  1018AD Amsterdam   The Netherlands
> On 30 Mar, 2011, at 16:00, Doug Hammond wrote:
>> Is anyone going to acknowledge this at all?
>> Cheers,
>> Doug.
>> On 28 March 2011 23:05, Doug Hammond
>> <doughammond at hamsterfight.co.uk>  wrote:
>>> I've also seen too that there were plans to get this implemented
>>> around
>>> about now.
>>> (It was suggested in meeting minutes some weeks ago to be done in
>>> March?).
>>> Campbell has also admitted that he's got some of the code for it
>>> already
>>> written, and
>>> it is really about time this became implemented, us python devs
>>> have been
>>> waiting
>>> forever (it seems).
>>> So, any chance to get this before the stable release ?
>>> Cheers,
>>> Doug.
>>> On 28 March 2011 12:55, Wenzel Jakob<wenzel at wazlaf.org>  wrote:
>>>> Hello all,
>>>> I am currently designing a rendering backend that integrates
>>>> Mitsuba (a
>>>> physically based renderer) with Blender 2.56a based on Doug
>>>> Hammond's
>>>> extensions framework.
>>>> One of the issues I am periodically facing is synchronization
>>>> between
>>>> the Blender and Mitsuba interpretations of the scene. For instance,
>>>> Blender Internal and Mitsuba have wildly different material
>>>> configurations, and hence the rendering plugin adds custom UI
>>>> panels to
>>>> configure all materials.
>>>> However, there is still a bit of overlap with Blender Internal. It
>>>> would
>>>> be great if it was possible to "react" to property changes in a
>>>> material
>>>> so that they can be forwarded to the other respective material
>>>> implementation (where it makes sense). For instance: if the user
>>>> specifies a diffuse gray BI material, that could easily be
>>>> replicated in
>>>> the Mitsuba material panel.
>>>> I remember that somebody was working on Python-based property
>>>> callbacks,
>>>> which could potentially be used to implement such a feature. I'm
>>>> curious
>>>> to hear about the state of this work.
>>>> Thank you,
>>>> Wenzel
>>>> _______________________________________________
>>>> Bf-committers mailing list
>>>> Bf-committers at blender.org
>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers

More information about the Bf-committers mailing list