comme tu le sais, je fais mumuse avec les Anaglyphes
je trouve 2 choses dommage dans le code ci dessous :
qu'on ne puisse pas superposer la Vue de 2 cameras
(dans l'exemple on vois bien que le fond de la camera de gauche efface une partie de la camera de droite .. il est pourtant indiqué dans la doc, qu'une camera est crée avec fond transparent .. )
si nous pouvions superposer a l'ecran , le contenue des 2 cameras , ça ouvrirai alors la porte au anaglyphes ( et possibilité de jeux en anaglypheSyntaxe
CameraBackColor(#Camera, Couleur)
Description
Change la couleur de fond de la #Camera. RGB() peut être utilisée pour obtenir une couleur valide. ; Quand une nouvelle camera est créée, son fond est transparent pour permettre de mixer facilement un fond 2D avec une scène 3D.

la deuxieme chose, bien sur il faudrait pouvoir filtrer les couleurs des cameras en ne laissant passer Que le rouge pour celle de gauche
et que le Cyan (Vert+bleu) pour celle de droite
ça demanderai de creer une fonction CameraFRONTColor(#Camera, r,v,b )
3 parametres , qui decideraient, quelle couleur ont laisse passer
1,0,0 pour ne laisser passer que le rouge
0,1,0 , pour ne laisser passer que le vert
0,0,1 pour ne laisser passer que le bleu
ou meme
0,1,1 pour ne laisser passer que le Cyan (vert+bleu ) etc ....
et 1,1,1 pour le fonctionnement normal

en les superposant, ces cameras , nous aurions alors la 3D anaglyphe a l'ecran

je pense que ça doit pas etre évident a faire ....
Code : Tout sélectionner
;
; ------------------------------------------------------------
;
; PureBasic - Camera
;
; (c) 2002 - Fantaisie Software
;
; ------------------------------------------------------------
;
#CameraSpeed = 1
IncludeFile "Screen3DRequester.pb"
Define.f KeyX, KeyY, MouseX, MouseY
If InitEngine3D()
Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
Add3DArchive("Data/Models", #PB_3DArchive_FileSystem)
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
KeyboardMode(#PB_Keyboard_International)
AmbientColor(RGB(0, 200, 0)) ; Green 'HUD' like color
CreateMaterial(0, LoadTexture(0, "r2skin.jpg"))
CreateEntity(0, LoadMesh(0, "robot.mesh"), MaterialID(0))
AnimateEntity(0, "Walk")
CreateCamera(0, 0, 0, 100, 100) ; gauche camera (qui filtrerai son contenu en ne laissant que le Rouge passer )
CreateCamera(1,0, 0, 55, 50) ; droite camera ( qui filtrerai son contenu en ne laissant que le Vert+bleu passer )
; et surtout qu'une camera laisse son fond transparent !! cela permettrai des superpositions qui amenerai la possibilité de faire des jeux Anaglyphes :o)
CameraLocate(0, 0, 20, 250)
CameraLocate(1, 5, 20, 250) ; ici on poserai la camera de gauche a gauche (faire l'ecart des yeux )
CameraRenderMode(0, #PB_Camera_Wireframe) ; Wireframe for this camera
CameraRenderMode(1, #PB_Camera_Wireframe) ; Wireframe for this camera
Repeat
Screen3DEvents()
If ExamineMouse()
MouseX = -MouseDeltaX() * #CameraSpeed * 0.05
MouseY = -MouseDeltaY() * #CameraSpeed * 0.05
EndIf
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
KeyX = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = #CameraSpeed
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = #CameraSpeed
Else
KeyY = 0
EndIf
EndIf
RotateEntity(0, 0, 0.1, 0, #PB_Relative)
RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
MoveCamera (0, KeyX, 0, KeyY)
RotateCamera(1, MouseY, MouseX, 0, #PB_Relative)
MoveCamera (1, KeyX, 0, KeyY)
RenderWorld()
Screen3DStats()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
End; EPB