12.08.2013 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!