Hi, my name is Daniel. This is a blog of my 4th year software engineering project at The University of Sydney (ELEC4707).

The title of my project is Painting with the Wii. In short, this project involves integrating DirectX into a program designed for painting with a Wii remote (or Wiimote).

I will be continually updating this blog throughout the course of the project. Please check back reguarly for updates!

Friday, August 29, 2008

Partial Treatise

This week I have been working on my partial treatise, which is due on the 5th of September. The partial treatise consists of draft introduction and background chapters, and some content for the results and conclusions chapters (as much as is possible at this stage of the project).

I have managed to partially complete the first 2 chapters so far, and my aim is to have done this, and outlined my current initial prototype in the results section of the treatise by the 5th of september.

The introduction chapter (1) consists of a discussion of the project, the requirements and scope limitations, and a brief description of the contents of the thesis.

The background chapter (2) consists of a history of input devices (mouse, keyboard, graphics tablet etc...), an outline of current research into the Wiimote, and a discussion of the existing paint prototype, WiiPaint.

I have given my project a name, which is WiiPaintPlus. From now on in this blog, I will use this to refer to my work.

Saturday, August 23, 2008

WiiPaint Initial Prototype

So I have been making some good progress with an initial prototype, and have already produced much of the functionality that is present in the original program, in my new DirectX based program.

So far I have done the following:
  • Created a better mouse movement algorithm, so that the Wiimote can control the mouse cursor all the way around the screen (if the user is far enough away from the sensor bar).

  • Implemeted draw methods for a number of shapes in DirectX (Rectangle, Circle, and Spray Paint).

  • Made a button that clears the drawing panel.

  • Added a custom hand cursor (similar to the Wii menu cursor) that appears when the user is over the drawing panel.

  • Added several basic colours that can be selected to paint with.
So by controlling the mouse with the Wii, and selecing a shape and colour, the user can draw on the screen (by pressing the A button on the Wiimote).

Here is a video of this program in action:


Since the partial treatise is due in 2 weeks, I will be putting most of my effort into getting that done from now.

Sunday, August 17, 2008

Detailed Update


Over the last week, I have made some good progress on the project.
I have done more testing of the existing prototype created by a previous student, and have come to realise that I was using the system incorrectly in previous tests. The existing prototype does make use of the Wii sensor bar to pick up movement, and the mouse cursor can then be controlled by the Wiimote. This eliminated a number of issues that I had documented in the project plan:

  • There is a visible cursor for the user to see their current location.

  • The user has the ability to move the cursor to a new location and continue painting.
I would probably have realised this eariler, had I been more thorough in my reading of the existing project report, but having discovered this now, I have not lost much time at all.

Here is a video of me using the WiiPaint program:


As you can see, the pointing capabilities of the remote are still quite poor, and it is difficult to paint anything that resembles an object. Also, you can see that the colour selection tool is quite jumpy when switching between colour gradients.

DirectX Cursor Program

I have also been working on a simple DirectX program which has a cursor that is moved by the Wiimote. This is based on some of the projects by Johnny Lee (see link in the right menu), particularly the head-tracking project.

Here is a video of me using this basic program:


I will update more as soon as I can.

Monday, August 11, 2008

Wii Cursor in DirectX

After playing around some of Johnny Lee's Wiimote projects, I have managed to get the Wiimote to move a mouse cursor around a DirectX window (video coming soon).

I am making use of the Wii sensor bar, and the managed code library for the Wiimote, which includes functions for reading the sensor bar information through the camera in the Wiimote.

Thursday, August 7, 2008

Functional Spec / DirectX Experimentation / Usability Questions

This week I am focusing on creating a list of minimum required functionality for this project. Since the discovery that machine learning may not be used in the project, I have been trying to come up with some other additions to the functionality of the system.

I have had a short play around with DirectX within C#, and it looks like quite a huge product. I am starting to change my mind slightly about the reason for implementing the whole paint program in DirectX - paint programs are (generally) 2 dimensional. Of course, I could still use DirectX for creating aspects of the program (ie, a 3D colour selection cube). Either way, the experimentation I am doing with DirectX now will no doubt help.

I also noticed that there was a system called XNA, which is a managed version of DirectX specifically for C#. However, this looks to be more tuned for developing 3D games... it could be used to make a paint program I guess... we'll see.

I am also thinking about questions I might be asking in a usability study on my system. This is quite difficult, since I have not come to a detailed understanding of what I am building just yet. I am told by my supervisor that I have to submit my questionnaire to an ethics commitee, to have it approved, before I can use it.

Saturday, August 2, 2008

Project Plan and Development Environment Setup

Yesterday I handed in my project plan. In it, I outlined the various possibilities for the project. I listed a number of things that I would like to achieve in the project, some more likely to be achieved than others.

With the news about the machine learning part of the project being perhaps unnecessary, the task looks to have become simply a programming task (not ruling machine learning entirely however - there still might be a place for it).

I am looking to improve martins program by integrating DirectX graphics with it, to provide a more aesthetically pleasing system that is also more user friendly. This may mean a complete overhaul of the current system, which relies on the inbuilt System.Drawing library for C#, or, it may mean simply implementing DirectX in portions of the program (like the 3D colour selection cube).

I have also been busy setting up my development environment at home on my new computer. I have installed the necessary programs (like Microsoft Visual Studio), and am playing around with the managed library for the Wiimote (available here).

I had a few issues with connecting the Wiimote to my computer via Bluetooth. The software that came with the Bluetooth dongle that I purchased was causing my computer to crash. Eventually I managed to get it to work using Windows Vista's inbuilt Bluetooth devices section (see here).

I am also looking into DirectX development. Hopefully my limited knowledge of OpenGL will help with this side of things...