News
It's all action in WiiR3D's elaboration phase. We have been working towards creating an architectural prototype and extending on Johnny Lee's target room to build a prototype of our Menu room.
As you can see, we've had a go at building some basic 3D models and the perspective control still needs some work, but we're definitely making progress.
We have also received, from the very kind people at OpenKMQ, a new headset and Wiimote holder. It is very lightweight (PET plastic), designed with head tracking applications in mind, and definitely an excellent option for anyone building their own IR LED headset. We are particularly fond of their Wiimote holder, which mounts easily on a flatscreen monitor. This position for the Wiimote is ideal for when users are playing a game while sitting at the computer.
We still are looking into options for a way to mount the Wiimote when the user is playing is a standing position - a kind of retort stand has been suggested, as well as something based on a camera tripod.
In other news, our official website is now under construction, as you may have noticed. You can visit via the navigation bar at the top of our blog, or access it directly. We will be working to have the site fully functional within the next few weeks.
From the WiiR3D team Jessica Lloyd
Hello all! My work lately has been quite engaging - I've enjoyed trying my hand at 3D modelling as well as webpage design.
No-one in the team has worked in 3D modelling before, so giving that a try was quite a learning experience. I'm still in my early stages, but I did build the objects that you saw in the Menu room, and have been experimenting with some more organic-looking objects.
It's also been my pleasure to put together our official website. Google's been such a good host for our project thus far, it seemed natural to utilise GooglePages. I haven't designed a web page before, but Google's simple WYSIWYG editor helped me build (what I'd like to believe is) a professional site to promote the WiiR3D product. Adam Parkes
Hi Everyone,
Things that I’ve been doing over the last month include:
To build the initial 3D models I used Sketchup. Sketchup is a program that makes developing 3D models extremely easy. There are some problems with Sketchup: it's buggy and it can’t directly save to FBX format which is what we required. There was a simple way around this which involved exporting the model to a format, renaming the file as a zip and running a converter package over a particular file in the zip. Aside for the above annoyances I did really like Sketchup and I would recommend it to anyone that knows nothing about modeling.
My goal was to place the models I created in the environment, this involved learning about the 3D pipeline. I followed tutorials such as http://msdn.microsoft.com/en-us/library/bb197293.aspx. The process was not too tricky, although it was time-consuming. I made a framework for the models called an entity that reduces most of the repetitive actions that have to be preformed on models to get them to display.
I helped develop the initial structure of the server. This involved deciding on communication protocols, system structure and the division of tasks between the server’s components. I was also involved in the initial testing of the server generating data follow and displaying pseudo points.
This interface was one that I developed and will continue to expand. This interface will assist any developer that wishes to use head tracking hardware other than the Wiimote. To use other hardware developers will have to implement this interface on their driver class. The server has a constructor that takes an instance of a class that implements the IHeadTrackingDriver.
I developed the WiiHeadTrackingDriver. This class is responsible for connecting to the Wiimote and reciving data for the IR coordinates.
I developed this class as a method to test the connection of the server and client. I wanted to be able to test if we could pass coordinates through to the client and at what speeds. This class will be used over and over when testing the server. In fact I will extend this class in the future to create an ErroringHeadTrackingSimulatorDriver. The Erroring simulator will be very helpful when testing the robustness of the server.
Currently I’m working on intergrating the wiimotelib into our program so that we can use it as a secondary input device for the games. The biggest problem that I’m currently having with that is that the nunchuk will not connect to the wiimote automatically.
In the future I will: James Leskovar
Progress report [5/4 – 17/5]:
Tasks I was responsible for over the past month-and-a-half include:
• Spiking XNA
The goal for this task was to play around with C# and the XNA framework, in order to determine its feasibility for the games we’ll be building, as well as to establish a baseline architecture if it does prove feasible. A basic "cube grid room," was constructed, which utilizes the same perspective projection manipulation performed in Johnny Lee’s DesktopVR application. Issues regarding the correctness of the perspective projection arose during development (see above.) Additionally, it was decided that whilst XNA does provide a suitable abstraction over the graphics device and 3D rendering, it may be more appropriate to use an engine which would allows us to quickly develop, test and modify some sort of 3D environment. To this end, it was decided that the Panda3D game engine should be used. Panda3D is written in C++, though can be fully utilized from within the Python scripting language.
• Head-tracking gear construction
Following the advice of Christian Muise, the 9V batteries from the prototype head-gear were replaced with 3V (2025) watch batteries, in order to achieve a smaller form factor. Currently, the head-tracking gear consists of three small infrared LED circuits attached to a pair of safety glasses. Additionally, a shipment of TSAL 6200, 6400 and 7400 infrared LEDs have just arrived (thanks Jess!), which I intend to experiment with. The TSAL line of infrared LEDs are recommended by Johnny Lee, and so it would be interesting to see what differences (viewing angle and range) they make when compared with the stock Dick Smith Electronics infrared LEDs.
Also worth mentioning is the equipment received from Pixel Partner, in particular, the reflector-based glasses and the Wiimote monitor stand. We found that the reflector-based glasses were too flimsy to wear comfortably, due to the type of plastic (PET-G) used in its construction. However, we found that the Wiimote monitor stand proved to be an ideal solution for the placement of the Wiimote.
• Head-pose tracking algorithms
Potential head-pose tracking algorithms aimed for three-point tracking were investigated. Two worth mentioning are “Simple, Robust and Accurate Head-Pose Tracking Using a Single Camera” and POSIT. The former paper describes a method of pose-tracking via root approximation of parametric equations representing the points in 3D space. The latter is used in the FreeTrack project. Fellow WiiR3D member Buu is working on the head-tracking computation, see below for more information.
• Head-Tracking Server
The WiiR3D system is comprised of a server-client type architecture. The server, written in C#, does the majority of the grunt-work, and is responsible for performing the gesture recognition, head-pose and distance calculations and broadcasting this over a datagram (UDP) socket. This allows developers to easily utilise our information from any language (compiled or otherwise), as long as they have support for sockets. Currently we have a functioning iterative server written in C# which is able to communicate with a listening client over UDP. For simplicity, a fixed-length protocol has been designed for all communications between server and client.
• Standard documentation (protocol description and basic operation for server, construction of the head-gear, head-tracking computation, configuration and usage)
Tasks to do in the immediate future:
• Spike the Panda3D engine.
• Investigate issues with perspective manipulation.
• Look into head gesture recognition
• Implement link-status in the server (rudimentary syn/ack over UDP)
• Multithreaded server.
• Improve head-tracking gear (parallel circuit, use TSAL LEDs) VinhBuu To
Hello all,
Yeah, I don't have much to talk about since the other guys have talked about all the stuff we've done. During the elaboration phase, I was working with the mathematics for head tracking calculation and am still working on that. I also have enjoyed modelling for project.
My goal in the immediate future is to finish all the maths work and translate it into code so that we can use it for a real head tracking application.
Sunday, May 4, 2008
Elaboration Excitement
Labels:
api,
application,
computer,
game,
head tracking,
LED,
nintendo,
program,
software development,
wii
Subscribe to:
Posts (Atom)