Achraf Kassioui

Blog

Examples of goal driven programming

Is 3D animation with inverse kinematics a valid example of goal driven programming?

I'm interested in computer based tools that allow humans to create complex systems using natural user interfaces. I'm learning about computing tools from the past and present. I want to get the general landscape, and to understand what the capabilities and limitations of the available tools are. One way to do that is to find the right people and learn from them.

Alan Kay is a computer researcher and a member of a remarkable group who pioneered graphical user interfaces at Xerox PARC. Alan Kay claims that the current state of computer programming is sad. He says that we ignored and forgot important insights laid out by brilliant early inventors.

I'll give an example of such an early invention, then I'll present a modern tool, and I'll ask if the modern tool correctly represents the intent of the pioneer.

1. Sketchpad

In 1962, Ivan Sutherland created a revolutionary computer program called Sketchpad:

Sketchpad screenshot
Sketchpad. The user could draw two lines and tell the program that the two lines should be parallel. The program would figure out the rest.

Alan Kay frequently shows Sketchpad in his hypnotic talks. He defines Sketchpad as the first “non-procedural programming system”. That means the user tells the computer what he wants (aka. goals), instead of telling the computer how to do what he wants (aka. procedures). The audience is usually amazed by how advanced the system from 1962 is, and why such capabilities aren't common to all modern graphics software.

Bret Victor, a human-computer interface designer who helped resurfacing some of these groundbreaking solutions, defined Sketchpad as an example of “goal driven programming”.

2. Inverse kinematics

In modern 3D computer animation, there is a fascinating technique used for character animation called inverse kinematics:

3D skeleton character
Inverse kinematics. 3D computer animation uses character rigs that are carefully constrained to mimic biological structures. This specific example is recorded in Cinema 4D.

Consider the 3D skeleton in the video. Each joint of the skeleton is constrained to move and rotate in some directions only. The animator can then move and rotate specific control points like the wrist or the hip. In the video above, only the hip is moved and rotated. The rest of the skeleton follows along according to the given constraints. The result is a natural looking motion that doesn't require to manually position every single joint.

Here's the Wikipedia definition of inverse kinematics:

“An animated figure is modeled with a skeleton of rigid segments connected with joints, called a kinematic chain. The kinematics equations of the figure define the relationship between the joint angles of the figure and its pose or configuration. Inverse kinematics compute the joint angles for a desired pose of the figure.”

In short, inverse kinematics is a solver that runs behind the scenes to satisfy in real-time the intent of the animator.

Can we consider 3D animation with inverse kinematics as an example of goal driven programming?