Simple OpenGL Keyboard and Mouse FPS Controls
r3dux | May 13, 2011Note: This was written in January 2011 – I just never posted it, but I’d already uploaded the video to YouTube and someone asked for the code, so here it is, in all its fixed-pipeline glory
I’m working on my OpenGL skills (or lack thereof) at the moment, and wanted to implement some 3D movement controls kinda of like a FPS with clipping off, so I read some chapters of the hallowed OpenGL SuperBible and did some googling, where I came across Swiftless‘ camera tutorials (Part 1, Part 2, Part 3) which gave me a really good start (Thank you, Swiftless!) on how to manipulate the ModelView matrix so we can move around a 3D scene, only it wasn’t quite perfect…
Strange things would happen like you’d look vertically downwards (i.e. directly down the negative Y axis), then you’d push forward – and yeah, you’d move “down”, but you’d also move “forward” at the same time (oh, and I’m putting things like “down” and “forward” in quotes because these concepts are all relative to your viewing orientation – not because I’m trying to be “sarcastic” or anything =P)
Anyways, I had a play with it and sorted it out after spending some time looking at the graphs for trigonometric functions and doing a little bit of off-setting and range-limiting as required. Check it out:
It actually looks quite a lot better running live than in the video due to mis-matched frame-capture rates and the like, but you get the idea =D
Full source code is available after the jump.
Cheers!
Anaglyphic 3D in GLSL
r3dux | May 9, 2011I’ve been playing around with getting some red/cyan stereoscopic 3D working of late, and it’s all turned out rather well – take a look… (Red/Blue or Red/Cyan glasses are required for the effect to work):
If you’ve got suitable glasses you should definitely see a 3D effect, although I don’t think me rescaling the image has done it any favours – so click the image to see the full sized version for the full effect.
The trick to this has been to render the scene twice to two separate FBO textures, then sample from the left and right textures to draw a fullscreen quad with a combined version as follows:
// Fragment shader to perform Analyphic 3D conversion of two textures from the left and right eyes #version 330 uniform sampler2D leftEyeTexture; uniform sampler2D rightEyeTexture; in vec2 vTexCoord; out vec4 vFragColour; void main(void) { vec4 leftFrag = texture(leftEyeTexture, vTexCoord); leftFrag = vec4(1.0, leftFrag.g, leftFrag.b, 1.0); // Left eye is full red and actual green and blue vec4 rightFrag = texture(rightEyeTexture, vTexCoord); rightFrag = vec4(rightFrag.r, 1.0, 1.0, 1.0); // Right eye is full green and blue and actual red // Multiply left and right components for final ourput colour vFragColour = vec4(leftFrag.rgb * rightFrag.rgb, 1.0); }
In the code itself, the torus’ spin around on the spot and look pretty good, although there’s no anti-aliasing as yet as I need to create some multisample buffers instead of straight/normal buffers for the FBO, but it’s not decided to play ball just yet – not to worry though, the hard part’s done and I’m sure multisampling will be sorted in a day or so. After that, I might give ColorCode3D (TM)(R)(C)(Blah) a go, as it seems to give a better colour representation whilst still allowing the same amount of depth as traditional anaglyphic techniques. Also, I’ve got to start using asymmetric frustums for the projection to minimise the likelihood of eye-strain, but I don’t see that as being too much of a problem.
Good times! =D
Kinect Tech – MikuMikuDance
r3dux | December 21, 2010I posted something about Japanese people going to see virtual hologram popstars the other day, and now someone’s working on doing a kinect dance-game version – it’s mighty impressive…
That’s some really great skeletal mapping work!












