This week has been a very varied and interesting one. I began by sorting out some acetate sheets for my perspex from which I could draw some stimulus, have them represented on the computer, and then check to see if my program was working as I intended it (see below pictures for examples of the pictures, lines and 3D cube used, I also used some random points to see if that also worked and eventually it did, not pictured). The immediate problem I could see was that the pictures were lining up perfectly fine when my angle of rotation was zero, but then if I rotated clockwise the images translated left and anticlockwise right. Because of this I realised that the centre of rotation I had organised (the centre of the television) was not in fact where the origin in my screenspace was. I adjusted the stand accordingly, by moving the television backwards, and it all worked perfectly.
After that I ran through the experiment myself for a full set of data and analysed the results, which show as I suspected that the slight translation made very little difference to the perception of the cube.
I am still working on getting the cubes working in openGL, which is becoming less painful the more I look at it, the cubes now warp and the backs can’t be seen when they shouldn’t. Still a work in progress, watch this space. The advantage I have is that the ‘extra parts’ such as turning it 3D, randomly interleaving many different variables and recording the results should be relatively straightforward as it can just be ported from phase 1.
I helped out at Kids Kabin again this week, (Ann the supervisor came to make up numbers and said my calling in life must eventually involve teaching, quite a nice compliment!) I have begun working on my dissertation with a bit more earnest (reading and re-reading appropriate papers, starting my introduction and materials and methods sections, etc.). I have also signed up to attend a conference on matlab in late June (only a week before my wedding) and have worked on my presentation at a conference in a fortnights time.
Next week I intend to continue with the openGL work, I am thinking of different ways I could present the problem in case what we are trying is physically impossible, possibly an adjustment task where the cube warps depending on the right or left keypresses, and the participant has to do it until they believe the cube is no longer warped, starting at different angles. Think that would be both feasible to program and quite interesting. Will see what Jenny thinks next week.
Dropped into the Newcastle Makerspace last night and had a friendly welcome. Definitely need to start going to that and getting creative in a geeky way.
I have spent the entire week battling with OpenGL. OpenGL is a graphics program that is supposed to make life easier for you by doing much of the hard calculations to project an object correctly onto the screen. Unfortunately this is the exact opposite of what it is I want to do, as I’m doing oblique angles instead of frontoparallel (straight on). The advantage that OpenGL has however is that it is very good with figuring out what should be able to be seen at any one moment. So in this program the back of my cubes aren’t visible when they shouldn’t be, which is exactly why we opted to use openGL for phase 2. Unfortunately I now need to reassess how to work out the oblique warping all over again. Fortunately I intend to use previous thinking as a ‘roadmap’ to avoid any of the pitfalls I suffered before.
I now have 7 weeks until the project is supposed to be finished. If I can get the cubes working in the next two weeks I’ll have more than enough time to run through some volunteers and collect some results. How do I know I have 7 weeks left? My wedding is the Saturday after the project is done. Which is altogether much more scary than science!
This week I have been working with the problem of trying to add some solidity to my wire frame cubes via putting surfaces on them. Which sounds fairly trivial but has taken me the best part of a week to sort out. Needed to use Screen(FillPoly,…) and enter the coordinates my sph2cart(theta, phi, fancy R) returned. But this in itself raises a problem. Due to the 3D being used and the entire thing being on one plane when it is done, filling raises more problems then it solves, and the back surface can be seen on the wrong size (PTB does nothing for hidden faces, or at least not automatically)
SO it looks like I may have to write a new piece of code, using openGL. Which I would prefer to avoid as it’s a different beast altogether and will take a while. Going to look today at what I hope will be half measures to see if I can find a workaround in PTB. Not too hopeful though!
In other news I have received and setup the active stereo on my laptop. Have to say it looks brilliant and the screen quality is super HD anyway. So have been working with that and seeing if I can adapt matlab so it work in active stereo (managed it for basic matlab codes, not yet for my script). The number of volunteers I am getting from ION database is brilliant and I now have more than enough to do phase 1 and 2. Reluctant to turn any of them away in case I do need more for the power of the stats used. I have also been working on the abstract and presentation for the illusion conference in Leicester in June (excited for that).
Here are a couple of photos of the lab setup for this experiment and what the participant can see through the screen. As is clear, the curtain makes the orientation of the screen plane appear frontoparallel (perpendicular) whereas the other pictures show it is not!