Saturday, June 29, 2013

Depsgraph - Optional Branches with Runtime Switches

One source of confusion for beginner riggers sometimes is that even though a particular dependency path may not actually be currently active, from the perspective of the dependency graph they are still actively contributing to a cyclic dependency situation. Much of this is due to the fact that the old depsgraph could only really schedule things up by looking at the full set of dependencies and create a static ordering that could work in all cases.



This post explores a potential solution to this problem and how it could be integrated into the framework we've been looking at. 


Thursday, June 27, 2013

Depsgraph - ID Groups

In this post, we take a second look at one of the issues from the Granularity Problem: that of “strongly connected components”. That is, a set of nodes which, for all intents and purposes end up referring to each other.




Depsgraph - What's in a Node?

Our previous idea about how to solve the granularity problem raises an important question: What exactly should nodes in this system look like? What do they represent?




Monday, June 24, 2013

Depsgraph - The Granularity Problem

In today's post, we look into one of the problems affecting Blender's current Depsgraph: the granularity problem (also known as the “Why can't I use a bone as a driver for another's constraint influence?” problem). Another related problem arising from this is the “phantom cycles” problem (i.e. the, “Huh? It keeps telling me there's a cyclic dependency here, but these things aren't even related!?”).



Depsgraph - Know thy enemy

As promised in my weekly report yesterday, this is the first in what will be a series of posts documenting various thoughts and snippets of ideas during the development process for a new Dependency Graph engine for Blender.

As well as serving as rolling documentation of the ongoing work and how various design "quirks" (as they'll inevitably be viewed in retrospect) came about, these posts aim to serve two other important roles. From the perspective of the wider community, it provides greater visibility for this project and/or progress made, which may otherwise be difficult to grasp (since it is not really a flashy front-end tool that users can directly hold in their hands). However, more importantly, writing these posts mainly helps/forces me to really flesh out some areas of the design which I may otherwise forget or gleefully gloss over when a suitable solution comes around. It has been said by many notable people (including various scientists, engineers, and academics) that the act of writing down your thoughts can help clarify and refine those ideas, by forcing you to figure out how to express them in a concise manner (and in the process clarifying/resolving ambiguities), thus moving these from merely nebulous figments of your imagination to somewhat physical (or concrete) entities.

So, welcome along for the ride, as the great Blender Depsgraph project gets underway at last.
(Note: some of these posts have been sitting around for a while now – with delays and other things getting in the way – so dates mentioned are somewhat inaccurate).

Wednesday, June 19, 2013

Qt Line Rendering Differences...

For about a year now, I've been somewhat baffled about a some annoying differences between the way sub-pixel line strokes with < 100% alpha assigned and drawn using QPainter differed between Windows and Linux (i.e. "cross platform" software in my books :P)

A few minutes ago, I finally stumbled across the answer ([1], [2]), while checking out a solution to another problem (namely, how to replace the scrollbars - or better still, access their internals to figure out the position of the trough and thumb in a cross-platform way, and use that info to figure out how to map a indicators/target locations to that - in QAbstractScrollAreas/QScrollAreas and their subclasses such as all the Item-View classes). Apparently on Windows, they use a custom rasterer on Windows, while directly using X11 on Linux. No wonder just changing flags had little to no overall effect on fixing the problems I was having!

Links
[1] http://www.zestymeta.com/2013/03/qt-and-peril-of-multi-platform.html   <- the post which alerted me to this problem in the first place
[2] http://blog.qt.digia.com/blog/2009/12/16/qt-graphics-and-performance-an-overview/   <- confirmation from the source...


The Depsgraph Refactor Project

It's official, the great depsgraph refactor is under way at last!
This diagram shows some of the key components or classes of issues that we'll need to be tackling with this system to get it in shape for the types of things we need from it. Orange are for issues that will have direct impact on users (i.e. stuff will now work better and faster), Grey is stuff that is mainly useful for BlenderDevs when writing tools and other stuff.

The Bluish box (i.e. looping over objects-datablocks, and evaluating updates by going downwards from there is a slightly contentious point. IMO we need to do this or else we can't really achieve the generality and granularity objectives - we'd effectively still be stuck in the stone age (where we still end up keeping some ever-bizzare restrictions). The full details of what exactly should replace it though is something that's still heavily WIP, but I do have some preliminary ideas I'm currently toying with.

Tuesday, June 18, 2013

HKTrip12 - The Full Series

So, some 6 months (due to various delays and things which got in the way) after I first started writing a series of posts about my trip to Hong Kong in November 2012, I've finally completed this writeup project!



HKTrip12: Day 6.2 - Flying Home

This thirteenth and last episode covers the flight back home to Christchurch.


Monday, June 17, 2013

HKTrip12: Day 6.1 - Walkabout in Sydney

This twelfth episode covers a daytrip walkabout in Sydney on a stopover between an overnight flight from Hong Kong early in the morning, to a flight home in the evening.


HKTrip12: Day 6 - Arrival in Sydney

It's been a while since the last installment (with various hiccups along the way), but I just wanted to finish this series before starting the next one. So hopefully, this time we'll get all the way to the end at last :)

This eleventh episode covers the second part of the overnight flight from Hong Kong to Sydney and a spot of aerial photography.



Tuesday, June 11, 2013

Risk Scores - Alternative Blender Security Approach

Over on the blender-developers mailing list these past few days, there has been a lively discussion about the state of security in Blender. Of particular concern is the potential for malevolently-minded individals to create malware laden .blend files which then get distributed far and wide to unsuspecting users who were none the wiser about these problems. Particularly troubling too is that many virus scanners would probably not be able to detect these problems as they currently stand.


Perhaps I'm taking a much too simplistic view of these issues, but it seems that while we may never be able to achieve full bulletproof fortress status, there are a number of feasible steps which can certainly help to identify a large number of these types of attacks to allow users to make more informed decisions about their own safety and security. The following proposal is a just a random idea I had yesterday afternoon of an alternative solution that (at least given the facts I'm aware of now) sounds entirely feasible.