It has been a long time since the last update. I must admit, I am not a "blogging" type person, and so it has slipped my mind a little. But I promise i will try to keep the last stages constantly tracked, and I will do an update post right now that documents what I have accomplished thus far.
DATASETSRather than the datasets I initially proposed, I decided that it would make more sense to use a set of unrelated datasets, and then try to create interesting correlations through experimenting through scratching. Thus I found a set of data from ABS including overseas arrivals and departures, export data, and crime data over a ten year period from July 1996 to June 2006.
VVVV PROGRESSWell, it has been a very steep learning curve with this program. Apart from the documentation and examples presented on the site and within the program, there is very little help with this program. Also just to note, as an open source project, there are still a few modules that are a bit buggy. Also, being a graphical programming language, it was a little difficult to translate "pseudocode" into modules that work. The easy things in programming such as if, then, else, becomes a little more tricky to work out in VVVV.
There was several tossing about of which type of renderer to use. Initially, I started out using the Direct-X Renderer (EX9). At this time, I only knew enough VVVV to draw straight line graphs as you can see below. Though it was a small idea of what i wanted to play around with, I decided that the lines were rather ugly, and discontinuous with the sharp peaks. Also, I need to think about "zooming in" to the data, and displaying say, 3 data points on the screen at once, rather than almost the whole dataset.
The next stage, i tried to figure out how to draw bezier lines within VVVV using the datasets. At this point I only had enough knowledge to draw Bezier lines using the GDI renderer. The issue with this was that the GDI Renderer renders on the CPU rather than the GPU and this would cause the system to slow down immensely and "jitter". It would also render the whole line rather than only what was visible on the screen. Thus I needed to figure out a way to render only the section of the dataset visible on the screen, whilst allowing it to update the line as we scratch through.
The next prototype saw this problem solved, as I managed to render only sections of the line visible on the screen. However I was not entirely happy with the results and with using the GDI renderer. It had alot of limitations such as not being able to use the capabilities of textures and alpha channels. I knew if I only could figure out bezier lines in Direct X, that many "tricks" could then be employed to make the aesthetics much more pleasing.
Finally after much stress and searching, I found an example on the
SanchTV Website that created Bezier Lines in Direct X. Sanch is a VVVV programmer that posts his VVVV work online for other to learn off. Thankfully, I was able to extract the information I needed from his Bezier Line Editor 2D. The results are below, however there were still several bugs that needed addressing. The line drawn would have a giant gap in the centre, which though I tried to cover up by rendering the line as a dashed line, the aesthetics suffered because of it. Further, I could only get text working in the GDI renderer, with the same issues as previously, which caused the system to once again slow down when text was added.
So this brings us up to present. The current prototype fixed a couple of the bugs. I used rope instead of the line module, and this eliminated the gap in the line, and it also rendered alot smoother, meaning that increase in line size does not show so obviously the gaps between the lines that form the bezier curves. Further, I got EX9 text working, which means that everything is rendering fast again. I further increased the speed by ensuring only the text within the screen was rendered.
The aesthetics are getting there! It is improving, though I am not entirely happy with the representation of text as yet, but I am working on it!
INTERACTION PROGRESSI realised that the microcontroller was not working the way that I needed it to. It would only measure according to tilt, rather than an x and y position relative to a starting point, which is what i imagined it would do.
Thus I began brainstorming new methods for this "scratch" interaction using Arduino. After reading the Physical computing book by Dan O'Sullivan, I realised I could use a potentiometer to read rotation values.
With the help of my boyfriend Graham, we devised a method for attaching the potentiometer to a turntable, such that when the turntable was rotated, the potentiometer would turn, sending out a different resistance value.
We used a die to cut threads on the shaft of the pot, and then used mudguard washers and locknuts to attach the pot to the turntable. We then superglued the base of the potentiometer to the base of the turntable, so only the shaft turned when rotated.
We also added a slider on the turntable by jigsawing a slot for it to sit and mounting it. The slider will be used to select different datasets to scratch. (The slider is not shown in the image).
There are only a few issues with the setup. It is a little bit fragile at the moment, and the turning mechanism is resting entirely on the potentiometer. Thus we are considering adding rollers to take the weight off the pot.
Also the pot is not a continous rotation pot. Thus it has a maximum point and a minimum point. People attempting to push past this point may break it. For the presentation, I will be the only one demonstrating and this will not be an issue. However for the final year exhibition, this may be a problem.