From: owner-3dui@hitl.washington.edu on behalf of Jeff Pierce [jpierce@cs.cmu.edu] Sent: Wednesday, November 29, 2000 2:53 PM To: bowman@vt.edu; 3dui List Cc: Rex Hartson Subject: Re: notation for 3D interaction techniques At 11:55 AM 11/29/00, Doug Bowman wrote: >Ivan, Ernst, Joe, and I are proposing a new course on >advanced 3D user interfaces for SIGGRAPH 2001. One thing >we plan to do in this course is to go into some detail >about the implementation of common interaction techniques. >There are some real subtleties in the implementation of some >of these techniques that would be useful to developers if >they were available. For example, when implementing Ivan's >Go-Go technique, it's easy to determine based on the function >the distance the virtual hand should be from the body. But >where do you place the virtual hand in 3-space? It takes a >little thought to realize that the virtual hand should always >remain along a vector starting at the user's torso and going >through the user's physical hand. Then, you have to figure >out where the torso is relative to the head, since we don't >usually track the torso. No argument here, there are some subtleties with existing techniques. >At any rate, you see how much text I had to use to describe >that simple constraint (and it's probably still ambiguous!). Yes, but on the other hand everyone who read that text had some idea what you were talking about. How many people on the list could read your UAN examples without your English explanation? >Wouldn't it be nice if we had a standard notation for describing >3D interaction techniques? If it's precise enough, such a notation >could even be used as a very high-level language for technique >implementation. Why create a new notation and then write a VHLL based on it, when you could use an existing VHLL as your notation? >One idea is something like the User Action Notation (UAN). In UAN, >2D GUI techniques can be described. For example, > >~[file] Mv > >is a user action meaning the mouse pointer is over a file icon, and >the mouse button has been clicked down. It also represents system >feedback: > >file!, forall(file!): file-! > >means that the file icon that was clicked should be highlighted, and >all file icons that were highlighted should be un-highlighted. How many people do you know that actually use UAN? Not counting the researchers who invented it, mind. =) Rather than discussing the primitives for a 3D UI notation, I think a much better question is what the best _level_ is to describe these techniques. We're basically presented with a continuum. On the far left we have English: a large number of users understand it, it's extremely flexible, but it can be ambiguous. On the far right we have a theoretical notation: few users understand it, it may not be very flexible (what if someone invents a new interaction technique your notation can't describe?), but it's very precise. As a user interface researcher I'd find it extremely amusing if we invented a notation that almost no one could read and that was hard to use while trying to better communicate our techniques. Assuming as your target audience the typical SIGGRAPH attendee, I'd argue instead for working somewhere in the middle. So, picturing a continuum something like this: English -- pseudocode -- Python -- Perl -- C/C++ -- abstract notation I think the best solution would be to work somewhere in the pseudocode -- Python part of the continuum. Particularly since your target audience will probably be developers who want to implement techniques and are comfortable reading code. Of course, if you want to redefine your target audience to be other interaction technique researchers, then you'd have a stronger argument for a more theoretical notation. In that case, I'd survey the folks on this list and ask them how often they use existing notations, and how often they think they'd use yours. Jeff