Heya Baxslash.
I've reviewed the image solution, but it had too many draw backs (heh), such as complications when ray casting and slower frame rates.
At the moment, I'm putting together a ray casting demo for myself, and I'm really keen on learning how to use 3D plane objects as message boxes and buttons. Mixing in Orthographic Views, Pick Object\Pick Screen, and the incompatibilities that all of these commands have with each other, I've really got my work cut out for me!
Currently I'm figuring out how to ray cast into a matrix cell, and upon clicking the cell changes colour. In doing so, I was going to have a couple of camera angles, side by side on screen, but I also requied an "overlay" of camera 0 which covered both Camera 1 & 2, so that the Message box planes would render to Camera 0 thus overlay Camera 1 & 2 view ports.
In my code below, I've put this requirement on the back burner until someone can advise further on technique.
Rem By BurningFeetMan
Rem Project: Dark Basic Pro Project
Rem Created: Tuesday, June 07, 2011
Rem ***** Main Source File *****
Set Display Mode 1200, 400, 32
Sync on
Sync rate 60
Type TMouse
PosX as Integer
PosY as Integer
Cam as Integer
Cam_Cache as Integer
Endtype
Mouse as TMouse
Autocam off
Make Object Cube 1, 10 : Position object 1, 0,0,0
Rem Camera 2 outputs to the right side - red
Make Camera 2
Position Camera 2, 0, 200, 0 : Set Camera View 2,800,0, 1200, 400 : Point Camera 2,0,0,0 : Backdrop on 2 : Set Camera Aspect 2, 1
Color Backdrop 2, rgb(155,155,155)
Rem Camera 1 outputs to the left side - green
Make Camera 1
Position Camera 1, 0, 100,-100 : Set Camera View 1,0,0,400,400 : Point Camera 1,0,0,0 : Backdrop on 1 : Set Camera Aspect 1, 1
Color Backdrop 1, rgb(155,0,0)
REM Camera 0 covers total screen
Position Camera 0, -100, 100,-100 : Set Camera View 0,400,0,800,400 : Point Camera 0,0,0,0 : Backdrop on 0 : Set Camera Aspect 0,1
Color Backdrop 0, rgb(155,0,155)
D3D_Set_Ortho_Projection 0, 150
Make Matrix 1,100,100,10,10 : Position Matrix 1, -50,0,-50
Do
Mouse.PosX = MouseX()
Mouse.PosY = MouseY()
Mouse.Cam = D3D_Cursor_In_Camera(0,2)
If Mouse.Cam < 0
Mouse.Cam = 0
ENDIF
If Mouse.Cam <> Mouse.Cam_Cache
Color Backdrop Mouse.Cam, RGB(RND(255), RND(255), RND(255))
Mouse.Cam_Cache = Mouse.Cam
ENDIF
Set cursor 0,0
Print "Mouse X: " ; Mouse.PosX
Print "Mouse Y: " ; Mouse.PosY
Print "Mou cam: " ; Mouse.Cam
Sync
Loop
End
Note to the cutters & pasters out there, you'll need a Matrix1's Utilities and also D3DFunc to compile and run my code.
EDIT: Ha! Ok, come full circle, again. Done some more testing, and I've found the best way to produce an orthographic view is to toggle the camera distance, range and FOV. All of the pick screen/pick object code continues to work, and to be honest I can't tell the difference between a FOV of 0.5 and Orthographic.
Any thoughts?