Spatial Computing
Spatial Computing
Simon Greenwold
B.S., English & Applied Math
Yale University, June 1995
Abstract
Spatial computing is human interaction with
a machine in which the machine retains and
manipulates referents to real objects and spaces. It
is an essential component for making our machines
fuller partners in our work and play. This thesis
presents a series of experiments in the discipline
and analysis of its fundamental properties.
Spatial Computing
Simon Greenwold
Joseph A. Paradiso
Associate Professor
Co-Director, Things That Think Consortium
MIT Media Laboratory
thesis reader
Chris Csikszentmihályi
Assistant Professor of Media Arts and Sciences
MIT Program in Media Arts and Sciences
thesis reader
John Maeda
Associate Professor
MIT Program in Media Arts and Sciences
thesis advisor
Acknowledgements
1. Preliminaries......................................... 8
1.1 Introduction 8
1.2 Definition 11
3. Motivation.......................................... 32
5. Methodology...................................... 34
6. Precedents .......................................... 35
5
9. Internaut............................................. 62
9.1 Introduction 62
9.2 Technical Description 63
9.3 Precedents 65
9.4 Evaluation and Critique 67
9.5 Future Work 70
13. EyeBox................................................ 90
13.1 Introduction 90
13.2 System Description 91
13.3 Motivation 92
13.4 Technical Description 92
13.5 Precedents 95
13.6 Design and Operation 97
13.7 Evaluation and Critique 100
6
Part III: Evaluation 14. Summary Conclusions.................... 102
14.1 Editing 102
14.1.1 Suggestion vs. realism 102
14.1.2 Literalness vs. metaphor 103
14.1.3 Design vs. engineering 104
14.2 Qualities of Interactions 104
14.2.1 Full vs. limited 105
14.2.2 Feedback vs. one-way control 105
14.2.3 Predictablity vs. inconsistency 105
14.3 Shortcuts 106
14.3.1 Relativity of perception 106
14.3.2 Opacity 107
14.4 The Future of Spatial Computing 108
14.4.1 Technologies 108
14.4.2 Applications 109
7
1.1 Introduction
We have arrived at a critical point in the history
of the machine in space. Engineers are rapidly
banishing the last moving parts from consumer
electronics, allowing the machines to shrink into
near invisibility. Bulky CRTs are yielding to flat
panels, allowing us to embed them into the surfaces
we use daily and to free up valuable “real estate” on
our desks. The businesses of computer vision and
graphics have pushed our abilities to recover spatial
information from the world at large and represent
it recognizably to the eye. The long-standing divide
between the idealized spaces of computer science
and the heavy, cluttered spaces of real-world
engineering are wider than ever, polarizing research
around the world. Now that computation’s denial
of physicality has gone about as far as it can, it is
time for a reclamation of space as a computational
medium.
8
all, whereas an entirely virtual environment must
model the world in every particular. The systems
organized on this scale and the principles derived
from them properly belong to the field of Human-
Computer Interaction (HCI), whose literature has
ballooned beyond manageability.
Part I: Framework
I begin with a definition of spatial computing and
then sketch the conditions that give it currency.
Finally I give a brief chronology of the experiments
I have undertaken in the field.
9
successful implementation of projects in spatial
computing, synthesized from the technical analyses
of each of the projects. Next I offer a guesses about
the futures of the technologies involved in spatial
computing. Finally I describe a sample application
of the field.
10
1.2 Definition
11
The criterion that the objects and places in spatial
computing have physical instantiation is not an
arbitrary or trivial distinction. There are specific
characteristics that make the production and
analysis of spatial computing systems different
from purely synthetic virtual systems. This
distinction does not imply a value judgment—
virtual systems have their place. However there are
many cases, some discussed below, in which spatial
computing could significantly benefit existing
virtual systems.
12
2.1 History
13
IBM 705, which doubled as a desk in order to make
its outlandish size more palatable.
14
complicated electronics project, have been available
in packages of sufficient size to allow them to be
handled with fingers and soldered by hand—DIP
“dual inline packages,” for instance. But many
of today’s technologies such as BlueTooth are
available for use only in packages with leads so
many and so small that no human being could
reasonably expect to manipulate them. These
types of chips are produced for companies who
design circuits on a computer and then have them
assembled by robots. This happens, of course,
Figure 2.4. The SG22oo from Sewon because the economics of serving a hobbyist
claims to be the smallest cell phone. population doesn’t justify the expenditure. But
there is the feeling that consumer electronics
technologies are shrinking away from accessibility
to individual experimenters.
15
Figure 2.7. The 1982 film Tron demon-
2.1.2 Space in the Machine strated the cultural fascination with and
fear of being swallowed by the machine.
Our fascination with the space inside the machine
is not new. The Aristotelian universe was essentially
a mechanical system that described planetary
motions as part of a giant machine. Describing life
inside space stations and bubbles large enough
to hold populations has been the bedrock of
science fiction for as long as we’ve had it. In 1964
Archigram even reimagined the city as a huge
walking robot that could dock with other cities.
Figure 2.8. In 1959, the DAC-1 (Design
Augmented by Computers), developed
At least as far back as the Renaissance, artists such by General Motors and IBM, became the
as Durer used machines to help them represent first interactive 3D computer graphics
system.
space. In the second half of the twentieth, however,
the growing internal power of machines began to
allow them to represent spaces and objects directly
to our eyes, often spaces and objects with no
referent in the real world. Computers turned out
to be masters of perspective and simple shading,
a few of the artist’s simplest tricks for conveying
depth. Suddenly there appeared to be whole open
landscapes inside the machine.
16
ourselves wholesale out of messy old real space
and into virtual space. A magnetic core memory of
4,000 bits weighed tons in 1951, but now (April 9,
2003), we store a billion bits on a chip the size of a
fingernail. The scarcity, expense, and imperfection
of real land made the idea of a boundless internal
landscape too tempting to resist. This notion was
also greeted with anxiety as demonstrated by
movies such as Tron and Lawnmower Man, in
which humans are sucked into and trapped inside a
virtual environment.
Figure 2.11. A typical representation of Figure #: The Barcelona Pavilion by Mies Van der Rohe. One of
a machine-generated “space” from the the few real spaces that looks virtual.
soon to be released online environment,
Second Life [Linden Labs, 2003].
17
gridded plazas. Lev Manovich also finds a return to
a kind of “soft modernism” in the aesthetics of the
web [Manovich, 2002].
18
for example the web sites of makers of graphics
hardware, such as nVidia [www.nvidia.com]. The
features of the cards drive the aesthetics of virtual
environments.
19
This mess of signifiers is pretty much where
software spaces remain today. Spatial computing
does away with icons, lists, and menus as much as
possible, to allow things to stand for themselves.
20
hole in space, a discontinuity which we cannot
contextualize in actual space specifically because
it is not of real space. If the essence of spatial
connectedness in a network is supposed to be the
hyperlink, we are building a space out of holes in
space, which is like trying to constitute a sponge out
of its voids.
21
willingness to do as it’s told. The author can attest
that this kind of power can be very compelling to
a young person who longs for a ordered world in
which every problem eventually yields to logic.
It also helps explain why virtual spaces have had
only one resounding area of success—violent first-
person games in which players shoot each other at
will. These scenarios appeal to the same crowd of
teenage boys.
22
2.3 The Problems With Realism
23
This confusion of “realism” is apparent from
looking at the use of the term “realistic” as it is
applied to computer simulations such as games.
Sega’s basketball game NBA 2K3 is hailed all over
the Internet as the most “realistic” basketball game
ever to be produced. What this seems to mean is
that the players bodies and faces are taken from
real NBA players and the camera shots look like
television coverage of basketball. The view is not
first-person from a player in the game, and not even
from a fan. Instead “realistic” here means creating Figure 2.20. Sega’s NBA 2K3. Widely
television with your thumbs. This could hardly be touted as “the most realistic basketball
game ever.” [http://www.epinions.com/
farther from the reality of a player in the game. content_85992509060#]
24
world. Any notion of a photographic experience of
a real scene is one constructed by the brain. This
is different from the experience of a photograph,
which appears as a small colored patch in our
field of view. We can understand it as it relates to
our experience of the visual world, but it does not
mimic our experience of it.
25
our understanding of the world by actively testing
it with our eyes, which are attached to our heads.
That means if there is an uncertain condition
to our right, we may turn our heads. Any visual
information we gather there is added to our mental
image of the scene in front of us, but the image is
as much constructed in reverse from beliefs and
memories as it is from light hitting our retinas.
In fact patients with lesions in their visual cortex
called scotomas, which make it impossible to
perceive anything from large patches of their visual
fields, often fail to notice they have a problem Figure 2.23. Every eye has a blind
[Pessoa, 2003]. The process by which the brain spot where the retina is joined to
the optic nerve. We don’t notice it.
stitches the hole with pieces of what it thinks ought [www.nidek.com/blind.html ]
to be there is called “filling-in,” and it is an area
of active research. In fact we all such a blind spot
10˚ off the center of our visual focus, but we never
notice it unless we design a specific test to discover
it. A photographic image may well describe our
mental construction of what we perceive, but it
vision requires quite a bit of editing to produce
what we “see.”
26
perception disambiguates the situation before it
even becomes questionable in reality. For instance,
there is always motion in the real world, and
there will be differences in the relative speeds
of motion of the tree and the head in the visual
field. This effect, called head-motion parallax, is
more important to our perception of depth than
stereopsis [Arthur, 1993]. Our ability to perceive
is distinctly limited in virtual realms because
the system cannot possibly respond to all the
techniques for active perception that we use. Some
systems try to allow for it by using gaze or head-
position tracking, but the instrumentality of the
system always acts to flatten some of the nuance
that we rely on in our sensing dialog with the world.
27
This is why an artifact such as an aliased halo
around an otherwise well-rendered character is
so disturbing, or why the slightest anti-physical
movement is so disruptive. Sidestepping this
problem is the considerable work toward “cartoon”
renderings of virtual systems, which trade efforts at
photorealism for abstraction [Kline, 1999].
28
Abstraction successfully avoids the vain attempt to
build a virtual simulation with all of the detail and
richness of the real world.
29
2.4 The Problems With Interactivity
30
own senses and reduces any squeezable object to a
pressure sensor. In order for a physical object to be
augmented rather than flattened by computation,
the computation must occur (or appear to occur)
inside the object and the consequences of the
computation be registered by the object. The object
must also not become fragile or restricted in its
manipulability.
31
3. Motivation
32
“We are continually living a solution of
problems that reflection cannot hope to
4. Enter Spatial Computing
solve.”
Spatial computing proposes hybrid real/
— J. H. Van den Berg
virtual computation that erodes the barriers
[Van den Berg, 1955]
between the physical and the ideal worlds. It is
computational design arising from a deep belief in
phenomenology. This emphasis delimits it inside
the body of HCI practice, the majority of which
concerns itself exclusively with what it can measure.
Spatial computing is more interested in qualities
of experience. Wherever possible the machine in
space and space in the machine should be allowed
to bleed into each other. Sometimes this means
bringing space into the computer, sometime this
means injecting computation into objects. Mostly
it means designing systems that push through the
traditional boundaries of screen and keyboard
without getting hung up there and melting into
interface or meek simulation.
33
5. Methodology
35
interface (because it doesn’t scale gracefully to the
level of complexity of modern software) and virtual
realities (because they confuse visual information
with spatial experience):
36
exists with spatial computing. Spatial computing
is inappropriate for tasks such as word-processing,
which have no obvious physical connection to begin
with. It is well-suited to domains such as design,
which use the computer as virtual canvas or clay.
Tangible Interfaces
Some recent and ongoing research at the Lab also
shares much with spatial computing. In particular,
Hiroshi Ishii’s Tangible Media Group has an
interest in physical manipulation of objects as
a medium for computational control. The work
of Brygg Ullmer such as his metaDESK [Ullmer,
1998], and mediaBlocks [Ullmer, 1997] provide a
variety of ways to use physical objects and spaces to
explore and manipulate digital information. One of
the primary differences between what Ullmer and
the rest of Ishii’s group have done and what I am
have been doing is that their work focuses directly
on interface. They are willing to use physical
objects as icons “phicons.” These are objects
without previous valence to the user, often abstract
blocks or disks. Their manipulation does provide
control over a system, but it isn’t fundamentally
Figure 6.1. Brygg Ullmer’s metaDESK
different from software interface except that it is
uses a variety of physical tools and meta-
phors to allow users to interact with bound by physical laws. They call these systems
geographical data. “TUIs” for Tangible User Interfaces. I think
tangibility is important, but it is not my primary
concern. Tangibility is a necessary by-product of
computational engagement with real objects in real
spaces. I would not want to miss it, but I do think
that reducing physical object to interface controls
unnecessarily saps them of their own identity and
autonomy. As Ullmer points out, they are symbolic,
standing for something for something other than
themselves [Ullmer, 2001].
Figure 6.2. Brygg Ullmer’s media- Unlike Tangible Media, which deals with physical
Blocks lets users store and manipulate objects as interface, my aim is to obscure and
media clips as if they were stored in
wooden blocks. distribute interface so that it becomes impossible to
37
locate its beginning. Interface itself is unavoidable.
It happens at the meeting of any two different
media. But in our interactions with physical objects
we are seldom aware of interface as such. Our
attention extends beyond the interface to the object
of our intention. I hope to allow for that push past
interface in spatial computing.
38
On the humanist side of this research, Anthony
Dunne and Fiona Raby have been looking at
ways people react to objects with technological
appendages [Dunne, 2001]. For instance they
embedded a GPS receiver in a table and had
people keep it in their homes for periods of time.
They found people became attached to the object
and its operation and were concerned when it
lost its signal. Some were compelled to take the
table outside where it could tell where it was.
The attachment people make to active objects is
of central importance to spatial computing. The
qualities of design that establish that pseudo-
empathic relationship are part of what I hoped to
engage.
39
7. Roadmap of Explorations
7.1 Installation
40
responded as if they were actually in the room.
I later wrote an external client for the system,
which I ran on several machines around the room.
Whenever a user threw an object close enough
to one of the clients, it would disappear from the
viewing screen and appear on the screen of the
client. This gave the strong impression that one had
actually flung a virtual object through real space.
7.2 Internaut
41
of piezoelectric sensor wires underneath it to sense
footsteps and two Doppler radars to sense upper
body movement. Users could control the music it
made by where and how hard they stepped on the
carpet and the overall speed and direction of their
body movements. The system had been used in
performance by dancers and had had a thorough
tour of the world. It was my job to take the same
sensor information that Kai-yuh Hsiao had made
into music and make it visual. The resulting
system, now renamed Stomping Ground, used
rear-projection to present people on the carpet Figure 7.3. Stomping ground.
with greater than life size images of their own legs
and feet with blobs rising out of the floor wherever
they stepped. In the resulting piece, the space of the
carpet was legibly translated into a virtual space in
which people mingled with virtual forms.
7.4 Hotpants/LittleVision
42
For the purposes of the class, the device served as
a display. But because of its size and shape, it was
more than a screen. It was a physical entity to be
handled and manipulated. Because each pixel was
visible, it wasn’t possible to forget the physicality
of the device and become seduced by the image
surface. The image was always teetering on the
edge of legibility, requiring the viewer to position
themselves in space at just the right distance to
make it properly resolve. That said, some projects
from the class did not deal thoroughly with the
object qualities of the display, and instead tacked
it on as though its operation as a display somehow
excused it of its body.
43
analysis of the spatial qualities of different modes
of wireless information transfer. It struck me that
as the world moves away from wires and infra-
red communication in favor of radio-frequency
(RF) technologies such as 802.11 and BlueTooth,
we are losing the specificity of address that a
spatially directed connection offers. It is always
possible to tell what a wired device is attached
to—just follow the wire. And infra-red devices like
remotes are aimable within a fairly narrow cone
as is obvious when using a television remote. But
RF communications extend almost spherically
from their source, making directional intention
impossible. We have to resort to selecting the
objects of our intentions from a list of names or
identifiers. My idea was to emphasize directionality
and specificity of spatial communication over
all other qualities, and therefore for my carrier
of communication, I chose a laser beam, the
apotheosis of directionality. I built a system for
communication between devices that operates
much like an infra-red transceiver, but since it
was laser-bound, it was longer-range and totally
pointable. This pointability and the feedback the
aimer got as a red spot on the object of control were
obvious examples of the benefit of maintaining a
spatial relationship with computational objects.
7.6 EyeBox
44
take surprisingly little sensing to produce a very
good representation of many everyday objects.
45
Figure 7.8. The six projects organized along five different axes. They are positioned vertically on the scales of Space/
Object, Physical/Virtual, Feedback/Blind, System/Component, and Visible/Invisible. They are sized in the chart ac-
cording to the amount that the project directly addresses that axis.
Legend:
46
8. Installation
8.1 Introduction
Figure 8.1. Installation allowed users
to create virtual forms and install them
permanently into real space. My first project was Installation, a system for the
creation of virtual forms and their permanent
installation into real space. Installation consisted
of a viewing window and stylus. A tiny camera on
the back of the viewing window showed a live feed
of the room behind the screen. The stylus and the
viewing window were tracked in three dimensional
position and orientation to calibrate virtual
coordinates with real viewing position. Virtual
objects created in the system responded as though
they were physically in the space of the room. Once
47
objects were placed in the environment, they stayed
there in perpetuity, pulsing and growing over time.
48
creation, and object placement. In object creation
mode, with the stylus in front of the window,
when users pressed the button, a blobby substance
appeared to be squirted out from the end of the
pencil-like cursor. If users stopped moving, the
blobby form continued to inflate. If users moved
the stylus quickly, the form was a thin track of the
gesture in space, but if they moved slowly, the blob
inflated in place, making a thicker form. In this
way, users had direct gestural control over virtual
forms created in the system. It was easy to make
Figure 8.5. Object creation mode. The pretzel-like knots or letters this way. Installation
form tracks the user’s gesture. was not intended as a drafting tool, but a simple
gestural sketcher for organic blobby forms. Users
could add many separate blobs to a single form by
stopping and starting their drawings.
49
When a user picked up the viewing window, the
video feed moved in a predictable way because
the camera moved. The virtual forms represented
onscreen moved in exactly the way they would if
they were truly positioned in space where they were
placed. This allowed the user to move the viewing
window to look at the objects they had made from
any angle, even to cut through them by pushing
the window through space they occupied. Through
the viewscreen, the objects as seen through the
window were fully fledged members of the space Figure 8.7. Moving the viewscreen
of the room. They floated wherever they had been around causes the forms to react as
if they were exactly where they were
put. In order to add some life to the system I gave placed in the room.
the forms the ability to change shape and grow over
time. If they were left too long, they grew out of
control, filling the space of the room.
50
client, I installed the client software, which in
its default mode, simply displayed a blank white
screen. I then entered a special mode on the master
system (the flat panel), in which I placed a sphere
into the room directly surrounding each client. I
taped blue tape around the border of the monitor
of each client, so that a user of the system could
identify them. Whenever a user was in placement
mode, and they threw an object close enough to a
client, it would disappear from the viewing window,
and immediately show up on the client’s screen,
rotating slowly in space. I set up the printer as a
client too, and when an object was sent there, it
disappeared from the viewing window and got
printed out. In this way, users actually had the
sense that they were making objects and throwing
them around the room.
51
up keyboard—probably the easiest way to get a
bunch of momentary switches into a PC.
Sensing System
The sensing system was a “Flock of Birds” from
Ascension Technologies, an off-the-shelf inductive
position and orientation sensing system. This
system itself consisted of three separate types of
unit—the signal-processing boxes, which talked
to the PC via a serial connection, the base station,
and the sensing coils. The base station was placed
out of sight under the blue cloth. It was about as Figure 8.10. Flock of Birds diagram.
large and heavy as a brick. It emitted a magnetic
field along three axes that reversed itself at a
certain frequency. The two sensing coils, one for the
display, and one for the stylus were just coils of wire
wrapped in three different axes. By sensing the flux
caused by the field in each of the three directions
for each of the three axes of magnetic field, the
signal processing box is able to reconstruct the
location and orientation of the sensor.
Software
All of the software was written in C++ using
OpenGL for graphics. Software development fell Figure 8.11. The blobby forms were
into three categories. The first software layer spherical nodes connected with Catmull-
Rom splines.
processed and integrated data from the sensors,
buttons and camera. The second layer acted to
calibrate the virtual space to the real space to
establish an appropriate projection for the viewing
window. The third layer was for creating the forms
themselves. I developed a method using spheres
connected with Catmull-Rom splines, which
provided a fast way to model and render complex
organic-looking forms.
8.4 Precedents
52
2002], are purely vision-based. They spot known
patterns in the world which a user prints out ahead
of time. They infer the location and orientation
of the pattern by vision algorithms, and then
composite previously-defined objects into the scene
at the same point. These systems typically act to
annotate prepared scenes with prepared overlays.
They do not easily allow for creation of new forms
or positioning them in arbitrary places in space.
Overlay systems
Figure 8.13. Rekimoto’s “Magnifying Many augmented reality systems are used to
Glass” approach uses a handheld screen display information about the world directly onto
to superimpose information. [Rekimoto,
1995] [http://www.csl.sony.co.jp/ it as a kind of floating wall text [Karahalios, 1998],
person/rekimoto/navi.html] [Feiner, 1997], [Rekimoto, 1995]. Like Installation,
these systems calibrate virtual coordinates to real
spaces, but they are quite different in their focus
and intent. Augmented reality systems call upon
the virtual to annotate the real. Iconic tags or
symbols appear overlaid onto scenes to indicate
for instance, if there is mail in your mailbox. There
is little attention to the forms or space in the
virtual, or their interactions with the real, and as a
consequence the virtual layer is entirely dominated
by the real, appearing as little more than an
Figure 8.14. The Diorama system
[Karahalios, 1998] intelligent heads-up display.
54
the user. They were free to step around it to operate
on it from the side. This kind of readjustment
of viewing and working angle is exactly the kind
of maneuver that we do continuously without
ever thinking about it in the real world, but
which we must master some interface to achieve
in computational design. As Tsang points out,
manipulation of viewpoint in “eye-in-hand” systems
requires essentially no new learning. Furthermore,
in traditional three-dimensional modeling,
operations that change the position of objects
viewed through the screen, implicitly change our
physical position relative to the scene. But since we
know that we have not moved, we must imagine
that the entire virtual world displayed in front
of us has reoriented without the slightest hint of
inertia or other true physical effect. It makes the
interaction feel cheap and unreal, and separates us
from our work.
55
of the richness and intricacy of the real world to
create a convincing virtual experience. The ease
with which Installation aroused a response from
its users indicated that there is a sumptuous
experiential quality to be gained by embedding a
virtual world within a real one.
56
did not endeavor to tie them tightly to each other.
Azuma in his survey of existing augmented reality
applications notes that these discrepancies are
severely limiting for certain applications like
medical imaging [Azuma, 1997].
Feedback
The believability of spatial connectedness was
quite strong. Although the screen did not behave
exactly as it would physically, it was impossible to
say exactly how it was off, and it hardly seemed to
matter since the misalignments were predictable,
consistent, and could be counteracted by physical
feedback. Azuma refers to a phenomenon called
visual capture, in which any contradictory sensory
information tends to be overridden by the visual.
This effect was certainly noticeable in Installation.
Although the physical movement of the screen
may not have exactly matched the screen’s
representation, the visual took precedence, and the
discrepancy went mostly unnoticed.
57
took the gesture being made from in front of the
screen to behind it. Almost no user of the system
even noticed it. An absolute translation became
unnoticeable in the face of tight feedback and good
relative correlation.
Difficulty of depth
The challenge of conveying depth on a two-
dimensional medium is ancient. Installation
Figure 8.23. Georges Braque’s Fruit-
added to that discussion the capability to move dish uses many perceptual cues to give a
the display surface through the scene. But many rich illusion of depth without relying on
linear perspective.
of the traditional problems of conveying depth
remained. J. J. Gibson identified 13 different cues
we use to perceive depth [Gibson, 1979]. Not very
many of them made it intact into Installation.
Stereo vision, a favorite of many augmented-reality
implementations, was gone. In the absence of any
physical referent for the shapes, it was impossible
to use their relative size in the scene as a depth
cue. Almost the only things remaining to use
for depth-cueing were occlusion (of the objects
with themselves only), surface shading (but no
shadows), and relative speed of movement in the
visual field. It was this last that proved the most
58
useful, and the illusion of depth was best when
there were multiple objects in the scene at different
depths and the user was actively moving the
viewing window.
Simplicity
One of Installation’s best innovations was a lack of
any visible onscreen interface elements except for
a cursor. This helped the system to disappear. In
particular there were no graphical elements that
called attention to the plane of the viewscreen as
anything other than a window onto a 3D space. Any
buttons, sliders, or text would have set up a virtual
59
plane that would have been impossible to ignore.
It would have distracted from the sense of pure
transparency that Installation aspired to. Mappings
were clear and reactive enough that the systems
driving them could be forgotten.
60
windows at once looking onto the same evolving
environment. Then it becomes a model for
luxurious collaborative computation. This model
is applicable to any kind of communal form-
making, whether it’s physical form or abstract
information, meaning the ideas could equally
find use in architectural design or large-systems
engineering. The fundamental idea is that once
a work object is placed into space it has a shared
context for simultaneous manipulation. This
facility is demonstrated by Tsang’s system, which
Figure 8.26. Microsoft Bob suggested he explicitly proposed as a prototype for the
the home as a metaphor for informa- collaborative 3D design markup and critique
tion organization. But it took place in a
fictional iconic space. [Tsang, 2002].
61
9. Internaut
62
9.2 Technical Description
63
configuration when released. Each new page was
then processed in the same way as the root node
in the order in which it was added. The resulting
network of nodes connected with springs was
a stretchy gyrating mass that was constantly
attempting to relax into the lowest energy state
consistent with its topology of connections.
64
adding a mapping feature which displayed a map
of the entire site onscreen at all times. I retained
the engine’s capability to run in a networked
mode in which multiple players could explore
environment together, seeing each other, and even
communicating via typed messages.
9.3 Precedents
Figure 9.10. Jared Schiffman’s honey. Simulated springs are even more commonly used
[Shiffman, 2000] in computational design. They lend movements a
65
squishy, organic feel. Benjamin Fry used springs
to organize web spaces in Anemone, which tracks
web traffic as a continually evolving network of
nodes representing web pages [Fry, 2000]. Judith
Donath has used springs to create a self-organizing
visualization of human social networks [Donath,
1995].
A strange feature of the places that users construct Figure 9.13. Apple’s Hotsauce meta-
in these virtual environments is that they mimic content 3D web flythrough plug-in.
[Apple, 1996]
66
structures in the real world. They put “roofs” on
their “houses,” for instance. Why? There isn’t
any rain, or in fact weather of any kind to defend
against. And enclosure represents no protection
from outsiders. It must be a desire for familiarity
that drives people to make designs that take
no advantage of the liberation that they might
experience in these worlds without physical
limitation.
67
even to identify the portal through which one
entered a space.
68
link to another that has no idea of the existence of
the referrer. This network of one-way streets has
the tendency to channel users toward sites that are
commonly linked to [Barabási, 2002; 57]. These
have a higher chance of being useful than the sites
that are seldom referenced. There is also a trail of
bread crumbs that web-surfing leaves that a user
can always use to backtrack via the “Back” button.
No such facility exists in real space, although it
could be simulated by having movement leave a
trace in a virtual environment.
69
intelligibility is not important in systems such
as the web where that structure is not used for
navigation. Web space developed without any need
for an intelligible global structure, and to try to
impose one is likely a fool’s errand.
70
10. Stomping Ground
71
aggressively percussive. The same data is fed to the
graphics system, which produces blobs that grow
upwards from the locations of footsteps. The blobs
are superimposed on a live video image showing the
legs and feet of people on the carpet (whole bodies
of very small people). The video and the forms in
it are warped by a virtual fluid simulation, which is
stirred by stomping and upper-body activity.
10.3 Precedents
Figure 10.3. Kids exploring the carpet.
Prior to my involvement, the carpet had been
exhibited as part of exhibits on musical instruments
and hosted dance performances. As should be the
case in the extension any good work, the past work
served as my foremost precedent. I studied footage
of these events, the sound and code of the music-
making, and the technology behind the operation of
the carpet [Paradiso, 1997].
72
wanted the visual component in the end not to be
separable from the whole experience.
Invisibility
73
11. Hotpants/LittleVision
74
chips, which in turn drive a matrix of 10 X 14 red
LEDs. These LEDs can be set to display at full
brightness, half, or off. The board exposes a set of
programming pins, which are used to connect the
board to a PC for downloading of new movies. The
board stores about 300 frames, depending on how
well they compress, and plays them back at 12 per
second, for a total of 25 seconds of video. After
this period (or shorter if the movie contains fewer
frames), the movie loops. I have recently developed
a second board, a camera board, which can be used
Figure 11.2. The Hotpants circuit lay- to record movies directly to the LittleVision without
out. For a usable version, see Appendix the use of a PC.
C.
75
trick, which was to treat the four arrays as two tall
columns rather than one large array. That way we
Figure 11.4. Annotated images of the
could control each LED while keeping the columns circuit innards.
lit 1/5 of the time rather than 1/10, effectively
doubling the brightness. (This may make more
sense on inspection of the PIC code that drives it.
[Appendix C])
76
Software
There were several different incarnations of
software for Hotpants because it was used in a
number of different contexts. All of the software for
Hotpants had two components, one on a PC and
one on the board. A system by Megan Galbraith
allowed a user to write programs in the Nylon
language and send them to Hotpants. I wrote the
setup that lets a user take movies with a webcam
and send them to the board. The software on the
PC side and the firmware on the PIC is different for
each application. We burned a bootloader onto the
PIC ahead of time to make it easier to download
different programs to the board to change its
functionality.
11.4 Precedents
77
LCD picture frames sold, which are somewhat
similar in spirit to Hotpants, but deliver more
image fidelity than object-relationship. Products
less than Hotpants are the LED array components
themselves, which come in a huge variety of sizes
and configurations but have no built-in control
circuitry to drive them.
78
discussed above, removed the distracting quality of
near-perfection. The viewer could slip in and out
of seeing figure, ground, or even individual pixels.
This slippage was also tied tightly to the distance
at which the object was viewed, which made people
experiment with it, bringing it close to their faces or
holding it as far away as possible. As in Campbell’s
work, scenes that were impossible to understand
would sometimes snap into focus when they started
to move. Interestingly in Installation it was also
motion that brought out the sharpest qualities of
depth. Human visual recognition owes a great deal
to motion [Nakayama, 1985].
79
12. Pointable Computing
80
remote controls resemble the kinds of interface we
would expect to encounter on an appliance itself.
This is not an interaction about communication,
however. It is strictly about control, and it operates
unidirectionally.
81
What I proposed in Pointable Computing was
a solution to this crisis of non-space in wireless
communication.
Technical description
The system consisted of two handheld devices
equipped with laser-diodes and phototransistors for
sending and receiving of signals. I spread the beam
slightly with a lens system to make it eye-safe and
easier to control for distant targets. Each handheld
had a display board (a repurposed Hotpants
display), a single button and a control wheel. I also
made a standalone wall-mounted receiver with
three Hotpants displays. Each of these systems was
driven by a PIC microcontroller.
Word Toss
The proof-of-concept application I designed for
the devices I called Word Toss. Each handheld
showed two words stacked vertically, a transitive
verb on top and a noun on the bottom. In one of the
devices, rolling its wheel changed the verb, and in
the other device, it changed the noun. Each device’s
laser was on by default. When the devices were
aligned, their lasers hit the other’s receiver, and a
pixel in the top right of the receiving device would Figure 12.3. The innards of the hand-
light to indicate that it had acquired a signal. When held. Clockwise from top: laser, send
button, receiver, Hotpants display, bat-
teries, more batteries, and thumbwheel.
82
either device’s button was pressed, its laser was
pulse-modulated to send a message to the other
device. The message in Word Toss was simply the
verb or noun selected with the wheel. The other
device received the message and changed its word
to match the word sent. It was also possible to use
the handhelds to send words to the wall-mounted
device, which displayed them. I was successful in
sending messages from more than 30 feet away.
12.3 Precedents
83
it is invisible, so the user is never quite sure is a
connection is being made or is reliable.
Figure 12.6.
Pointing Devices Organized by Domain of Operation
���������
�� ���������
����� ������
�����
���������
������
Metaphorical devices map spatial gestures and actions to a metaphorical machine space.
Documentary devices recover spatial qualities of the world and report them to the machine.
Literal devices are active operators that report an actual spatial or bodily condition. Literal devices
are differ from metaphorical devices in that they directly connect agent, environment, and machine.
Metaphorical devices are concerned only with the input environments locally relative to themselves.
84
12.4 Use Scenarios
Universal remote
The most obvious use of Pointable Computing
would be to make a universal remote. Pointing
the device at any enabled object would turn the
handheld into a control for that object.
85
the Pointable has over a block is that there is
no need to touch the source. That means that it
would be possible to sit in front of a large bank of
monitors and control and edit to and from each one
without moving. It might even make sense to use a
Pointable interface to interact with several ongoing
processes displayed on the same screen.
Instant Wiring
In this simple application, the Pointable is used
simply to connect together or separate wireless
devices. If, for instance, a user had a set of wireless Figure 12.8. Getting and putting
headphones which could be playing sound from sketch. The pointable sucks up informa-
tion from the computer on the left and
any one of a number of sources, there is no reason spits it out onto the computer on the
they couldn’t simply point at the headphones and right.
Reactive surfaces
Reactive surfaces are building surfaces, exterior Figure 12.10. Instant wiring sketch.
or interior, covered with changeable materials The user connects the computer to
headphones by pointing at it and then
at them.
86
coupled to arrays of pointable sensors. They make
use of new materials that have changeable physical
properties such as LCD panels, electrochromic
glass, OLEDs, or electroluminescents. It would
be possible with a pointable device to write a
temporary message on a desk or wall or define
a transparent aperture in an otherwise shaded
window wall. Such an aperture might follow the
path of the sun during the day.
87
is usable because it offers feedback. As can be
demonstrated by a game of “pin-the-tail-on-
the-donkey” we cannot point very well without
continuing to reference what we are pointing at. A
laser spot is the perfect feedback for pointing—ask a
sniper with a laser scope.
88
Pointable Computing successfully takes
computation away from the screen and into the
space between things. Its use of simple, inexpensive
components, and its surreptitious hijacking of the
human machine as a very fine controller make
it more appealing than many other options like
motion-tracking, inductive position sensing, or
computer vision for establishing simple spatial
relations to a user. It requires no calibration, it
operates robustly under almost any conditions,
and it weighs next to nothing. I expect to see
more systems employing laser-directed spatial
interaction.
89
13. EyeBox
90
our physical world. That means we are going to
have to introduce them to the objects that form the
substance of our lives.
91
on the platform. Over the course of the next few
minutes, the representation of the volume of the
object would get progressively finer until it reached
a resolution of 512 X 512 X 512 voxels. Then it was
filtered to smooth the voxels, giving it a smoother
shape.
13.3 Motivation
92
processing fall loosely into three categories: image-
based [Matusik, 2000], polyhedral [Matusik 2001],
and volume carving [Szeliski, 1993]. All of these
techniques rely on the same basic principle—that a
silhouette relative to a calibrated camera produces
a generalized cone of volume in which the object
must be located. These cones from several cameras
can be intersected to produce a representation
of the volume at which they are all looking. It
takes surprisingly few cameras to get a fairly good
approximation of most common shapes.
Image-based
Image-based techniques are the fastest because
they do not reconstruct three-dimensional form
at all. Instead they synthesize new views from
any angle by selectively sampling from the source
images directly. Since there is no volumetric
representation produced, they are not suitable
for true volumetric reconstruction problems. It is
possible to imagine, however, reformulating many
Figure 13.5. Figure showing how a volumetric problems as image-based problems.
cup’s rim always hides its inside in For instance, volumetric object-matching may
silhouette.
93
be construed as an image search for the best
reconstruction to match a given image of an
unknown object. The challenge would be making it
fast enough to search all possible orientations of all
possible matching objects.
Polyhedral
Polyhedral techniques produce a surface
representation of the object (easily converted
into a volumetric representation if required) by
geometrically intersecting polygonalized versions
of the cones. This is relatively quick, and provides Figure 13.6. Image-based visual hulls
an unaliased representation without the need for from [Matusik, 2000].
Volume carving
This is the simplest technique to implement and
also the slowest. It projects voxels from world space
onto each of the camera views. If a voxel projection
falls fully outside any of the silhouettes, it can be
discarded. This produces an explicit volumetric Figure 13.8. Gumby as volume-carved
representation at the cost of voxel aliasing and lots by a single camera from the top.
94
of computation. I implemented it because I wanted
a volumetric representation for matching purposes
and it was the easiest to produce. Because of its
aliasing it is also somewhat more tolerant of error
in camera calibration than the polyhedral method.
This proved to be a significant advantage in the
turntable driven scanner.
Octree subdivision
Having chosen the volume carving method, I sped
it up by representing the volume as an octree. That
Figure 13.9. An octree node may be is a recursively refined volumetric tree starting
subdivided into eight subnodes. with a root node representing the entire volume
to be scanned. When a projected node was found
to be cut by the silhouette from any camera, it was
divided into eight subnodes. This way whenever
a large node was found to be outside of any of the
projections, it needed never to be subdivided or
otherwise considered again. This sped processing
up dramatically. Another speed advance was to
iteratively refine the octree representation by
one level at a time, running it on each camera at
each level. That way more large octree nodes were
rejected earlier, and did not slow it down. Octree
nodes that were wholly inside each silhouette were
Figure 13.10. An object after smooth-
ing. marked too, so that on each iteration, the only
nodes that had to be processed were nodes that in
the previous level intersected silhouette boundaries
in some camera. This was tantamount to finding
the substantial structures early and then iteratively
refining their surfaces. It also meant that the user
saw the form improving over time and was free to
stop the process whenever it got to a level of detail
they were happy with. I smoothed the surface by
applying a Gaussian filter to the voxel data and then
finding an isocontour.
13.5 Precedents
Figure 13.11. A swept-laser 3D digitizer
from Minolta. There are existing 3D digitizers which work more
accurately than EyeBox. One such family measures
95
parallax in a laser beam that it sweeps over the
surface of an object. These return point clouds
which can then be surfaced. They are, however, two
orders of magnitude more expensive than EyeBox.
96
There are also cultural precedents related to 3D
scanning. Karin Sander took full body scans of 54
people and then mechanically reproduced them
at 1/10th life size. She then painted them from
photographs and displayed them on pedestals.
97
The reconstruction proceeded as detailed in the
octree method outlined above.
Problems
There were some problems with the reconstructed
objects. Many of them had to do with the white
background. Light colored objects did not scan well
at all. Specularities on objects are always white and
tended to be seen as background, drilling holes in
objects. In a future version of the system, I would
use a blue background to make segmentation
simpler. Reflections off the plexiglass were Figure 13.17. Gumby reconstructed.
troublesome. Finally, the box was rather large for The images on the left show the silhou-
etting process.
an effective scanning volume of 6” X 6” X 6”. That
could have been improved with wider angle lenses,
but the wider the field of view, the lower the quality
of the reconstruction. There were also errors of
volume just due to spaces not visible to any camera.
This could have been helped with more cameras.
Version 2
Version 2 was housed in a mini-fridge. I chose a
mini-fridge because it fairly closely matched the
dimensions I determined were optimal, and I
could not resist the feeling of the seal made by a
fridge door. I gutted the fridge and drilled a hole
in the back to run cables out. I decided to orient
it standing up rather than lying down so as not Figure 13.18. Version 2 under con-
to evoke a coffin. Instead it is very clearly a mini- struction.
98
fridge, and its hybridity is part of its strong appeal.
I used a water-jet cutter to cut out a large opening
in the door and mounted an Apple Cinema Display
in it. I salvaged an AC gearhead motor from a old
microwave turntable and mounted it inside the
fridge with a shaft and a plexiglass turntable on
it. I glued three webcams to the interior of the
fridge looking slightly off-center at the turntable. I
turned them off-center to maximize the probability
that they would perceive the edges of objects—
the source of all of my information. I was not
Figure 13.19. The three cameras show concerned that they might not be able to see both
real-time feeds on the display.
edges at once because I rotated every object a full
360°. I disassembled two small fluorescent lights
and mounted them inside the cabinet pointing
directly back onto the curved white back surface.
My hope was that this would completely backlight
the subject and get rid of all the problems with
specularity. In fact it ended up still giving a strong
side light. I mounted a reed switch on the door
hinge to control the platter motor. When the door
closed, the platter spun.
99
I calibrated the cameras by the same procedure as
the first version. Because I had not constructed the
whole system to engineering tolerances, I calibrated
each of the 24 views by hand rather than calibrating
three and performing rotations on them.
Results
All of the changes proved to be advantageous,
and my results were somewhat better with the
new system. The biggest disappointment was
how little it improved. The fantastic advantage of
the technique is that it takes so little information Figure 13.21. A scanned object. (A
to give very good results. After the first several lump of modelling clay that looked a lot
like this.)
cameras, adding more gives diminishing returns.
It may be that 24 views is more than is necessary,
and rotating the object may therefore be as well.
With the current cost of webcams at about $15,
maybe I should just settle for 12 in a stationary
setup. Not rotating has several advantages—easier,
more consistent calibration, no moving parts, faster
operation. The primary advantage, though, to not
rotating the object is the improved magical quality
of producing a transformable 3D reconstruction
from an object that is totally stationary.
100
could be virtually duplicated and placed in other
parts of the space. Or an object that is needed as a
reference could be duplicated and placed virtually
in the room before the actual object is removed. I
look forward to bringing to two together. It should
not prove too difficult.
101
14. Summary Conclusions
14.1 Editing
Certain decisions must always be made in how the
real world will enter into the system and vice versa.
These are essentially questions of editing.
102
pixilated, low-bandwidth representation of a visual
scene. It was just enough to indicate what was
going on. The work of the mind to bring the scene
into focus created an attachment to the interaction.
The understanding was a collaboration between the
object and the observer.
103
In graphical interfaces for all of these projects
combined, I believe I used a total of three buttons
and zero icons. I consider the buttons a mistake.
104
be object of intentional design is an important
one, and my experiments indicate several essential
characteristics of interaction in spatial computing.
105
This demands total consistency in operation and
gratification of expected behavior. These are the
foundations that allow us to plan action based on
intention. This does not preclude surprise as an
element, but too much surprise in the control of a
system is just uncontrolability.
14.3 Shortcuts
Relativity of perception
The relativity of sensory experience is something
to leverage. Since we have no absolute benchmarks
it is often not necessary to calibrate to a hard
external standard, which can be extremely
difficult. This excludes certain applications that
demand calibrated precision, such as surgical
enhancement. But many fields (entertainment,
design, visualization, for instance) remain open to
a system that delivers the experience of real spatial
interaction without being absolutely true.
106
Opacity
Some systems should become transparent—
essentially unnoticeable to their users. Some should
remain solid and visible. There is no hard rule,
contrary to some opinions [Norman, 1998], that say
all successful systems become transparent. Much
depends on the intended focus of user attention. In
many cases the system itself is part of what should
be experienced. The extent to which a system
should assert its presence must be considered and
controlled closely by its designer.
107
14.4 The Future of Spatial Computing
Technologies
Tracking
Tracking objects in space must become more
reliable and affordable before we see it used
commonly. GPS works well outdoors, but it is
useless inside or for precise location. Improvements
will come from either advances in computer vision
108
algorithms or new physical technologies for spatial
sensing.
Scanning
Scanning objects in 3D will become faster, cheaper,
and easier. It is unlikely that 3D scanners will be
popular devices for the home unless there is a
compelling application other than design. Most
people do not own flatbed scanners today.
Printing
3D printing will become tremendously valuable
as the process speeds up and the machines and
materials drop in price. There is no reason that
many objects that are primarily formal cannot be
sold as digital representations and then printed
locally.
Applications
Figure 14.3. The ZapStick. Any information being displayed can be sucked up
into a ZapStick or squirted out onto a display by
109
one (provided the user is authorized to have it).
Meeting notes can be shot out to participants as
they arrive. Notes and files can be shot between
machines during the meeting. Further, participants
can scribble on the projection with their pointers
during the meeting, and that writing will be saved
and incorporated as an annotation layer on the file.
110
15. References
[Arthur, 1993] Arthur, K. W., Booth, K. S., and Ware, C., Evaluating 3D task
performance for fish tank virtual worlds, ACM Transactions
on Information Systems, vol. 11, no. 3, July 1993, pp. 239-265.
[Bachelard, 1964] Bachelard, G., The Poetics of Space, Jolas, M., trans., The
Orion Press, 1964.
[Barabási, 2002] Barabási, A., Linked: The New Science of Networks, Perseus
Publishing, 2002.
[Boys, 1959] Boys, C.V., Soap Bubbles, Their Colors and Forces which Mold
Them. Dover Publications, 1959.
[Brooks, 2001] Brooks, R., The Relationship Between Matter and Life, in
Nature 409, pp. 409-411; 2001.
[Card, 1996] Card, S. K., Robertson G. G., York W., The WebBook and the
Web Forager: An information workspace for the World Wide
Web. Proc CHI ‘96 ACM Conference on Human Factors in
Computing Systems. New York: ACM Press, 1996; pp. 111-116.
[Colby, 1992] Colby, G. and Scholl, L., Transparency and Blur as Selective
Cue for Complex Information. Proceedings of SPIE’92.
111
[Conroy, 2002] Dalton, R. C., Is Spatial Intelligibility Critical to the Design
of Large-scale Virtual Environments? International
Journal of Design Computing, vol. 4, 2002, http://
www.arch.usyd.edu.au/kcdc/journal/vol4/dalton.
[Donath, 1995] Donath, J., Visual Who: Animating the affinities and activities
of an electronic community, ACM Multimedia 95 - Electronic
Proceedings, November 5-9, 1995, San Francisco, California.
[Dourish, 2000] Dourish, P., Edwards, W.K., et. al., Extending Document
Management Systems with User-Specific Active Properties.
ACM Transactions on Information Systems, 2000. 18(2), pp.
140-170.
[Dunne, 2001] Dunne, A. and Raby, F., Design Noir, the Secret Life of
Electronic Objects, August / Birkhäuser, Berlin, 2001.
[Feiner, 1997] Feiner, S., MacIntyre, B., Höllerer, T., and Webster, A., A
Touring Machine: Prototyping 3D Mobile Augmented Reality
Systems for Exploring the Urban Environment. In Proc. ISWC
’97 (Int. Symp. on Wearable Computers), pp. 74–81, 1997.
[Gombrich, 1969] Gombrich, E. H., Art and Illusion, a study in the Psychology
of Pictorial Representation, Princeton University Press,
Princeton, NJ, 1969.
[Ishii, 1997] Ishii, H. and Ullmer, B., Tangible Bits: Towards Seamless
Interfaces between People, Bits and Atoms, in Proc. of
112
Conference on Human Factors in Computing Systems (CHI
‘97), (Atlanta, March 1997), ACM Press, pp. 234-241.
[Kline, 1999] C. Kline and B. Blumberg, The Art and Science of Synthetic
Character Design. Convention of the Society for the Study of
Artificial Intelligence and the Simulation of Behavior (AISB),
Symposium on AI and Creativity in Entertainment and Visual
Art, Proceedings, Edinburgh, Scotland, April, 1999.
[Kuzu , 2002] Kuzu, Y., and Rodehorst, V., Volumetric Modeling Using Shape
From Silhouette, 2002, www.fpk.tu-berlin.de/forschung/
sonder/pub/DT4_kuzu.pdf.
[Loos, 1908] Loos, A., Ornament and Crime, 1908, in Ornament and
Crime: Selected Essays, Mitchell, M. trans., Ariadne Press,
1998.
[Manovich, 1996] Manovich, L., The Aesthetics of Virtual Worlds: Report from
Los Angeles, CTHEORY, www.manovich.net, 1996.
[Matsuoka, 2002] Matsuoka, H., Onozawa, A., Sato, H., Nojima, H., Regeneration
of Real Objects in the Real World, Conference Abstracts and
Applications of SIGGRAPH 2002, p.77,p.243.
[Matusik, 2001] Matusik, W., Buehler, C., and McMillan, L., Polyhedral Visual
Hulls for Real-Time Rendering, in Proc. Twelfth Eurographics
Workshop on Rendering, 2001, pp. 115-125.
[Matusik, 2000] Matusik, W., Buehler, C., Raskar, R., Gortler, S., and McMillan,
L., Image-based Visual Hulls, in Proc. SIGGRAPH, 2000, pp.
369-374.
[Milgram, 1999] Milgram, P., Colquhoun, H., A Taxonomy of Real and Virtual
World Display Integration, in Mixed Reality, (Ohta, Y.,
Tamura, H., eds.), Ohmsa Ltd., Tokyo, 1999.
[Norman, 1998] Norman, D., The Invisible Computer, MIT Press, Cambridge,
MA, 1998.
[Paquette, 2001] Paquette, E., Poulin, P., Drettakis, G., Surface Aging by
Impacts, Proceedings of Graphics Interface 2001 , June 2001.
113
[Paradiso, 1997] Paradiso, J., Abler, C., Hsiao, K. Y., Reynolds, M., The Magic
Carpet: Physical Sensing for Immersive Environments, in Proc.
of the CHI ‘97 Conference on Human Factors in Computing
Systems, Extended Abstracts, ACM Press, NY, pp. 277-278
(1997).
[Paradiso, 1999] Paradiso, J., The Brain Opera Technology: New Instruments
and Gestural Sensors for Musical Interaction and
Performance, Journal of New Music Research, 28(2), 1999, pp.
130-149.
[Paradiso, 2000] Paradiso, J., Hsiao, K., Benbasat, A., Teegarden, Z., Design and
Implementation of Expressive Footwear, IBM Systems Journal,
Volume 39, Nos. 3 & 4, October 2000, pp. 511-529.
[Pausch, 1997] Pausch, R., Proffitt, D., and Williams, G., Quantifying
immersion in virtual reality, SIGGRAPH’97.
[Pessoa, 2003] Pessoa, L., de Weed, P., eds., Filling-in: From Perceptual
Completion to Cortical Reorganization, Oxford University
Press, 2003.
[Piekarski , 2002] Piekarski, W., and Thomas, B. H., Unifying Augmented Reality
and Virtual Reality User Interfaces , Technical report, January
2002, University of South Australia.
[Robertson, 1997] Robertson, G., Czerwinski, M., and van Dantzich, M.,
Immersion in Desktop Virtual Reality, UIST’97.
[Slater, 2002] Slater, M., Presence and the Sixth Sense, in PRESENCE:
Teleoperators and Virtual Environments, MIT Press, 11(4) ,
2002, pp. 435-439.
[Sullivan, 1918] Sullivan L., The Tall Office Building Artistically Considered,
in: Athey I., ed. Kindergarten Chats (revised 1918) and Other
Writings. New York 1947: 202-13.
[Sullivan, 1998] Sullivan, S., and Ponce, J., Automatic Model Construction, Pose
Estimation, and Object Recognition from Photographs Using
Triangular Splines, IEEE Transactions on Pattern Analysis and
114
Machine Intelligence, 20(10):1091-
1096, 1998.
115
[Venturi, 2001] Venturi, R., Robert Venturi’s Disorderly Ode, Metropolis,
Sept. 2001.
[Yarbus, 1967] Yarbus, A. L., Eye Movements and Vision. Plenum Press, New
York, 1967.
[Zhai, 1996] Zhai, S., Buxton, W., and Milgram, P., The partial-occlusion
effect: Utilizing semitransparency in 3D human-computer
interaction, in ACM Transactions on Computer-Human
Interaction, 3(3), 254-284.
116
Appendix A:
Other Experiments
The six projects featured in the body of the thesis
are those that best describe and comment on spatial
computing. In the time of my thesis work, however,
I completed a number of other projects with close
ties to my core ideas. I describe some of them here.
Tear Me
Weaver
117
a few simple geometrical rules. The shapes depend
both on the description of the weave pattern and
the topology of the surface on which the weave is
applied.
Active Statics
118
limit to the number of times any designer would
modify a design and re-run an analysis. Only
with the analysis baked directly into the process
of design can the number of iterations become
essentially infinite.
Moment
Figure A.4. The visual data-flow lan- Moment is available for download at
guage Moment. acg.media.mit.edu/people/simong/moment/.
High Definition
119
Appendix B:
SBalls Code
SBalls are useful for making organic-
looking blobby tube shapes like the ones
on the right. They are implemented in
C++ and require OpenGL and GLUT.
SBalls.h
#ifndef _SBALLS_H_
#define _SBALLS_H_
#define BALL_SLICES 30
#define FATNESS_MULTIPLIER 1
#define BALL_STACKS 10
#define CAP_STACKS 20
// Internal
SBallNode *next;
SBallNode *previous;
int rotOffset; // Used to control twisting of outside surface
};
class SBalls {
public:
// Public properties
int displayMode; // How to draw: BALLS_AND_WIRES, SURFACES, BALLS_AND_SURFACES, or WIRES
float color[4]; // Base color, RBGA
float offset[3]; // Offset of blob
bool useTexture; // Texture-map onto blob or not
// Construct/desctruct
SBalls();
~SBalls();
// Add nodes
void appendNode(float pos[3], float radius);
void appendNode(float posX, float posY, float posZ, float radius);
void appendNode(float posX, float posY, float posZ, float radius, float dX, float dY, float dZ, float dR);
void getExtents(float *xMin, float *xMax, float *yMin, float *yMax, float *zMin, float *zMax);
120
// Updates
void update(); // Update node positions and sizes and recalculate every surface point (slow)
void silentUpdate(); // Just update node positions and sizes (fast)
void calculate(); // Recalculate every surface point (slow)
int nNodes;
private:
// Utility functions
float distSq(float vec1[3], float vec2[3]);
void vecCross(float vec1[3], float vec2[3], float result[3]);
void vecCopy(float in[3], float out[3]);
void vecMinus(float a[3], float b[3]);
void vecPlus(float a[3], float b[3]);
void vecTimes(float a[3], float b);
void vecAverage(float a[3], float b[3]);
void vecAverage(float fromA[3], float toA[3], float fromB[3], float toB[3], float average[3]);
float vecMag(float vec[3]);
void vecNormalize(float vec[3]);
void vecRotate(float vec[3],double theta, float axis[3]);
void catmullromPoint(int upToNode, int slice, float t, float curvePoint[3]);
float catmullromBasis(int i, float t);
void fillQuadStructure();
void fillVertexData();
void makeNormals();
float tempVec[3];
float averageVec[3];
float averageVecOrigin[3];
float tempVec2[3];
float tempVec3[3];
float circleAxis[3];
float tempVec4[3];
float tempVec5[3];
float inFromPrevious[3];
float inFromNext[3];
};
#endif
121
SBalls.cpp
/*----------------------------------------------------------------*/
/* SBalls forms a texture-mapped blobby surface as a series of
/* spheres of different radius located along a curve and connected by
/* Catmull-Rom splines.
/*
/* Documentation in header.
/*
/* 10/07/01 Simon Greenwold
/* Modified 5/17/03
/*----------------------------------------------------------------*/
#include “SBalls.h”
#include <GL/gl.h>
#include <GL/glut.h>
#include <float.h>
#include <math.h>
#ifndef MIN
#define MIN(x,y) (((x) < (y)) ? (x) : (y))
#endif
#ifndef MAX
#define MAX(x,y) (((x) > (y)) ? (x) : (y))
#endif
SBalls::SBalls() {
startNode = NULL;
endNode = NULL;
nNodes = 0;
displayMode = BALLS_AND_WIRES;
color[0] = 0.0;
color[1] = 1.0;
color[2] = 0.0;
color[3] = 1.0;
offset[0] = 0.0;
offset[1] = 0.0;
offset[2] = 0.0;
useTexture = FALSE;
}
SBalls::~SBalls() {
SBallNode *cur = startNode;
SBallNode *next;
while (cur != NULL) {
next = cur->next;
delete(cur);
cur = next;
}
if (nNodes > 1) {
delete nodeVertices;
delete quads;
delete normals;
delete fullVertices;
delete texCoords;
}
}
void SBalls::getExtents(float *xMin, float *xMax, float *yMin, float *yMax, float *zMin, float *zMax) {
*xMin = FLT_MAX;
*xMax = FLT_MIN;
*yMin = FLT_MAX;
*yMax = FLT_MIN;
*zMin = FLT_MAX;
*zMax = FLT_MIN;
float x, y, z, r;
x = nodePtr->pos[0];
if (x - r < *xMin)
*xMin = x - r;
if (x + r > *xMax)
*xMax = x + r;
y = nodePtr->pos[1];
if (y - r < *yMin)
*yMin = y - r;
if (y + r > *yMax)
122
*yMax = y + r;
z = nodePtr->pos[2];
if (z - r < *zMin)
*zMin = z - r;
if (z + r > *zMax)
*zMax = z + r;
}
}
void SBalls::appendNode(float posX, float posY, float posZ, float radius, float dX, float dY, float dZ, float dR) {
nNodes++;
SBallNode *newNode = new SBallNode;
newNode->pos[0] = posX;
newNode->pos[1] = posY;
newNode->pos[2] = posZ;
newNode->radius = radius;
newNode->rotOffset = 0;
newNode->dPos[0] = dX;
newNode->dPos[1] = dY;
newNode->dPos[2] = dZ;
newNode->dRadius = dR;
if (!startNode)
startNode = newNode;
newNode->next = NULL;
newNode->previous = endNode;
if (endNode)
endNode->next = newNode;
endNode = newNode;
if (nNodes > 1) {
delete nodeVertices;
delete quads;
delete normals;
delete fullVertices;
delete texCoords;
}
nodeVertices = new float[BALL_SLICES * nNodes * 3];
quads = new GLuint [BALL_SLICES * TOTAL_STACKS * 2];
fullVertices = new float [BALL_SLICES * TOTAL_STACKS * 3];
normals = new float [BALL_SLICES * TOTAL_STACKS * 3];
texCoords = new float [BALL_SLICES * TOTAL_STACKS * 2];
fillQuadStructure();
calculate();
}
void SBalls::calculate() {
// Draw average vectors
vecCopy(circleAxis, tempVec2);
tempVec2[1] += 30;
tempVec2[2] += circleAxis[2] + 40;
vecCopy(circleAxis, tempVec2);
tempVec2[1] += 30;
tempVec2[2] += circleAxis[2] + 40;
123
vecTimes(averageVecOrigin, FATNESS_MULTIPLIER * cur->radius / vecMag(averageVecOrigin));
}
else { // a node in the middle
vecCopy(cur->pos, inFromPrevious);
vecCopy(cur->next->pos, inFromNext);
vecMinus(inFromPrevious, cur->previous->pos);
vecMinus(inFromNext, cur->pos);
// Get positions
float tempPts[BALL_SLICES][3];
rotOffset += cur->rotOffset;
for (int slice = 0; slice < BALL_SLICES; slice++ ) {
vecRotate(averageVecOrigin, rotAngle, circleAxis);
vecCopy(averageVecOrigin, tempVec5);
vecPlus(tempVec5, cur->pos);
vecCopy(tempVec5, tempPts[slice]);
}
cur = cur->next;
numNode++;
}
if (nNodes > 1) {
fillVertexData();
makeNormals();
}
}
void SBalls::fillQuadStructure() {
int nextSlice;
GLuint* index;
index += 2;
}
}
}
void SBalls::fillVertexData() {
float t = 0.0f;
float* index = fullVertices;
float curvePoint[3];
float stackInc = 1.0 / BALL_STACKS;
for (int slice = 0; slice < BALL_SLICES; slice++) {
if (nNodes > 1) {
for (int capStack = 0; capStack < CAP_STACKS; capStack++) {
124
tempVec4[0] = NODE_VERTEX(slice, 0)[0] - startNode->pos[0];
tempVec4[1] = NODE_VERTEX(slice, 0)[1] - startNode->pos[1];
tempVec4[2] = NODE_VERTEX(slice, 0)[2] - startNode->pos[2];
t = 0.0f;
for (int stack = 0; stack < BALL_STACKS; stack++) {
catmullromPoint(node, slice, t, curvePoint);
VERTEX(slice, ((node - 1) * BALL_STACKS) + stack + CAP_STACKS)[0] = curvePoint[0];
VERTEX(slice, ((node - 1) * BALL_STACKS) + stack + CAP_STACKS)[1] = curvePoint[1];
VERTEX(slice, ((node - 1) * BALL_STACKS) + stack + CAP_STACKS)[2] = curvePoint[2];
if (nNodes > 1) {
int i = 0;
for (int capStack = (TOTAL_STACKS - 1) - CAP_STACKS; capStack < TOTAL_STACKS; capStack++) {
tempVec4[0] = NODE_VERTEX(slice, (nNodes - 1))[0] - endNode->pos[0];
tempVec4[1] = NODE_VERTEX(slice, (nNodes - 1))[1] - endNode->pos[1];
tempVec4[2] = NODE_VERTEX(slice, (nNodes - 1))[2] - endNode->pos[2];
void SBalls::makeNormals() {
int nextSlice;
float around[3];
float down[3];
void SBalls::silentUpdate() {
for (SBallNode* node = startNode; node; node = node->next) {
vecPlus(node->pos, node->dPos);
node->radius += node->dRadius;
if (node->radius <= 0.0)
node->radius = .05;
}
}
void SBalls::update() {
silentUpdate();
calculate();
125
}
void SBalls::draw() {
SBallNode *cur = startNode;
glPushMatrix();
glTranslatef(offset[0], offset[1], offset[2]);
glLineWidth(1.2);
glDisable(GL_TEXTURE_2D);
// Draw balls
if (displayMode == BALLS_AND_WIRES || displayMode == BALLS_AND_SURFACES) {
glColor4f(1.0, 0.0, 0.0, 0.5);
cur = startNode;
while (cur) {
glPushMatrix();
cur = cur->next;
glPopMatrix();
}
}
if (nNodes <= 1) {
glPopMatrix();
return;
}
// Draw wires
// Draw surfaces
if (displayMode == BALLS_AND_SURFACES || displayMode == SURFACES) {
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, fullVertices);
glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, 0, normals);
if (useTexture) {
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, texCoords);
glEnable(GL_TEXTURE_2D);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
}
glDisable(GL_TEXTURE_2D);
}
glPopMatrix();
/*float basis[4];
for (int j = -2; j<=1; j++){
basis[j + 2] = catmullromBasis(j,t);
}
126
for (int i = 0; i < 3; i++) {
curvePoint[i] = basis[0] * previousIfExists(previousIfExists(upToNode))->circlePoints[slice][i] +
basis[1] * previousIfExists(upToNode)->circlePoints[slice][i] +
basis[2] * upToNode->circlePoints[slice][i] +
basis[3] * nextIfExists(upToNode)->circlePoints[slice][i];
}*/
float basis;
int index;
curvePoint[0] = 0.0f;
curvePoint[1] = 0.0f;
curvePoint[2] = 0.0f;
// if (slice == 2)
//printf(“Retrieving, slice, index, [0]: %i, %i, %f\n”, slice, index, NODE_VERTEX(slice,index)[0]);
//printf(“In Catmull-rom: %f, %i, %f\n”, basis, index, point[0]);
//printf(“ Still in Catmull-rom: %i, %i, %i\n”, slice, nNodes, index);
127
a[0] = a[0] * b;
a[1] = a[1] * b;
a[2] = a[2] * b;
}
void SBalls::vecAverage(float fromA[3], float toA[3], float fromB[3], float toB[3], float average[3]) {
vecCopy(toA, average);
vecMinus(average, fromA);
vecCopy(toB, tempVec);
vecMinus(tempVec, fromB);
vecAverage(average, tempVec);
}
/*
Rotate a point p by angle theta around an arbitrary axis r
Return the rotated point.
Positive angles are anticlockwise looking down the axis
towards the origin.
*/
void SBalls::vecRotate(float vec[3],double theta, float axis[3])
{
float q[3] = {0.0,0.0,0.0};
double costheta, sintheta;
vecNormalize(axis);
costheta = cos(theta * M_PI / 180.0);
sintheta = sin(theta * M_PI / 180.0);
vec[0] = q[0];
vec[1] = q[1];
vec[2] = q[2];
}
128
Appendix C:
Hotpants Technical Documents
These documents describe the construction and
operation of the Hotpants circuit. All of these
documents and additional information is available
at http://acg.media.mit.edu/people/simong/
hotpants/tech.
Component List
129
LittleVision firmware
This listing is the code that is burned into the
microcontroller onboard the Hotpants to enable it
to play movies. The movie data is loaded later with
a bootloader (optional) starting at address 0x0396.
Movie data is encoded with a change-marking
compression. Assume the following states:
OFF = 0
HALF = 1
FULL = 2
Board front (actual size) We start each frame in state OFF. We advance
C:\data\NYLON\HotPants6.pcb (Top layer)
from pixel to pixel, starting from the top left, and
proceeding across each row of 14 down the display.
We maintain a current global state. As we traverse
the LEDs, we change the state of each LED to the
global state. For each new LED, we read one bit
of data. If it is a zero, we keep the current global
state the same and simply set this LED to that. If it
is a one, we look at the next bit. If that bit is zero,
we add one to the current state (wrapping around
to 0 after 2). If that bit is one, we add two to the
global state. There are 14 bits per word in the PIC
memory.
Board back (actual size) This code compiles using the PICC compiler from
CCS [http://www.ccsinfo.com].
C:\data\NYLON\HotPants6.pcb (Bottom layer)
#case
#include <16F876.H>
//#device *=16
// USE BOOTLOADER
#ORG 0x1F00,0x1FFF //for the 8k 16F876/7
void loader() { }
// DATA RESERVE
#ORG DATA_START,0x07FF
void data0() {}
#ORG 0x800,0x0FFF
void data1() {}
Board silkscreen (actual size) #ORG 0x1000,0x17FF
C:\data\NYLON\HotPants6.pcb (Silkscreen)
130
void data2() {} buf1[x] |= (1L<<(long)y);
#ORG 0x1800,0x1EFF }
void data3() {} }
// Tell compiler clock is 20MHz. This is required for delay_ms() void getMovieWord() {
// and for all serial I/O (such as printf(...). These functions
// use software delay loops, so the compiler needs to know the movieWordLow = make8(movieWordPtr, 0);
// processor speed. movieWordHigh = make8(movieWordPtr, 1);
//
#use DELAY(clock=20000000) #ASM
movf movieWordLow, W
// Hardware definitions movwf EEADR
#define OE PIN_C1 movf movieWordHigh, W
#define DS PIN_C0 movwf EEADRH
#define CK PIN_C2 bsf EECON1, EEPGD
bsf EECON1, RD
#define C4 PIN_B7 nop
#define C3 PIN_B6 nop
#define C2 PIN_B3 movf EEDATA, W
#define C1 PIN_B4 movwf movieDataLow
#define C0 PIN_B5 movf EEDATH, W
movwf movieDataHigh
// Hard parameters #ENDASM
#define W 10
#define H 14 curMovieData = make16(movieDataHigh, movieDataLow);
}
#define SIG_DELAY 4 // Anything lower doesn't seem to work
#define REFRESH_PERIOD 7167 // Empirical. You can mess with it. void initMovie() {
nowState = 0;
curFrame = 0;
// Colors movieBitPtr = 0;
#define OFF 0 movieWordPtr = MOVIE_START;
#define HALF 1 getMovieWord();
#define ON 2 }
131
delay_us(SIG_DELAY); output_low(DS);
output_high(CK); else
delay_us(SIG_DELAY); output_high(DS);
} delay_us(SIG_DELAY);
clockSR();
mask <<= 1;
}
clockSR();
// BOTTOM RIGHT
mask = 0b0000000000000001;
for (i = 0; i < 7; i++) {
if ((buf[frameCol + 5] & mask) != 0) // Light
this row
132