Archive / Month / July, 2004

Today at work, I ran into an annoyance I’ve noticed before, trying to make sense of a Blender scene with a huge amount of duplicated objects. The yellow dots that represent the centre/pivot point of objects in Blender were driving me crazy with all the visual noise and distraction on screen, so I came up with what I consider a significant improvement. In my development version, the dots have been completely removed – unselected objects display nothing extra than the objects themselves, and I replaced the centre dots on selected objects with an XYZ axis marker, using red/green/blue axis colours, consistent with the view grid.

Shaded display new center points screenshot

Shaded display (click!)

Wireframe display new center points screenshot

Wireframe display (click!)

Edit Mode new center points screenshot

Modelling in Edit Mode (click!)


Until recently, this hasn’t been a feasible change to make, since the centre points were the only indication of selected objects in solid or shaded display. However, with Ton Roosendaal’s addition to highlight the edges of selected objects, the centres are no longer as necessary. I’m convinced this is already an improvement in terms of getting rid of the clutter and allowing me to concentrate on my work, but the real value comes when modelling. The XYZ axis marker displays aligned with the object’s local co-ordinates, not global co-ordinates, which is extremely helpful when using axis-constrained transformation (move, rotate, scale). I already owe Martin ‘theeth’ Poirier a lifetime’s supply of free beers for the implementation of this wonderful feature, but one drawback has been that it can be difficult to work out which local axis to constrain to, since the local axes aren’t visually communicated in any way. With this addition, it’s very easy to see, for example, the direction that the red line is pointing in, and quickly hit the G, X, X key sequence to move an object or sub-object along the local X axis. Very fast modelling workflow that takes minimal thought after getting used to the X = Red, Y = Green, Z = Blue convention.

Another interesting side-effect is the extra visualisation of the object’s transformation. While the center dot only represented the object’s location in space, the axes visualise location, rotation and size. This may be increasingly useful information to see, with the addition of the new ‘Align’ mode for transforming object centers only, which will be in Blender 2.34.

On a vaguely related note, I hope you like my new ‘Light’ colour theme :) I found the default was just too dark to be effective in the office I’m working in at the moment – right next to a very bright wall of windows. It also seems to fit in much more nicely with this Mac OS X desktop, too. Colours and themes are also another item ony my list for further investigation before 2.35. Actually, speaking of releases, this will be my fifth post here, with four of them about Blender UI. Yes, there is more to me than Blender, I guess it’s the general state of excitement leading up to what will be a very impressive 2.34 release!

Blender’s inbuilt Video Sequence Editor window is quite powerful, and with the newly integrated wipe transitions and glow filter, is only getting better. But there’s something I’ve been wanting to tackle for a while – the current GUI is old and looking quite dated.

Once again, here’s a mockup out of Illustrator. Hopefully it shouldn’t be too difficult to re-create in OpenGL, but I haven’t taken a look inside the sequence editor’s source code yet! Another one to wait in the pipeline.

Video Sequence Editor makeover screenshot

(click for a larger screenshot)

Yesterday, looking back through one of my old sketchbooks, I got thinking about an old idea from a while back. With Willian Padovani Germano’s recent work on integrating Python scripts in Blender’s menus, this idea is now a lot easier to realise, so I gave it a go and made a proof-of-concept.

The idea is to create a system of presets in Blender, using Python scripts to load and save the relevant information. From a user’s perspective, one would be able to save presets for things like video/image dimensions (scenes), materials, textures, and eventually colorbands, themes, or any other data that is accesisble via Python that would be useful to re-use. A user could save a preset (which would involve Blender writing out a new Python script to disk), then share it with other users, who would just need to drop that script into a ‘presets’ folder to install it, making it show up automatically in a ‘Presets’ menu.

Scene preset experimental screenshot

(click for a larger screenshot)


Some of this functionality can already be achieved by appending datablocks from another .blend file, however this method has the following disadvantages:

  • It’s not easy to install new presets
  • It’s not easy to include new presets by default in the installation package
  • It’s not possible to append presets for things that don’t have datablocks (like themes)
  • It’s not possible to prest only some of the settings in a datablock. For example if I append a ‘Scene’ datablock, it will also import a whole bunch of other information, when all I might want to preset is the frame size and pixel aspect (perhaps for a proprietary image or video format one might be working with).

There are also additional advantages to using Python for this:

  • Values can be generated programatically, for example using random numbers, or generating values based on relationships to other Blender data
  • Presets could integrate well with other Python scripts, such as a script that applies variations on a preset to a number of other objects. Python script authors would also be able to easily copy existing code to or from presets to other scripts

The code I have working (shown in the screenshot), was relatively simple to create. Ideally, I’d rather have the presets in a proper popup menu (like the image format menu) so you can see what preset is currently selected, and somehow have it change to ‘Custom’ when the values have been manually changed. The scripts I used to make the presets in the screenshot are available here: A3, 300dpi, HDTV 1080/24p. These scripts can be run manually inside current Blender versions, but of course won’t show up in a presets menu.

Perhaps one more thing to go on the 2.35 todo list!

Lately, I’ve been looking back at some of the changes made to Blender’s interface last year for version 2.30, and with the luxury of hindsight, wide testing and feedback, trying to analyse what has worked, what hasn’t, and more importantly, what can be improved or replaced with something better. There has been some discussion over in the forums at blender.org about the GUI controls, which prompted a little experimentation over the weekend in Illustrator, combining parts of the Shaded and Rounded themes, with less emphasis on ‘everything looks like a button’ (pictured right).

Soon, I’ll start coding some working prototypes in OpenGL. Before that, though, there’s some work to do for the 2.34 release, such as getting the Help menu launching web browsers correctly across platforms, porting direct number field editing, and after some code review, porting mouse button selection configuration and phase’s mouse wheel support for number fields.

mockup image of some new GUI controls for Blender

Oh dear, now I’ve gone and done it. Yes, Movable Type is now up and running on mke3.net. Although not all the templates are working properly yet, in the philosophy of “release early, release often”, I’ve decided to semi-officially open this new area of my home on the web. Things are still in a transitional stage and will probably be continually tweaked for a little while yet.

Over the coming time (weeks? months? years?), expect to see this blog updated every now and then with whatever tidbits I deem relevant to tell the world about, including artistic projects, notes on Blender development, random experiments, rants, and other miscellaneous debris. I hope you come back every now and then and perhaps grab the XML/RSS feed for update notifications. I hope you (and I!) enjoy it.

|