<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Unit: Modular Development of Distributed Interaction Techniques for Highly Interactive User Interfaces</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Alex</forename><surname>Olwal</surname></persName>
							<email>aolwal@cs.columbia.edu</email>
							<affiliation key="aff0">
								<orgName type="department">Department of Computer Science</orgName>
								<orgName type="institution">Columbia University New York</orgName>
								<address>
									<country key="US">USA</country>
								</address>
							</affiliation>
							<affiliation key="aff1">
								<orgName type="department">Department of Numerical Analysis and Computer Science</orgName>
								<orgName type="institution">Royal Institute of Technology Stockholm</orgName>
								<address>
									<country key="SE">Sweden</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Steven</forename><surname>Feiner</surname></persName>
							<email>feiner@cs.columbia.edu</email>
							<affiliation key="aff0">
								<orgName type="department">Department of Computer Science</orgName>
								<orgName type="institution">Columbia University New York</orgName>
								<address>
									<country key="US">USA</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Unit: Modular Development of Distributed Interaction Techniques for Highly Interactive User Interfaces</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">14B5ECC57E1482894F820A8EF87E1830</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T22:14+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>interaction techniques</term>
					<term>dataflow programming</term>
					<term>visual programming</term>
					<term>augmented reality</term>
					<term>mixed reality</term>
					<term>virtual reality</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>The Unit framework uses a dataflow programming language to describe interaction techniques for highly interactive environments, such as augmented, mixed, and virtual reality. Unit places interaction techniques in an abstraction layer between the input devices and the application, which allows the application developer to separate application functionality from interaction techniques and behavior.</p><p>Unit's modular approach leads to the design of reusable application-independent interaction control components, portions of which can be distributed across different machines. Unit makes it possible at run time to experiment with interaction technique behavior, as well as to switch among different input device configurations. We provide both a visual interface and a programming API for the specification of the dataflow. To demonstrate how Unit works and to show the benefits to the interaction design process, we describe a few interaction techniques implemented using Unit. We also show how Unit's distribution mechanism can offload CPU intensive operations, as well as avoid costly special-purpose hardware in experimental setups.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Despite tremendous improvements in computer systems over the past several decades, designing and developing interaction techniques is still a difficult task, especially for highly interactive immersive 3D environments, such as Augmented Reality (AR), Mixed Reality (MR) and Virtual Reality (VR). Interaction in immersive environments involves many different types of user input and many devices with which that input is provided, such as position and orientation trackers, voice input, and haptic devices, in addition to conventional mice, trackballs, touch screens, and keyboards. While there is an increasing number of wellknown metaphors for immersive interaction, such as "the virtual hand" <ref type="bibr" target="#b2">[3]</ref>, "ray pointer" <ref type="bibr" target="#b2">[3]</ref>, and "flashlight pointer" <ref type="bibr" target="#b11">[12]</ref>, there is still much variation in how these metaphors are implemented.</p><p>Interaction techniques involve the mapping of data from input devices to application semantics. Therefore, we find it particularly attractive to use a dataflow approach to the design of interaction techniques, in which data is processed through a customizable network. We introduce the Unit framework <ref type="bibr" target="#b15">[16]</ref>, which allows users to specify 2D and 3D interaction techniques as dataflows and to modify them in running programs. We use our framework to abstract interaction techniques from applications that use them, as well as from input devices that control them. This allows users to flexibly configure and dynamically change interaction technique behavior, independent of both input devices and applications. Furthermore, in our framework, a dataflow can be easily distributed over multiple machines to create distributed interaction techniques, as well as distributed applications. As shown in Figure <ref type="figure" target="#fig_0">1</ref>, we use a directmanipulation, visual-programming representation to specify the behavior of the dataflow in the Unit User Interface (Unit UI), which itself is implemented with Unit.</p><p>In the remainder of this paper, we first present related work in Section 2, followed by brief introductions to the Unit framework and the prototype Unit UI in Sections 3 and 4. To explain how Unit can be used, we describe some example interaction techniques that we have developed with it in Sections 5, 6 and 7: a novel flexible pointer for selecting objects in 3D environments (Figure <ref type="figure" target="#fig_1">2</ref>) <ref type="bibr" target="#b14">[15]</ref>, an experimental setup for analyzing non-verbal features of speech <ref type="bibr" target="#b16">[17]</ref>, and a quickly prototyped rotationally sensitive mouse (Figure <ref type="figure" target="#fig_2">3</ref>), created from a pair of conventional mice. We describe our implementation in Section 8, and present our conclusions and future work in Section 9.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">RELATED WORK</head><p>Data flow programming and directed-graph-based visual programming languages have been used together by a number of researchers to design 2D UIs and interaction techniques. Projects that take this approach have included Smith's InterCONS <ref type="bibr" target="#b18">[19]</ref>, Borning's ThingLab <ref type="bibr" target="#b1">[2]</ref>, and Maloney and Smith's Morphic user interface framework <ref type="bibr" target="#b13">[14]</ref> for Self <ref type="bibr" target="#b21">[21]</ref>. A key issue here is the recognition that interaction techniques essentially map the outputs (and inputs) of interaction devices to the inputs (and outputs) of applications; this observation has long been an underlying theme of work on building formal models of abstract graphical input devices, which in turn can be composed together in graphs to create hierarchical input devices <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b3">4]</ref>.</p><p>Most 3D interaction techniques can be conceptualized this way, and 3D toolkits that embody these techniques (e.g., <ref type="bibr" target="#b9">[10,</ref><ref type="bibr">22,</ref><ref type="bibr">23,</ref><ref type="bibr" target="#b22">24]</ref>) typically use abstract input devices. We have chosen to abstract the interaction technique components in a similar fashion to BodyElectric <ref type="bibr" target="#b10">[11]</ref>, ICON <ref type="bibr" target="#b4">[5]</ref> and InTml <ref type="bibr" target="#b5">[6]</ref> (See Figure <ref type="figure" target="#fig_3">4</ref>.) As in these systems, our components are dataflow graphs, which are assembled into customized interaction techniques. In contrast to InTml, whose developers emphasize their XML-based specification language, we have chosen to focus on an interactive design process in which interaction techniques can be modified at runtime. We have also been more concerned with design issues that are typical for highly interactive distributed environments, such as AR/MR/VR, which distinguishes our framework from systems targeted for a user on a single computer, such as ICON. While BodyElectric also addressed 3D virtual environments, its dataflow operated on only a single machine (a Macintosh that controlled one or more SGI workstations). In contrast, Unit's dataflow graph can be spread across multiple machines.</p><p>Our approach allows the development of flexible interaction techniques, portions of which can be distributed, as well as replaced and remapped at runtime, and we provide a user interface for visual dataflow programming of these behaviors, as well as a programming API. While the directmanipulation creation of 3D widgets is an appealing approach <ref type="bibr" target="#b23">[25]</ref>, we have chosen a dataflow language for its clear depiction of the mapping between device outputs and application inputs. While our work on Unit primarily applies this approach to the design of experimental 3D interaction techniques, we also believe it is of significant relevance to the design of new input devices (e.g., <ref type="bibr" target="#b6">[7,</ref><ref type="bibr" target="#b7">8,</ref><ref type="bibr" target="#b19">20,</ref><ref type="bibr" target="#b12">13,</ref><ref type="bibr" target="#b17">18,</ref><ref type="bibr" target="#b8">9]</ref>).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">THE UNIT FRAMEWORK</head><p>The Unit framework uses the concept of units to represent the nodes in the data flow. Each unit has any number of properties and any number of connections to properties in other units, as shown in Figure <ref type="figure" target="#fig_4">5</ref>. When a property is updated, a special method is called, which by default updates all connected properties. Customized units typically override this method with their own data processing, and when done, typically redirect to the default method. These connections can also be made over the network, allowing each unit in the dataflow to be able to share its properties and listen to property changes, anywhere on the network. These simple rules allow the design of flexible and customizable units that specify the desired behavior through their combination into Unit Graphs, much like electrical circuits.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Units</head><p>As mentioned above, the key components of a unit are its properties and the ability to maintain and update connections to properties in other units.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Properties</head><p>Properties are attribute-value pairs, in which the value can be a pointer to any Java Object.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Connections</head><p>Connectivity is peer-to-peer, where only the involved units are aware of their connections and are solely responsible for administering their relationships. Connections between two units are typically accomplished by reference, with the data pointer of the source property initially copied to the target property. When an update is made, the target unit is notified that the data has changed. We also provide the ability to make connections by value, in which each update replicates the data in the source unit; however, connections by reference are typically preferred for efficiency. In addition, connections can be created through a chain of references to fields and methods in the property value, provided that the resulting source and target values are of the same data type. These references are more expensive since they require dereferencing, evaluation, and replication.</p><p>Figure <ref type="figure" target="#fig_5">6</ref> shows a simple example in which two mice are used to provide six-degree-of-freedom control of an application.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Distribution</head><p>Connections can be transparently distributed over Java Remote Method Invocation (RMI), with the addition of the hostname in the specification of the connection. Following the peer-to-peer approach, each unit is individually distributed through the RMI registry and directly accessible to other units.</p><p>This distribution approach allows parts of Unit Graphs to be distributed over an arbitrary number of applications running on an arbitrary number of machines. A common problem in immersive environments is the use of hardware, such as six-degree-of-freedom trackers, that have a permanent physical connection to a single machine. Unit not only allows cross-platform access to platform-specific devices, but also simplifies the sharing of machine-specific devices.</p><p>Our framework allows several Unit Graphs running on dif-  ferent machines or within different programs on the same machine, to communicate as a single graph, providing transparent access to data and flow control from anywhere.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Core components</head><p>Unit, the core class, which is the superclass of all units, provides the general unit functionality, which most importantly is the handling of properties, connections, and distribution. Two units are connected by specifying the source unit, source property, target unit, and target property, and an optional host name (for remote connections).</p><p>We have also implemented a set of core units that provide additional functionality. These include units for flow control, such as switches and multiplexers, units for scalar and vector operations, and units for I/O (multiple mice, keyboards, six-degree-of-freedom sensors, speech recognition/synthesis).</p><p>The units are arranged in a class hierarchy under the Unit superclass. It is easy to implement new units, which typically involves overriding the changeProperty method that is called on every property update. Most core units have a set of reserved property names that are used for their specific input and output properties.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">THE UNIT USER INTERFACE</head><p>We created the Unit UI, shown in Figure <ref type="figure" target="#fig_5">6</ref>, to allow users to design, manipulate, and visualize the dataflow in a Unit Graph.</p><p>The Unit UI lets the user add, modify and delete units, properties and connections, as well as load and save Unit Graphs. Besides visually displaying the dataflow as directed graphs with units, properties and connections, live data propagation is visualized by highlighting a property for a short time after it is updated. The user can also switch to live views of values of interest.</p><p>The Unit UI was implemented with units, using the same dataflow approach as the interaction techniques it manipulates-demonstrating that our framework does not restrict itself to interaction technique specification, but also applies to traditional application logic. Unit UI is a 3D application, and can thus coexist in the immersive environment, sideby-side with the interaction techniques whose behavior it controls. However, because of the limited field-of-view and low (800×600) resolution of our head-worn displays, we find it more productive to interact with the Unit UI in 2.5D on high-resolution (1920×1200) 24" desktop displays.</p><p>In the following sections, we describe our experience with Unit by presenting some of the experimental interaction techniques that we have developed with it.</p><p>Figure <ref type="figure">7</ref>. The dataflow for the tweaking code that manipulates the parameters in the flexible pointer through a mouse with a thumb-controlled joystick. Clicking the second mouse button alternates the parameter to be modified, while the movement of the mouse changes the value. The result is accessible in the unit named "parameters" at the bottom, which is remotely con-</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>DESIGN OF AN INTERACTION TECHNIQUE FOR IMMERSIVE ENVIRONMENTS</head><p>We have implemented a novel interaction technique, called the Flexible Pointer <ref type="bibr" target="#b14">[15]</ref>, which is an extension of existing ray-casting techniques for selection in immersive environments. The flexible pointer allows the user to point around objects, with a curved arrow, for selection of fully or partially obscured objects, as well as to more clearly point out objects of interest to other users in a collaborative environment. The flexible pointer, shown in Figure <ref type="figure" target="#fig_6">8</ref>, reduces ambiguity by avoiding obscuring objects, which would have been selected with traditional ray-casting techniques.</p><p>The flexible pointer also has a visual advantage in situations in which it is easy to point out an object, without obstructing the object of interest, while still providing a continuous line from the user to the target.</p><p>The problems that we address with the Unit framework are how users can control the pointer, and how we can interactively modify and tweak this mapping, at runtime and during the design phase.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Implementation</head><p>First, we have to decide on a representation for the geometry of the flexible pointer. We choose a Quadratic Bézier spline, where position, length, and curvature of the pointer are controlled by three points in space.</p><p>Secondly, we implement a corresponding, customized unit that listens to changes in its position, end point, and control point properties, and updates the geometry accordingly. We now have a mechanism for listening to, and updating the values of this unit, both locally and over the network. Any component in our framework is thus able to listen to changes or update the geometry of the pointer, by accessing  these properties. For increased precision, our prototype flexible pointer utilizes a two-handed approach, where the hands are tracked with two six-degree-of-freedom trackers, the distance between the hands map to the length of the pointer, and the relative bending of the hands determines the curvature characteristics of the pointer. We implement this control behavior as a separate Unit Graph that updates the properties of the above-mentioned unit that is controlling the geometry.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Design Process</head><p>One of the hardest tasks in interaction technique design is the assignment of appropriate values to constants, and as with most interaction techniques, there are several such constants for the flexible pointer (e.g., the scale factor for the mapping of the distance between the user's hands to the length of the pointer).</p><p>Thanks to Unit's modularity, separate Unit Graphs can be used for interactive tweaking and debugging of the running interactive technique. We constructed a new graph that takes input from a small handheld presentation mouse with a thumb-controlled joystick. A button click alternates between the constants that are modified and pushing the joystick up/down increases/decreases the value of the current constant, as shown in Figure <ref type="figure">7</ref>. Although we could place the graph in the same program as the flexible pointer, avoiding the mix of interaction technique and tweaking code seemed reasonable, and we found it more advantageous to run it in a separate program. In fact, the ease of distribution made us place it on a separate machine, which gave us an exclusive environment for developing the tweaking code, as shown in Figure <ref type="figure">9</ref>. The behavior of our interaction technique can be modified in real time as soon as the graph is connected to the flexible pointer. More importantly, we can have the flexible pointer running constantly, while modifying, recompiling, and restarting the tweaking code. When satisfied with the behavior of the interaction technique, the tweaking code is removed, simply by not running it. This example shows how we can use Unit to abstract the interaction techniques from the input devices and the application, and also how two interaction techniques (the flexible pointer and the tweaking code) can be abstracted from each other.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">DISTRIBUTED SPEECH RECOGNITION, ANALY-SIS, AND LOCALIZATION</head><p>We found Unit very useful in a recent experimental setup for a user interface based on speech analysis and audio localization <ref type="bibr" target="#b16">[17]</ref>. We intended to explore the use of nonverbal features of the user's speech for implicit or explicit program control. Additionally, we planned to use multiple microphones to approximate the user's head position, by comparing the audio from the different microphones.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Running CPU-intensive speech recognition on multiple microphones</head><p>First, we needed a mechanism for getting input from multiple microphones, so we considered the following approaches:</p><p>1) Using multiple general-purpose sound cards on one computer. One would have to be careful to not run into hardware conflicts, since an ordinary PC is not designed to have many simultaneously active sound cards.</p><p>2) Using a special-purpose sound card with multiple audio inputs. One of these cards would be too expensive for our low-budget experimental setup.</p><p>3) Using a special-purpose array microphone for audio localization, where the signal processing is done in hardware. The few such inexpensive consumer-level microphones we found did not provide programming API access to inferred positional data. These microphones also put restrictions on the setup, limited by the characteristics of the microphone, and we found it neither feasible nor cost effective to build our own microphone.</p><p>Second, speech recognition is CPU intensive, and running several instances of speech recognition software on the same machine used for the visualization would significantly affect the frame rate.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>A distributed approach</head><p>Realizing that we had many available machines in our lab, equipped with standard sound cards, we decided to take advantage of Unit's distribution mechanism to offload the CPU-intensive speech recognition to other machines on the network. Each of these machines could then support one microphone, without the need for any special-purpose hardware or alteration of the hardware configuration.</p><p>We designed our Unit graph such that the speech is analyzed locally on each speech server, with the recognized speech and the extracted speech features communicated over Ethernet to the application server. The Unit dataflow in the application server fuses the input and adjusts the behavior of the application accordingly. Our experimental setup is shown in Figure <ref type="figure" target="#fig_8">10</ref>.</p><p>It might sound contradictory that we find it more costefficient and convenient to use a separate computer, instead of a special-purpose sound card, to host a microphone. However, the important point here is that Unit allowed us to use our currently available general-purpose hardware for rapid prototyping of an experimental user interface, without having to deal with the hardware-related issues that would play a central role in designing a practical product. While Unit made it possible to easily develop a distributed dataflow for our purposes, its transparent distribution mechanism also makes it straightforward and simple to reconfigure the application to run on a single machine (e.g., with multiple sound-cards or a multi-input sound card).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="7">COMPOSITE INPUT DEVICES</head><p>The Unit framework has made it easy for us to develop rudimentary prototype input devices, assembled from arrangements of two or more input devices. Figure <ref type="figure" target="#fig_2">3</ref> shows one of the simplest examples of a composite input device: a three-degree-of-freedom mouse created from two off-theshelf wireless optical mice that are rigidly attached to provide an additional degree of freedom (rotational acceleration in the plane of the surface on which they are used). Unit provides simple means for specifying the relations between the two mouse sensors, and thus allows the behavior of this composite input device to be visually programmed, completely in software, as shown in Figure <ref type="figure" target="#fig_0">1</ref>.</p><p>Unit makes it possible to build composite input devices that consist of hierarchies of different input devices and interaction techniques, while providing unified application-level APIs to these devices.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="8">IMPLEMENTATION</head><p>The Unit framework is implemented with Java and Java3D, and thus runs across multiple platforms. Unit's current im-plementation supports conventional pointing devices (e.g., mice, trackballs, touchpads, trackpoints, and touchscreens) and keyboards, as well as several six-degree-of-freedom sensors (Ascension Flock of Birds, InterSense IS600 Mark 2 Plus, and InterSense IS900) and speech recognition and speech synthesis (through the Java Speech API and IBM ViaVoice). RMI is used for distribution over TCP/IP. We have used a heterogeneous machine pool during the development, with machines ranging from a Celeron 400 MHz, with 192 MB RAM, running Windows 98, to a Dual Xeon 2.8 GHz, with 1 GB RAM, running Windows XP. The lowend machines can be used for running Unit Graphs and input device handling, while the more powerful machines with 3D acceleration hardware are needed for 3D graphics.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="9">CONCLUSIONS AND FUTURE WORK</head><p>We have presented Unit, a system that uses a visual dataflow programming language to support designing and experimenting with 2D and 3D interaction techniques. We are actively using Unit to develop interaction techniques, and have demonstrated its utility through a set of examples created with the system.</p><p>As we have showed, Unit allows the flexible specification of interaction techniques, while effectively avoiding problems related to specific hardware setups in experimental systems through a peer-to-peer distribution mechanism. Besides abstracting interaction techniques from input devices and applications, Unit's modularity has also proven convenient, since it allows debugging components to be developed in a stand-alone fashion outside the interaction technique of interest.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 .</head><label>1</label><figDesc>Figure 1. The Unit User Interface, displaying the Unit Graph that specifies the interaction for the three-degree-of-freedom mouse.</figDesc><graphic coords="1,54.00,200.34,147.18,99.72" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 .</head><label>2</label><figDesc>Figure 2. The flexible pointer selecting an obscured object, without visually interfering with the occluding object.</figDesc><graphic coords="1,226.80,200.34,150.48,99.06" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 3 .</head><label>3</label><figDesc>Figure 3. The 3DOF mouse, a simple composite input device consisting of two wireless optical mice. A Unit graph extracts the rotational acceleration in the plane of the surface.1 INTRODUCTION</figDesc><graphic coords="1,403.20,200.40,150.54,99.42" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 4 .</head><label>4</label><figDesc>Figure 4. a) Traditional input device interface for an interactive application. Input devices are mapped to functionality on the application level, making it hard to change devices and behavior. b) Unit places interaction techniques in an abstraction layer between input devices and the application. This layer can be changed for different combinations of interaction devices and behavior. c) Unit's modularity also makes it possible to abstract interaction techniques from each other.</figDesc><graphic coords="2,54.06,60.00,503.88,121.56" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figure 5 .</head><label>5</label><figDesc>Figure 5. Two units with two connected properties in the Unit UI. As the text property changes, the width field of the dimension property of the label is updated.</figDesc><graphic coords="3,91.08,60.00,169.08,142.92" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 6 .</head><label>6</label><figDesc>Figure 6. A screenshot from the Unit UI, in which a dataflow graph is being specified for direct control of six degrees of freedom through the use of two mice. (We use the scroll wheel to provide a third degree of freedom from each mouse.)</figDesc><graphic coords="3,128.16,466.32,355.68,240.90" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>Figure 8 .</head><label>8</label><figDesc>Figure 8. The Flexible Pointer Interaction Technique provides easier selection and clearer indicative pointing in collaborative environments in addition to the ability to select fully or partially obscured objects.</figDesc><graphic coords="5,52.86,60.00,505.56,81.00" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_7"><head>Figure 8 .</head><label>8</label><figDesc>Figure 8. Overview of the curved pointer interaction technique during the design phase. From right to left: The application implements the geometry for a Bézier curve pointer and uses a distributed unit to listen to changes in its properties. The Unit UI is run on a second computer on the network. The graph manipulated by the Unit UI outputs the three parameters to the Bézier curve, while taking the five curve parameters as input. The position properties are provided by two six-degree-of-freedom trackers. The other parameters can either be determined by a graph that calculates them based on tracker orientation, or by a graph that lets the user manually modify the trackers with a mouse-compatible device. Interaction technique abstraction occurs at several stages here, most clearly between the application, the Unit UI, and the sensors.</figDesc><graphic coords="5,76.62,401.94,468.12,264.66" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_8"><head>Figure 10 .</head><label>10</label><figDesc>Figure 10. The Unit graph for the experimental non-verbal speech and audio localization setup.</figDesc><graphic coords="6,334.86,386.94,221.28,288.90" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="4,74.64,418.26,463.26,272.70" type="bitmap" /></figure>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>ACKNOWLEDGMENTS</head><p>This research was funded in part by Office of Naval Research Contracts N00014-99-1-0249 and N00014-99-1-0394, NSF Grant IIS-00-82961 and IIS-01-21239, and gifts from Intel, Microsoft Research, and Alias | Wavefront.</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">The Device Model of Interaction</title>
		<author>
			<persName><forename type="first">E</forename><surname>Anson</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. SIG-GRAPH &apos;82 (ACM Comp. Graph</title>
				<meeting>SIG-GRAPH &apos;82 (ACM Comp. Graph<address><addrLine>Boston, MA</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1982-07">July 1982. July 26-30, 1982</date>
			<biblScope unit="volume">16</biblScope>
			<biblScope unit="page" from="107" to="114" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">The Programming Language Aspects of Thin-gLab, a Constraint-Oriented Simulation Laboratory</title>
		<author>
			<persName><forename type="first">A</forename><surname>Borning</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Trans. on Prog. Langs. and Sys</title>
		<imprint>
			<biblScope unit="volume">3</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="343" to="387" />
			<date type="published" when="1981-10">October 1981</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">An Evaluation of Techniques for Grabbing and Manipulating Remote Objects in Immersive Virtual Environments</title>
		<author>
			<persName><forename type="first">D</forename><surname>Bowman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">F</forename><surname>Hodges</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. Symp. on Interactive 3D Graph</title>
				<meeting>Symp. on Interactive 3D Graph</meeting>
		<imprint>
			<date type="published" when="1997">1997</date>
			<biblScope unit="page" from="35" to="38" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">An Approach to Hierarchical Input Devices</title>
		<author>
			<persName><forename type="first">D</forename><surname>Duce</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Van Liere</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Hagen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Comp. Graph. Forum</title>
		<imprint>
			<biblScope unit="volume">9</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="15" to="26" />
			<date type="published" when="1990">1990</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Input Device Selection and-Interaction Configuration with ICON</title>
		<author>
			<persName><forename type="first">P</forename><surname>Dragicevic</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">D</forename><surname>Fekete</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. IHM-HCI 2001</title>
				<meeting>IHM-HCI 2001<address><addrLine>Lille, France</addrLine></address></meeting>
		<imprint>
			<publisher>Springer Verlag</publisher>
			<date type="published" when="2001">2001</date>
			<biblScope unit="page" from="543" to="448" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">InTml: A Description Language for VR Applications</title>
		<author>
			<persName><forename type="first">P</forename><surname>Figueroa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Green</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><forename type="middle">J</forename><surname>Hoover</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. 3D Web Technology</title>
				<meeting>3D Web Technology</meeting>
		<imprint>
			<date type="published" when="2002">2002</date>
			<biblScope unit="page" from="53" to="58" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Bricks: Laying the Foundations for Graspable User Interfaces</title>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">W</forename><surname>Fitzmaurice</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Ishii</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Buxton</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. Human Factors in Comp. Sys. (CHI &apos;95</title>
				<meeting>Human Factors in Comp. Sys. (CHI &apos;95</meeting>
		<imprint>
			<date type="published" when="1995">1995</date>
			<biblScope unit="page" from="442" to="449" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Phidgets: Easy Development of Physical Interfaces Through Physical Widgets</title>
		<author>
			<persName><forename type="first">S</forename><surname>Greenberg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Fitchett</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. ACM Symp. on User Interface Software and Tech. (UIST &apos;01)</title>
				<meeting>ACM Symp. on User Interface Software and Tech. (UIST &apos;01)<address><addrLine>Orlando, FL</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2001">2001</date>
			<biblScope unit="page" from="209" to="218" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Touch-Sensing Input Devices</title>
		<author>
			<persName><forename type="first">K</forename><surname>Hinckley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Sinclair</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. Conf. on Human Factors in Comp. Sys. (CHI &apos;99)</title>
				<meeting>Conf. on Human Factors in Comp. Sys. (CHI &apos;99)</meeting>
		<imprint>
			<biblScope unit="page" from="223" to="230" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<monogr>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">D</forename><surname>Kessler</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Kooper</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">C</forename><surname>Verlinden</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Hodges</surname></persName>
		</author>
		<ptr target="http://www.cc.gatech.edu/gvu/vir-tual/SVE/docV2.0/sve.book_1.html.TechnicalReport" />
		<title level="m">The Simple Virtual Environment Library, Version 2.0, User&apos;s Guide</title>
				<imprint>
			<date type="published" when="1997">1997</date>
		</imprint>
		<respStmt>
			<orgName>, Graphics, Visualization, and Usability Center, Georgia Institute of Technology</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<title level="m" type="main">Method and system for generating objects for a multi-person virtual world using data flow networks</title>
		<author>
			<persName><forename type="first">J</forename><surname>Lanier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J-J</forename><surname>Grimaud</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Harvill</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Lasko-Harvill</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Blanchard</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Mark</forename><surname>Oberman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Teitel</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1993">1993</date>
			<biblScope unit="page">5588139</biblScope>
			<pubPlace>United States Patent</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">JDCAD: A Highly Interactive 3D Modeling System</title>
		<author>
			<persName><forename type="first">J</forename><surname>Liang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Green</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Comp. and Graph</title>
		<imprint>
			<biblScope unit="volume">18</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="499" to="506" />
			<date type="published" when="1994">1994</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">A Two-ball Mouse Affords Three Degrees of Freedom. Extended Abstracts Human Factors in Comp</title>
		<author>
			<persName><forename type="first">I</forename><forename type="middle">S</forename><surname>Mackenzie</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">W</forename><surname>Soukoreff</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Pal</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Sys. (CHI &apos;</title>
		<imprint>
			<biblScope unit="volume">97</biblScope>
			<biblScope unit="page" from="303" to="304" />
			<date type="published" when="1997">1997</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Directness and Liveness in the Morphic User Interface Construction Environment</title>
		<author>
			<persName><forename type="first">J</forename><surname>Maloney</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Smith</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. ACM Symp. on User Interface Software and Tech. (UIST &apos;95)</title>
				<meeting>ACM Symp. on User Interface Software and Tech. (UIST &apos;95)<address><addrLine>Pittsburgh, PA</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1995">1995</date>
			<biblScope unit="page" from="21" to="28" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">The Flexible Pointer-An Interaction Technique for Selection in Augmented and Virtual Reality</title>
		<author>
			<persName><forename type="first">A</forename><surname>Olwal</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Feiner</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Extended Abstracts of ACM Symp. on User Interface Software and Tech. (UIST &apos;03)</title>
				<meeting><address><addrLine>Vancouver, BC</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Unit-A Modular Framework for Interaction Technique Design, Development and Implementation</title>
		<author>
			<persName><forename type="first">A</forename><surname>Olwal</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Dept. of Num. Anal. and Comp. Sci</title>
		<imprint>
			<date type="published" when="2002">2002</date>
		</imprint>
		<respStmt>
			<orgName>Royal Inst. of Tech.</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">MS Thesis</note>
</biblStruct>

<biblStruct xml:id="b16">
	<monogr>
		<title level="m" type="main">Using Prosodic Features of Speech and Audio Localization in Graphical User Interfaces</title>
		<author>
			<persName><forename type="first">A</forename><surname>Olwal</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Feiner</surname></persName>
		</author>
		<idno>CUCS-016-03</idno>
		<imprint>
			<date type="published" when="2003-06-26">June 26, 2003</date>
			<pubPlace>New York, NY</pubPlace>
		</imprint>
		<respStmt>
			<orgName>Department of Computer Science, Columbia University</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Technical Report</note>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Behavior Construction Kits</title>
		<author>
			<persName><forename type="first">M</forename><surname>Resnick</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Communications of the ACM</title>
		<imprint>
			<biblScope unit="volume">36</biblScope>
			<biblScope unit="issue">7</biblScope>
			<biblScope unit="page" from="64" to="71" />
			<date type="published" when="1993-07">July 1993</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Building Interfaces Interactively</title>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">N</forename><surname>Smith</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. ACM SIGGRAPH Symp. on User Interface Software</title>
				<meeting>ACM SIGGRAPH Symp. on User Interface Software<address><addrLine>Banff, Alberta</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1988">October 17-19, 1988</date>
			<biblScope unit="page" from="144" to="151" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">AlgoBlock: A Tangible Programming Language, A Tool for Collaborative Learning</title>
		<author>
			<persName><forename type="first">H</forename><surname>Suzuki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Kato</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. 4th</title>
				<meeting>4th</meeting>
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<monogr>
		<title level="m">European Logo Conf</title>
				<imprint>
			<date type="published" when="1993-08">August 1993</date>
			<biblScope unit="page" from="297" to="303" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Self: The Power of Simplicity</title>
		<author>
			<persName><forename type="first">D</forename><surname>Ungar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Smith</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. OOPSLA &apos;87</title>
				<meeting>OOPSLA &apos;87<address><addrLine>Orlando, FL</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1987-10">October 1987</date>
			<biblScope unit="page" from="227" to="241" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<monogr>
		<ptr target="http://www.vrjuggler.org/" />
		<title level="m">VR Juggler-Open Source Virtual Reality Tools</title>
				<imprint/>
		<respStmt>
			<orgName>Iowa State University</orgName>
		</respStmt>
	</monogr>
	<note>Virtual Reality Applications Center</note>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">An Interactive 3D Toolkit for Constructing 3D Widgets</title>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">C</forename><surname>Zeleznik</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">P</forename><surname>Herndon</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">C</forename><surname>Robbins</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Huang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Meyer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Parker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">F</forename><surname>Hughes</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. SIGGRAPH &apos;</title>
				<meeting>SIGGRAPH &apos;</meeting>
		<imprint>
			<date type="published" when="1993">1993</date>
			<biblScope unit="volume">93</biblScope>
			<biblScope unit="page" from="81" to="84" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
