Camera Pick Code/Tutorial

BlitzMax Forums/BlitzMax Programming/Camera Pick Code/Tutorial

AntonyWells(Posted 2006) [#1]
Does anyone have any code for camera picking or even know of a tutorial?

I.e Something like in b3d,

hit=CameraPick MyCam,XPixel,YPIxel

if hit
x = pickedx()
y = pickedy()
z = pickedz()
endif


Would it involve the use of a linepick function or is done with a custom matrix?


Dreamora(Posted 2006) [#2]
What are you exactly talking of?
As there is no camera, you can do a simple CollideRect test to find all objects the mouse pointer collides with at click for example.


TartanTangerine (was Indiepath)(Posted 2006) [#3]
I think you need to go the martix route, as Dreamora says there is no Entity Type called Camera but you do have the projection matrix to play with.


AntonyWells(Posted 2006) [#4]
Well there is a camera entity class in what i'm using(TrinityV2) I'm just not sure how to approach it.
I keep finding links pointing towards supposedly a good tutorial on the subject but none of them are working anymore.
Anyone got a link to a working version?

I can see the projection matrix idea working if I download gl projection matrix and use a simple point in poly test on each tri. With this I could easily determine which entity is hit but I'd still be at a loss when it comes to finding out the exact x,y,z of the intersection.
I'm sure blitz returned this. Mark! MARK!


deps(Posted 2006) [#5]
There's a lot of tutorials out there. Google for "OpenGL picking tutorial".
I used this one a couple of weeks ago: http://www.lighthouse3d.com/opengl/picking/


AntonyWells(Posted 2006) [#6]
Thanks for that but I was under the impression that regular gl picking can only identify on a per entity basis rather than specifying an exact tri and the location of the hit?

Any idea how mark did it in b3d?


boomboommax(Posted 2006) [#7]
you got msn ant? add slightlyevilmonkee@...

dont mind helping out


eizdealer(Posted 2006) [#8]
An easy and fast way of finding the picked X, Y and Z coordinates could be reading the depth of a pixel, then creating a vector from the appropriate place of the forefront of the view frustum with the length of the depth. The picked X, Y and Z coordinates are where this vector ends.
Hah it's impossible to express such stuff in English :/
Maybe this image can help: