[Haskell-cafe] A voice in the desert... (Was: Is lazyness make big difference?)

Dan Weston westondan at imageworks.com
Thu Feb 15 14:42:32 EST 2007

Kudos to you for invoking Plato. This forum could use a bit of 
epistemological levity. Your passionate and quirky style reminds me of 
the "Laws of Form" by G. Spencer-Brown 

One quibble: I work for a one of the world's largest 3-D visual effects 
studios (based in LA) and I can say with some authority that of the work 
I've seen, the vast amount of animation (complicated or not) both 
embedded in photo-realistic live action and in full-feature animation is 
NOT inverse kinematics, but forward kinematics in an endless chain of 
deformer layers, painstakingly and lovingly coerced through endless 
iterations into place. The "obvious benefits" of physical simulation, 
IK, and rule-based autonomous behavior inevitably run into the brick 
wall of a director whose inner vision cannot be easily converged on 
through any complicated function of few input parameters. Even motion 
capture (actual human motion) often needs tweaking to more effectively 
tell a story. Experienced animators can fake the IK part of this fairly 
quickly, in any case.

As such, it is not lazy programming, but greedy programming that is 
prominent in my industry. Lazy algorithms work best when the goal is 
well understood and the algorithm takes shape during development. In 
visual effects, efficiency of process and predictability of result are 
paramount (pardon the pun), and algorithms that optimize these are well 
understood. It is the end effect that evolves by massaging and mutating 
these algorithms strategically. Often, the exact goal is not known even 
to the director until it appears out of a lineup (or "wedge", evaluated 
greedily) of countless variations.

Perhaps your different experience is in the domain of robotics or games 
programming, which have entirely different goals and requirements.

Dan Weston
Senior Software Engineer
Sony Pictures Imageworks

NOTE: The opinions and observations expressed here are personal views 
expressed by me alone and do not necessarily reflect those of Sony 
Pictures, its subsidiaries, business partners, affiliates, or other 
employees thereof.

jerzy.karczmarczuk at info.unicaen.fr wrote:
> Citing the quoted citation, or the cited quotation, or whatever:
>>> > According to one guy's analogy: the Real World is strict - in order to
>>> > drink tea, you have to put the kettle on the fire, wait until water
>>> > boils, brew tea and then drink. Not the kettle is put on the fire, 
>>> > water boils and the tea is brewed when you take the empty cup to > 
>>> start drinking. 
> etc. etc....
> I have been advocating for years that independently of theoretical
> advantages, and some nice realizations (Bird et al), there is something
> more. The laziness is a terric ALGORITHMIC TOOL, making it possible to
> write equations, with intricate cross-reference between variables, and
> to transform them without moving a finger into implementable algorithms.
> There are no miracles, and if a variable references another one, which
> will be instantiated later, it cannot use directly the concerned values.
> But plenty of algorithms *may* be effective, since they defer the access
> to those "future" objects. I wrote a bunch of papers on this...
> Getting back to the Real World. The main issue - in my opinion - is that
> we do not code the Real World, whatever may be your personal philosophy.
> The models we code bear some peculiar relations to the models we *see*
> in our Plato cavern. Take for a pedagogic example, the issue of robotics,
> or, if you prefer, the animation of humans/animals, etc.
> The physical causality works as follows. The brain issues the orders which
> propagate sequentially through the nerves, make the articulations and the
> limbs move, and *finally* the end effector - the hand - grasps the kettle
> and put in on the fire. Anybody protests?
> Now, a robot, or an animated personage has a *scenario* to obey, to grasp
> the damn kettle, and to put it on the fire.
> The intermediate limbs and articulations must move accordingly. Now you
> will code all this...
> And you fall well inside the domain called the Inverse Kinematics issue,
> which may demand some horrible calculi, such as the evaluation of the
> pseudo-inverses of Jacobi matrices, but doesn't matter. You must *reason*
> differently. The hand "pulls" the elbow, which pulls the arm, which "says":
> "may dear brain, I need the following commands from you, in order that our
> terminal effector obey its scenario..."
> ==
> Folks, this is no science fiction, but *ALL COMPLICATED ANIMATIONS* are
> done in this way. The IK is an established industrial domain, and in my
> humble opinion, the laziness IS the tool to code it in a readable manner
> (I work on this right now, but slowly...)
> Jerzy Karczmarczuk
> PS. BTW. The True Real World is quantum, not classical. A bottle of
> the most expensive champagne I can afford, to a guy who will convince
> me that the quantum world is strict in the computational sense of this
> word. In my opinion this category is not applicable at all...
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

More information about the Haskell-Cafe mailing list