jfk,
Heres a version of your code using my 3D camera system. I warn you, that you must have sync timer set to max, otherwise you get a great deal of flicker. You select for color combinations by pressing keys 1-4 (RED/CYN,RED/GRN,YEL/BLU,MAG/GRN) respectively.
; 3D Glasses Demo by JFK of CSP (inspred by Doggie, thx!)
; 3DCam by Frank Taylor
Graphics3D 800,600,32,1
Collisions 1,2,2,2
player=CreatePivot()
PositionEntity player,0,1,-1
EntityRadius player,.6
EntityType player,1
mycamera.camera=CameraCreate()
mycamera\mode=1 ;1=red/cyan
EntityParent(mycamera\camera,player)
CameraRange mycamera\camera,.1,100
level=LoadMesh( "test.b3d" )
EntityFX level,1
EntityType level,2
spd#=.15
ey#=EntityY(player)
sky=LoadSkyBox( "sky" )
EntityParent sky,mycamera\camera
PositionEntity mycamera\camera,0,1,0
;--------------------------
synctimer=CreateTimer(120);max fps required or serious flicker
Repeat
WaitTimer synctimer
Cls
If KeyHit(17)
wire=1-wire
WireFrame wire
EndIf
yv#=EntityY(player)-ey
ey=EntityY(player)
If KeyHit(57) yv=.1
MoveEntity player,0,yv-.005,0
If KeyDown(30) Then TranslateEntity player,0,-2,0
If KeyDown(44) Then TranslateEntity player,0,+2,0
If KeyHit(2) mycamera\mode=1;1=red/cyan
If KeyHit(3) mycamera\mode=2;2=red/green
If KeyHit(4) mycamera\mode=3;3=yellow/blue
If KeyHit(5) mycamera\mode=4; (Magenta/Green)
mxs#=-MouseXSpeed()/4
mys#=MouseYSpeed()/4
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
TurnEntity mycamera\camera,mys#,0,0
TurnEntity player,0,mxs#,0
If KeyDown(203) TurnEntity player,0,2,0
If KeyDown(205) TurnEntity player,0,-2,0
If KeyDown(200) MoveEntity player,0,0,spd
If KeyDown(208) MoveEntity player,0,0,-spd
RotateEntity sky,0,0,0,True
cameramanager()
UpdateWorld()
RenderWorld()
Flip(True)
Until KeyDown(1)
;-----------------------------------------------------------------------------------------
;skybox code stolen from castle demo!
Function LoadSkyBox( file$ )
m=CreateMesh()
;front face
b=LoadBrush( file$+"_FR.jpg",49 )
s=CreateSurface( m,b )
AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0
AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1
AddTriangle s,0,1,2:AddTriangle s,0,2,3
FreeBrush b
;right face
b=LoadBrush( file$+"_LF.jpg",49 )
s=CreateSurface( m,b )
AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0
AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1
AddTriangle s,0,1,2:AddTriangle s,0,2,3
FreeBrush b
;back face
b=LoadBrush( file$+"_BK.jpg",49 )
s=CreateSurface( m,b )
AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0
AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1
AddTriangle s,0,1,2:AddTriangle s,0,2,3
FreeBrush b
;left face
b=LoadBrush( file$+"_RT.jpg",49 )
s=CreateSurface( m,b )
AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0
AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1
AddTriangle s,0,1,2:AddTriangle s,0,2,3
FreeBrush b
;top face
b=LoadBrush( file$+"_UP.jpg",49 )
s=CreateSurface( m,b )
AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0
AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1
AddTriangle s,0,1,2:AddTriangle s,0,2,3
FreeBrush b
;bottom face
b=LoadBrush( file$+"_DN.jpg",49 )
s=CreateSurface( m,b )
AddVertex s,-1,-1,-1,1,0:AddVertex s,+1,-1,-1,1,1
AddVertex s,+1,-1,+1,0,1:AddVertex s,-1,-1,+1,0,0
AddTriangle s,0,1,2:AddTriangle s,0,2,3
FreeBrush b
ScaleMesh m,100,100,100
FlipMesh m
EntityFX m,1
EntityOrder m,1
Return m
End Function
;============================
;CAMERA
;3DCAM by Frank Taylor
;============================
Type camera
Field camera
Field lens
Field viewportx,viewporty,viewportwidth,viewportheight
Field mode ; 0=Normal, 1-4=Anaglyphic, 5-Pulfrich Effect, 6=Shutter, 7=Split
Field fov#
Field zoom#
Field x#;left|right x plane position from center focal point
Field yaw# ;left|right y axis degree of angle from 0
Field r ;red color component
Field gb ;green|blue color component
Field llens ;left lens color [red]
Field rlens ;right lens color [green]
Field lenssyncpulse ;0-red, 1-green
Field cursor
End Type
Function cameranew.camera()
mycamera.camera=New camera
mycamera\viewportx=0
mycamera\viewporty=0
mycamera\viewportwidth=GraphicsWidth() Shr 1
mycamera\viewportheight=GraphicsHeight() Shr 1
mycamera\r=255
mycamera\gb=255
mycamera\llens=mycamera\r
mycamera\rlens=0
mycamera\x#=.2
mycamera\yaw#=.5
mycamera\lenssyncpulse=1
Return mycamera
End Function
Function cameradelete(mycamera.camera)
FreeEntity mycamera\lens
Delete mycamera
End Function
Function cameramanager()
;2 to 1 buffering
;takes separate snapshots of the scene in two equal/opposite angles in separate color
For eachcamera.camera=Each camera
;Anaglypic/Shutter Mode
If eachcamera\mode
;Shutter
eachcamera\lenssyncpulse=-1*eachcamera\lenssyncpulse
;left | right lens
TranslateEntity eachcamera\camera,eachcamera\x*eachcamera\lenssyncpulse,0,0
TurnEntity eachcamera\camera,0,eachcamera\yaw*eachcamera\lenssyncpulse,0
eachcamera\llens=eachcamera\r-eachcamera\llens
eachcamera\rlens=eachcamera\gb-eachcamera\rlens
;set lens color
Select eachcamera\mode
;AnaglyphicRB (Red/Cyan)
Case 1 EntityColor eachcamera\lens,eachcamera\llens,eachcamera\rlens,eachcamera\rlens
;AnaglyphicRG (Red/Green)
Case 2 EntityColor eachcamera\lens,eachcamera\llens,eachcamera\rlens,0
;AnaglyphicRB (Yellow/Blue)
Case 3 EntityColor eachcamera\lens,eachcamera\llens,eachcamera\llens,eachcamera\rlens
;AnaglyphicRG (Magenta/Green)
Case 4 EntityColor eachcamera\lens,eachcamera\llens,eachcamera\rlens,eachcamera\llens
;Pulfrich
Case 5
Select eachcamera\lenssyncpulse
Case 1 EntityColor eachcamera\lens,eachcamera\llens,eachcamera\llens,eachcamera\llens
Case -1 EntityColor eachcamera\lens,eachcamera\rlens Shr 1,eachcamera\rlens Shr 1,eachcamera\rlens Shr 1
End Select
;Split
Case 7
Select eachcamera\lenssyncpulse
Case 1 CameraViewport eachcamera\camera,eachcamera\viewportx,eachcamera\viewporty,eachcamera\viewportwidth,eachcamera\viewportheight
Case -1 CameraViewport eachcamera\camera,eachcamera\viewportx+eachcamera\viewportwidth,eachcamera\viewporty,eachcamera\viewportwidth,eachcamera\viewportheight
End Select
End Select
EndIf
Next
End Function
Function cameracreate.camera()
mycamera.camera=cameranew()
mycamera\camera=CreateCamera()
PositionEntity mycamera\camera,0,0,-3
;listener
CreateListener(mycamera\camera)
;lens
mycamera\lens=CreateSprite(mycamera\camera)
TranslateEntity mycamera\lens,0,0,1
ScaleSprite mycamera\lens,1,1
EntityBlend mycamera\lens,2
Return mycamera
End Function
Function cameraadjust(mycamera.camera,translate#=0,turn#=0,r=0,gb=0)
;translates|turns|set color in -1|+1 increments
If translate<>0 mycamera\x=mycamera\x#+translate#
If turn<>0 mycamera\yaw#=mycamera\yaw#+turn#
If r<>0 mycamera\r=mycamera\r+r
If gb<>0 mycamera\gb=mycamera\gb+gb
End Function