Behind the hype though serious work and interesting things are going on. VR does offer a significant step forward in our way of interacting with computers. The wonder elements aren't really due to new technology though - even at its best its just fast 3D graphics plus movement tracking - the difference and novelty is the paradigm shift at the human end; way's of using human perceptual skills that we haven't been able to engage before in computer interfaces.
You couldn't learn to juggle or ride a bicycle from a screen/keyboard interface, nor can you really get a good feeling for what the inside of a proposed building will really be like - you can look at 3D models on a screen but thats little better than seeing photo's, and its certainly whole orders of magnitude different to being there. VR peripherals of sufficient quality to work well aren't here yet, but they will be, and the potential is clear. In the mean time there are a lot of problems to be addressed.
One thing that will happen medium-term is that we'll move away from the hand coded one-off demonstrations towards full-scale VR systems. These will have many applications running together in the world, and multiple worlds that you can move between, each supporting different kinds of task. The whole thing will need to be dynamic with applications, worlds and users dynamically coming into being and being destroyed, in much the same way that applications and users come and go on a workstation. That means we need something like an operating system to provide the necessary facilities to the application/world builders.
There are several areas that have been identified where final year projects could sensibly contribute to this effort, and these correspond to the project descriptions below. The most recent version of this page, and any updates that get made to project information, can be found at http://socrates.cs.man.ac.uk/~deva/projects.html
REFERENCES:
There are quite a few papers that have been written about work in the group, and a number of final year projects, both past and current that provide useful background. For work in the VR systems area projects, the following are the most relevant.
CATEGORY: Virtual Reality SH or JH: SH Project Supervisor:ajw Grading: F
You should first read the Introduction to Projects in VR Architecture above
Deva allows worlds, complete with laws (such as gravitation and the associated mass attribute) to be dynamically created. Worlds with similar laws can be derived from them, resulting in a class hierarchy of worlds. These worlds are populated with objects that may have behaviours, and be associated with applications. Movement of objects between worlds with different laws is supported sensibly. In this way applications can find a suitable home, or create one, quite straightforwardly.
It all needs to be very dynamic as we don't want to have to stop the whole system and recompile it in order to add a new object/user/world/law/application etc (like smalltalk, but a VR system can't afford the kind of performance penalty that smalltalk's implementation imposes). That being so, the universe can become a very confusing place: where did the calculator get its idea of gravity from? which laws operate in the current world - where did they come from? what objects exist here today? which world is most appropriate for my cad application? can I take my micrometer with me to relativistic world? - where is relativistic world? how do I get there?.
In addition to the world management requirements, this tool should really make it easier to interact with a running deva system, for example to query it about the number of processors it's using, which user is connected to which body, in which world, at which workstation etc. There's lots that could be done here too. To take on this project you will need to be good at picking up new things, working with complex ideas and producing a pretty solid implementation. There's plenty of scope for producing something clever here.
EQUIPMENT:
CATEGORY: Virtual Reality SH or JH: SH Supervisor:ajw Grading: C
You should first read the Introduction to Projects in VR Architecture above
Deva runs across multiple processors and has some clever ways of handling the whereabouts of things so that it is transparent to the applications programmer/world architect, yet incurs very little performance overhead.
Though we can ship objects around the processors transparently, a current debate is how best to handle the distribution of "virtual space" between the machines; i.e. who knows what is where in the virtual worlds. This is especially important when we want to be informed when something hits something else. A naive solution could easily destroy performance, so it's important to do it efficiently with minimum to-ing and fro-ing of messages between machines.
There are ideas for how this would be best achieved, and a project this year by Richard Mayer has looked at some methods of doing collision detection. The next step is to take this further and produce a distributed collision detection mechanism for Deva.
The algorithms and modeling of distribution can be developed quite independently of Deva, which makes it easier for a project student to work on them. By the end of the project though they would have to be integrated with the working Deva system.
REFERENCES:
CATEGORY: Virtual Reality SH or JH: SH Supervisor:ajw Grading: C
You should first read the Introduction to Projects in VR Architecture above
It is quite clear that audio plays an important part in the user's sense of presence in a virtual world. We are surrounded by sound most of the time in our real world, and although most virtual reality work has concentrated on producing graphical representations of objects, various experiments have recently shown that we really need audio cues too if we are to feel 'at home'.
Deva currently has no support for sound at all. Although the idea of supporting sound is (rather neatly, actually) supported by Deva's general purpose environment structure, there has been no work done yet on integrating sound into the system.
The low-level driving of sound devices has been achieved with existing projects, and there are sound-related projects under the MAVERIK system, that Deva sits above. So there is plenty of scope for doing interesting things with sound at almost any level; how do users talk to each other? Should they face each other, or just be close to one another? How about inter-world communication? A virtual mobile phone? Part of this project then is to look at appropriate ways of handling the audio attributes of objects at the Deva level, and to provide useful techniques for audio interaction in Deva. It would be useful to construct an appropriate virtual world that helps to demonstrate the audio properties in action.
EQUIPMENT:
CATEGORY: Virtual Reality SH or JH: SH Project: Supervisor:ajw Grading: UF
You should first read the Introduction to Projects in VR Architecture above
Avatar is the Sanskrit (ancient Indian) word for the representation of an
angel in our real world. It's nowadays used to describe the body
representation of a user in a virtual world. Incidentally, the word Deva
is also Sanskrit, and means something like 'angel' (even more
incidentally, Avatar is also the name of a very good X-files
episode).
Deva makes no assumptions about what an avatar should look like. Currently we have little lego(TM)-like men and cameras representing users in deva environments. This is ok to an extent, but there's much to do in this area.
EQUIPMENT:
CATEGORY: Virtual Reality SH or JH: SH Project: Supervisor:ajw Grading: UF
You should first read the Introduction to Projects in VR Architecture above, and also the Deva Touchstone project above.
One of the many ideas behind the design of deva is that it will provide a ongoing environment for building and interacting with virtual worlds; that is you shouldn't have to reboot the system and throw all the users off every time you want to make a change to the universe (read Vurt by Jeff Noon -- apparently 'jerking out' of virtual reality is a nasty experience).
The Touchstone project is to design something that effectively forms the
operator's console to a running deva system. Ideally however, some of the
functions available at this console, such as world design and management,
should be available within the virtual world itself (and in fact, some may be
much better suited to this 3d environment).
The project can range from constructing a number of different worlds, with different properties, (an escher staircase world as in the picture opposite, would be one nice example) and a higher level world that demonstrates ideas for how to navigate around everything, to a general 3D world in which all environments in the Deva system, and their associated laws and objects can be navigated and manipulated.
EQUIPMENT:
CATEGORY: Virtual Reality SH or JH: SH Project: Supervisor:ajw Grading: F
You should first read the Introduction to Projects in VR Architecture. VRML2 is fast becoming the defacto standard for describing virtual worlds. Based (not surprisingly) on VRML1, which was a pure geometry description language, VRML2 makes some attempt at describing the dynamics of virtual environments, and allows web browsers equipped with the appropriate plugins to view and interact with simple 3D worlds and their inhabitants on the internet.
Our VR system, Deva, really needs some way of parsing VRML2 world descriptions. Extracting the geometry information from such files should be a fairly simple task, however converting the relatively primitive behavioural information into something that Deva can make use of requires a bit more imagination and thought.
This project will involve you understanding a little about the Deva system, as well as our new VR kernel MAVERIK.
CATEGORY: Virtual Reality SH or JH: SH Project: Supervisor:ajw Grading: F
You should first read the Introduction to Projects in VR Architecture above. The Deva system is based on a design philosophy and language described in Deva: Beyond the metaphysics of virtual reality by Steve Pettifer.
Although a prototype compiler was built during that research, it is far from being a fully working model and there is much work to do on it if it is to be succesfully integrated with the rest of the Deva system.
The language is object orientated, and resembles SmallTalk80 in many ways. Taking on this project could involve many things, ranging from implementing a 'translator' for the existing language into C++ which can be executed by the Deva operating system to redesigning the language en toto if you find better ways of describing virtual environments.
To take on this language you should have some experience of using compiler tools such as lex and yacc, and should preferably know something about object orientated programming too. A knowledege of C++ would be helpful but not essential.
CATEGORY: simultation SH or JH: JH or SH Project: Supervisor:ajw Grading: F
There are quite a lot of intersting things associated with yacht navigation - tides, winds, leeway, drift, compass deviation and magnetic correction, points of sail, and so forth, and it takes quite a bit of practice to become confident in navigation. It would be very useful to make a tool that lets you practice these things, without actually getting wet. For example, you could make a 2D map, with a simulated yacht on it. Use some real tidal tables etc to simulate the real environment, and to let people navigate it around. There are commercial products that let you practice yacht navigation, but it's always nicer to write your own - then you have a lot more control over how it works.
To write such a thing you need some sort of graphics package. Tools such as TCL/TK look quite promissing for this as they give you quite high level access to graphics features.
Equipment:
Adrian's home page