`(ddgarcia@cs.berkeley.edu)`

This is a skill with which most students appear to have the hardest time, as evidenced by their often physically disconnected animated figures. (n.b. this is in contrast to what Dubinsky found for induction, which was that many students could not even give an overview of how to set up a proof that was different from memorized examples. Here students know the process of creating an articulated figure, it's that they fail in their implementation for several possible reasons.) I believe the prerequisite skills the students need to work in 3D and successfully build an articulated figure are:

**Zooming vs. dollying**

Dollying is moving a camera and zooming is changing the focal length. This is not necessarily a computer notion, and examples from the real world to help them understand the difference.**Parallel projections**

Parallel projections assume the viewer is located at infinity but has a very powerful zoom lens. The projections lines are all parallel and the projected objects exhibit no foreshortening and do not have vanishing points. Approximations to this are only seen rarely in real life (e.g. baseball games with the camera positioned in the outfield), so students may not have much familiarity with it.**Coordinating multiple 2D views into one consistent 3D mental model**

This is a skill that many students take for granted, yet others struggle with. Those who are spatially oriented find this process natural, but our job is to help students form internal 3D views who aren't naturally gifted in this way.**Comfort with the 3D program**

When it comes down to it, the implementation is done in the program itself. A level of comfort is required to actually position the geometric objects in their correct place and line them up with the other limbs successfully.**Leaving the GUI mindset**

In order to effectively build their articulated figure in the computer, the student needs to select geometric objects with the mouse and place them on the screen. Many students eyeball the placement, but for the object to be free of cracks and holes, the student has to have the precision of an engineer. There is an interface to input values to precisely position the object, but I seldom see students using it, and consequently I see lots of imprecise objects with holes and cracks.**Testing, testing, testing**

Students who fail to understand the purpose and practice of testing will almost certainly have trouble in computer science, and CS5 is no exception. If the student were to test the motion of each limb, rotate the object around, it would become immediately clear whether the model was correct in*all*dimensions, not just from one view angle.

**Have students play with cameras with zoom lenses to learn zooming vs dollying**

We're fortunate that a real-world analogue exists for this virtual concept of a camera - a real camera! Familiarity with a*real*camera's zoom lens and the concept of zooming vs. dollying is a must for those confused here. The students can then refer to their experiences with the real camera once they get behind the computer.**Explain parallel projection in more detail, with more examples**

It is very possible that the primary reason some students flounder in being able to transform 3D geometry to 2D representations is they don't fully understand what parallel projection means. The mathematics behind this is usually reserved for the final computer graphics segment of the course, but it may be appropriate to give them more of an understanding what is actually happening with this projection. Examples from real zoom lenses will help them understand what happens to geometry when seen with (near-) parallel projectors.**Identification of those with spatial difficulties, and directed training on paper and computer**

This is meant to address those students who have problems intuitively jumping back and forth from 2D to 3D. We start with a simple quiz (which doesn't count toward their grades) to isolate those target students who are not spatially intuitive. Then, depending on their difficulties, design one-on-one tutorials (much like the self-paced quizzes) which help them with their individual difficulties. Also, make sure to pair these students up with students who show high spatial ability.**Give them a competency exam or project for Infini-D**

Very often in the class I found the students struggling with deadlines because they left everything to the last minute. Thus, it may be the case that the students are having trouble building a working animated figure because they didn't have to prove competency with the program until that assignment. The students may have been learning Infini-D at the same time as they were implementing the hierarchical figure, so they weren't as comfortable with the tools for examining the state of the world and didn't know (for example) what the "Top / Front / Side" projection windows were. Competency exams or projects would force them to learn the tutorial before they begin working seriously with the program to implement their figures.**Force the students to ONLY use the text interface to Infini-D**

One exercise to train the students to be precise is to have them perform a simple talk using Infini-D two ways:*only*using the keyboard and*only*using the mouse. In Windows (but not the Mac, unfortunately), it is possible to use the keyboard to control the entire program. A reliance on the text-based interface and comparison of two identical tasks using each input device will highlight for them when each is appropriate. Also, using just the keyboard for positioning geometry will make the process seem routine, and they'll be (a) more comfortable using the text interface in the future, and (b) they'll realize that the degree of precision cannot be reached just by using the mouse.**Highlight uses of "debugging" tools**

This will help them to test and debug their designs. It's possible the students don't test their figures because they don't know how. A short tutorial of the use of the tools which aid in debugging 3D worlds (e.g. using wireframe, multiple cameras, etc) will help.

WWW Maven: Dan Garcia (ddgarcia@cs.berkeley.edu) Send me feedback