The AR Workbench: A Complete Co-located Reach-in Mirror-Based ...
The AR Workbench: A Complete Co-located Reach-in Mirror-Based ...
The AR Workbench: A Complete Co-located Reach-in Mirror-Based ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Marlon Richert, Master’s <strong>The</strong>sis, Friday, 23 February, 2007<br />
attached to the user. Even <strong>in</strong> this case, however, the user will still enjoy great<br />
freedom of movement and it will not significantly encumber them.<br />
Is the system <strong>in</strong>tuitive to the user? This of course largely depends on the k<strong>in</strong>d of<br />
application developed with the system. In general, however, the k<strong>in</strong>d of direct<br />
manipulation that the system provides to the user should be very <strong>in</strong>tuitive to use<br />
because it largely corresponds with <strong>in</strong>teraction situations <strong>in</strong> the real world. In<br />
addition, the system has an actual physical component that the user can grasp and<br />
control—the tool handle—whose real position and orientation translate to the virtual<br />
world <strong>in</strong> the most direct way possible. Thus, when manipulat<strong>in</strong>g objects <strong>in</strong> the virtual<br />
world, the user can apply much of the expertise they have with manipulat<strong>in</strong>g objects<br />
<strong>in</strong> the real world, thereby enabl<strong>in</strong>g positive transfer between the two.<br />
Does the system require only limited doma<strong>in</strong> knowledge from the application<br />
programmer? That is, will a developer with only very limited prior knowledge and<br />
experience with IPF be able to use the system to successfully and easily create <strong>AR</strong><br />
applications? This is a difficult question to answer, as the topic matter is very<br />
complex. We can glean a great deal of <strong>in</strong>formation, however, from the sample code<br />
presented <strong>in</strong> chapter 6. What is immediately clear is that the developer is still<br />
required to know how to be able to create objects <strong>in</strong> IPF. This is, however,<br />
straightforward and does not require that much time to learn. <strong>The</strong> real crux, though,<br />
lies <strong>in</strong> implement<strong>in</strong>g the act(…) method <strong>in</strong> subclasses of Role. This will still require a<br />
great deal of knowledge of IPF. <strong>The</strong> real merit of the roles module, however, lies<br />
<strong>in</strong> allow<strong>in</strong>g the developer to th<strong>in</strong>k of and create <strong>in</strong>teraction structure on a much<br />
higher level of abstraction that is normally possible <strong>in</strong> IPF. If you take a close look at<br />
the implementation of the Interaction constructor, it is immediately clear that it<br />
takes a tremendous amount of tedious, low-level work out of the hands of the<br />
application programmer. In addition, if one constructs such <strong>in</strong>teraction structures<br />
manually <strong>in</strong> IPF, they can quickly become unmanageable because of their opacity<br />
and the sheer numbers of objects necessary, whose relationships often quickly<br />
become quite obscure to the casual observer. <strong>The</strong> roles module effectively allows<br />
the application programmer to take a step back and work at the big picture <strong>in</strong>stead<br />
of hav<strong>in</strong>g to t<strong>in</strong>ker with the niggl<strong>in</strong>g little details. In that respect, perhaps the<br />
software does not have such a significant impact on the amount of knowledge of IPF<br />
required to create applications, but rather benefits the programmer by significantly<br />
streaml<strong>in</strong><strong>in</strong>g and speed<strong>in</strong>g up the development process, as well as mak<strong>in</strong>g the code<br />
more human-readable and ma<strong>in</strong>ta<strong>in</strong>able.<br />
Is the system not tied to a particular development platform? Although the design<br />
tries to put plenty of abstraction between the application programmer and the<br />
underly<strong>in</strong>g platform, many aspects of IPF still sh<strong>in</strong>e through <strong>in</strong> many different<br />
places. This turned out to be unavoidable for all practical purposes. First, IPF is<br />
simply too large a system that it would be completely unfeasible to fully hide it from<br />
the application programmer. It is also not completely desirable to do so, because the<br />
graphical user <strong>in</strong>terface of IPF is rich with features that hid<strong>in</strong>g would make<br />
<strong>in</strong>accessible. Second, be<strong>in</strong>g able to create virtual objects <strong>in</strong> a visual such as allowed<br />
by the user <strong>in</strong>terface of IPF is simply too convenient a feature to discard, but this of<br />
course means that we need some way of deal<strong>in</strong>g with the primitives that result from<br />
this process. <strong>The</strong> system, however, is by no means completely stuck with IPF.<br />
Chang<strong>in</strong>g from IPF to another system will obviously require modification of the l<strong>in</strong>ks<br />
that Actors and Targets have with Items <strong>in</strong> IPF and reimplementation of the act(…)<br />
methods of subclasses of Role because these will likely <strong>in</strong>teract directly with IPF. <strong>The</strong><br />
ma<strong>in</strong> structures created with Actors, Roles, Targets and Interactions, however, will<br />
be able to persist, as the contracts of their <strong>in</strong>terfaces will rema<strong>in</strong> unchanged. Only<br />
44