Here is a very quick example of an isometric camera. Press "I" for isometric view, "P" for perspective view, left and right arrow keys rotate view arount (0,0,0).
Camera starts in best position for isometric rendering.
Rem Project: Isometric Test
Rem Created: 10/05/2007 08:29:08
Rem ***** Main Source File *****
rem Match the screen size to the current desktop size and depth
set display mode d3d_get_desktop_width(),d3d_get_desktop_height(),d3d_get_desktop_depth()
d3d_init
sync rate 0 : sync on : autocam off : color backdrop 0
make object plain 1,10,10
color object 1,rgb(0,255,0)
pitch object up 1,90
make object box 2,2,1,1
position object 2,-2,.5,0
color object 2,rgb(132,58,8)
make object cube 3,1
position object 3,-2.5,1.5,0
color object 3,rgb(132,58,8)
Rem In isometric mode the camera position has no bearing
rem on the objects rendered size, just the viewing angle
rem this means an object will take up the same amount of
rem space on screen if the camera is 1 unit away or
rem 10000 units away
rem this camera position and viewing angle produces
rem the best isometric view
position camera -10,5,-10
point camera 0,0,0
ca#=45
do
if upper$(inkey$())="I"
rem Set camera 0 to Orthographic projection
rem The width of the camera display is 10 DBP units
rem this means that if an object is 10 units wide
rem it will fill the screen exactly
D3D_SET_ORTHO_PROJECTION 0,10
endif
if upper$(inkey$())="P"
rem put the camera perspective back to the original
rem dbp perspective
D3D_RESET_CAMERA 0
endif
if leftkey()
ca#=ca#+.1
endif
if rightkey()
ca#=ca#-.1
endif
ca#=wrapvalue(ca#)
position camera 0,sin(ca#)*10,5,cos(ca#)*10
point camera 0,0,0,0
d3d_line3d 0,0,0,0,-8,2,0,rgb(255,0,0),rgb(255,0,0),1
d3d_dot3d 0,-2,.5,0,rgb(255,0,0),1
sync
loop
I will try to expand on this example as I get the time.
Cheers,
Cloggy