Post by Kyle Gagner on Nov 26, 2011 23:56:43 GMT -5
I made my first screensaver! It was kinda difficult to get it to stay in the correct working directory, and I actually had to resort to a funky sort of workaround, but it works!
Just download the attached .zipx (if you can't unzip a .zipx or you do not have an account on the forum yet use this link dl.dropbox.com/u/6316469/vb.zip which may expire at some point).
Unzip the file and take the vb folder and put it in C:\
So there should now be Workaround.scr, Screensaver.exe, and the PlanetSaver folder of pictures in C:\vb\
Now just use Workaround.scr as your screensaver (on windows 7 this is as easy as right clicking and hitting install, I don't know about XP).
The graphics may be a bit... blocky, but all for a good reason. I wanted to try drawing graphics as a bunch of points. It turns out that most of the time, performing all of the 3D transforms for a bunch of points is too slow, so I opted for drawing each point as a largish square (which shrinks in the distance). The graphics are significantly more realistic when many 1 pixel points are used and this is actually not too slow on my computer (for this screensaver). But, I like the concept and the graphics are sorta cartoony made up of a bunch of squares, so there is also an aesthetic reason.
The 3D transformations for this are very involved. Many matrix transforms are used to rotate, translate, and scale objects. This program is an excellent example of good matrices. The moon orbiting around the brown planet (that's actually a moon using Pluto for a texture map and the brown planet is really from a Mars map) has a couple matrix transforms to translate and rotate it (to make the appearance of orbiting), but to get it to go around the planet I just needed to multiply its matrix transform by the planet's. So first the orbiting transforms are applied then all of the transforms used to get the planet where it is. Matrix multiplication is not commutative but it is associative.
I'm not comfortable sharing my messy code quite yet (I'll probably share it if you beg... but it is pretty badly scared with commented out lines of code that don't work). If you want to see my matrices code however, I posted that. vashonprogramming.proboards.com/index.cgi?action=display&board=c&thread=12
Just download the attached .zipx (if you can't unzip a .zipx or you do not have an account on the forum yet use this link dl.dropbox.com/u/6316469/vb.zip which may expire at some point).
Unzip the file and take the vb folder and put it in C:\
So there should now be Workaround.scr, Screensaver.exe, and the PlanetSaver folder of pictures in C:\vb\
Now just use Workaround.scr as your screensaver (on windows 7 this is as easy as right clicking and hitting install, I don't know about XP).
The graphics may be a bit... blocky, but all for a good reason. I wanted to try drawing graphics as a bunch of points. It turns out that most of the time, performing all of the 3D transforms for a bunch of points is too slow, so I opted for drawing each point as a largish square (which shrinks in the distance). The graphics are significantly more realistic when many 1 pixel points are used and this is actually not too slow on my computer (for this screensaver). But, I like the concept and the graphics are sorta cartoony made up of a bunch of squares, so there is also an aesthetic reason.
The 3D transformations for this are very involved. Many matrix transforms are used to rotate, translate, and scale objects. This program is an excellent example of good matrices. The moon orbiting around the brown planet (that's actually a moon using Pluto for a texture map and the brown planet is really from a Mars map) has a couple matrix transforms to translate and rotate it (to make the appearance of orbiting), but to get it to go around the planet I just needed to multiply its matrix transform by the planet's. So first the orbiting transforms are applied then all of the transforms used to get the planet where it is. Matrix multiplication is not commutative but it is associative.
I'm not comfortable sharing my messy code quite yet (I'll probably share it if you beg... but it is pretty badly scared with commented out lines of code that don't work). If you want to see my matrices code however, I posted that. vashonprogramming.proboards.com/index.cgi?action=display&board=c&thread=12