[Bf-committers] 2.8 3D Manipulator Design

Joe Eagar joeedh at gmail.com
Tue Aug 23 10:29:25 CEST 2016


Hi all.  I had a rather panicky reaction on pursing Autodesk Fusion 360
videos:

http://www.autodesk.com/products/fusion-360

Here's a direct link to one of the videos:

https://www.youtube.com/embed/KZyjLwKWyOw?rel=0

So!  3D widget interfaces on steroids.  I've dome similar stuff in the
past, so I thought I'd write up how I went about designing a 3D widget API
(to fit inside my Blender-derived application architecture).

The basic concept is pretty simple, and is a lot like a 2D user interface
API.  You have shapes that live in the 3D viewport (and participate in the
dependency graph).  These shapes have event callbacks (and an "am I still
alive" method) and can contain other shapes.  They also participate in the
dependency graph.

Shapes never store direct pointers to data.  References to scene objects
and the like are stored as RNA paths.

In my implementation shape widgets could not go modal.  Instead they would
invoke modal tool operators, and if necessary insert a temporary DAG node
to update themselves interactively.  For example, a translate manipulator
widget has a DAG reference to the active object.  When it invokes
transform, the widget automatically moves as the user expects.

One final point.  3D widget user interfaces are remarkably difficult to
design, and I don't have a lot of talent for that myself.  Before any
coding happens, we should solicit proposals from people with 3D UI design
talent.

Anyway, cheers!

Joe


More information about the Bf-committers mailing list