http://herved25.free.fr/test/TempleCompletV4_30.zip
http://herved25.free.fr/test/Collision.zip << test avec collision de PB
http://herved25.free.fr/test/WaterWorldV4_30.zip << test avec mes collisions
à placer dans le dossier ogre16
Code : Tout sélectionner
;Comtois
IncludeFile "Screen3DRequester.pb"
If InitEngine3D()
Add3DArchive("Data\", #PB_3DArchive_FileSystem)
Add3DArchive("GUI\", #PB_3DArchive_FileSystem)
Add3DArchive("GUI\schemes", #PB_3DArchive_FileSystem)
Add3DArchive("GUI\imagesets", #PB_3DArchive_FileSystem)
Add3DArchive("GUI\fonts", #PB_3DArchive_FileSystem)
Add3DArchive("GUI\looknfeel", #PB_3DArchive_FileSystem)
Add3DArchive("GUI\layouts", #PB_3DArchive_FileSystem)
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
AmbientColor(RGB(80,80,80))
CreateLight(0,RGB(255,255,255),200,800,200)
CreateMesh(0, 10)
SetMeshData(0, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_Color | #PB_Mesh_UVCoordinate, ?Sommets, 24)
SetMeshData(0, #PB_Mesh_Face, ?Triangles, 12)
CreateMaterial(0, LoadTexture(0, "texture0.png")) ;Texture0.png >> c'est juste un carré blanc avec un cadre noir sur le pourtour
MaterialAmbientColor(0,#PB_Material_AmbientColors)
For z=0 To 2
For y=0 To 2
For x=0 To 2
If x=1 And y=1 And z=1 : Centre = No : EndIf
CreateEntity(No, MeshID(0), MaterialID(0),x*10,y*10,z*10)
ScaleEntity(No,0.5,0.5,0.5)
No+1
Next x
Next y
Next z
CreateEntity(28, MeshID(0), MaterialID(0))
ScaleEntity(28,0.2,0.2,0.2)
;a = OpenWindow3D(3, 0, 0, 350, 110, "Ecran")
;TextGadget3D(3,10,50,200,35,"Mon Texte")
ShowGUI(128, #False)
CreateCamera(0, 0, 0, 50, 50)
CameraBackColor(0,#Blue)
CameraLocate(0, EntityX(Centre), 80, EntityZ(Centre)+1)
CameraLookAt(0,EntityX(Centre) ,EntityY(Centre),EntityZ(Centre))
CreateCamera(1, 50, 0, 50, 50)
CameraBackColor(1,#Yellow)
CameraLocate(1, EntityX(Centre), EntityY(Centre), 80)
CameraLookAt(1,EntityX(Centre) ,EntityY(Centre),EntityZ(Centre))
CreateCamera(2, 0, 50, 50, 50)
CameraBackColor(2,#Red)
CameraLocate(2, 80, EntityY(Centre), EntityZ(Centre))
CameraLookAt(2,EntityX(Centre) ,EntityY(Centre),EntityZ(Centre))
CreateCamera(3, 50, 50, 50, 50)
CameraBackColor(3,#Green)
CameraLocate(3, 80, 80, 80)
CameraLookAt(3,EntityX(Centre) ,EntityY(Centre),EntityZ(Centre))
ShowCursor_(1)
Repeat
Screen3DEvents()
ExamineKeyboard()
RotateEntity(28,1,1,1,1)
If ExamineMouse()
If MouseButton(#PB_MouseButton_Left)
If MouseX()<Screen3DRequester_Width/2 And MouseY()<Screen3DRequester_Height/2
InputEvent3D(MouseX()*2, MouseY()*2, MouseButton(1), "")
Entity = MousePick(0, MouseX()*2, MouseY()*2)
ElseIf MouseX()>Screen3DRequester_Width/2 And MouseY()<Screen3DRequester_Height/2
InputEvent3D((MouseX()-Screen3DRequester_Width/2)*2, MouseY()*2, MouseButton(1), "")
Entity = MousePick(1, (MouseX()-Screen3DRequester_Width/2)*2, MouseY()*2)
ElseIf MouseX()<Screen3DRequester_Width/2 And MouseY()>Screen3DRequester_Height/2
InputEvent3D(MouseX()*2, (MouseY()-Screen3DRequester_Height/2)*2, MouseButton(1), "")
Entity = MousePick(2, MouseX()*2, (MouseY()-Screen3DRequester_Height/2)*2)
ElseIf MouseX()>Screen3DRequester_Width/2 And MouseY()>Screen3DRequester_Height/2
InputEvent3D((MouseX()-Screen3DRequester_Width/2)*2, (MouseY()-Screen3DRequester_Height/2)*2, MouseButton(1), "")
Entity = MousePick(3, (MouseX()-Screen3DRequester_Width/2)*2, (MouseY()-Screen3DRequester_Height/2)*2)
EndIf
If entity<>28
EntityLocate(28,PickX(),PickY(),PickZ())
EndIf
EndIf
EndIf
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
DataSection
Sommets:
;Dessus 0 à 3
Data.f -10,10,-10
Data.f 0,1,0
Data.l $00FF00
Data.f 0,0
Data.f 10,10,-10
Data.f 0,1,0
Data.l $00FF00
Data.f 0,1
Data.f 10,10,10
Data.f 0,1,0
Data.l $00FF00
Data.f 1,1
Data.f -10,10,10
Data.f 0,1,0
Data.l $00FF00
Data.f 1,0
;Dessous 4 à 7
Data.f -10,-10,10
Data.f 0,-1,0
Data.l $FFFF00
Data.f 0,0
Data.f 10,-10,10
Data.f 0,-1,0
Data.l $FFFF00
Data.f 0,1
Data.f 10,-10,-10
Data.f 0,-1,0
Data.l $FFFF00
Data.f 1,1
Data.f -10,-10,-10
Data.f 0,-1,0
Data.l $FFFF00
Data.f 1,0
;Devant 8 à 11
Data.f -10,10,10
Data.f 0,0,1
Data.l $FF0000
Data.f 0,0
Data.f 10,10,10
Data.f 0,0,1
Data.l $FF0000
Data.f 0,1
Data.f 10,-10,10
Data.f 0,0,1
Data.l $FF0000
Data.f 1,1
Data.f -10,-10,10
Data.f 0,0,1
Data.l $FF0000
Data.f 1,0
;Derrière 12 à 15
Data.f 10,10,-10
Data.f 0,0,-1
Data.l $0000FF
Data.f 0,0
Data.f -10,10,-10
Data.f 0,0,-1
Data.l $0000FF
Data.f 0,1
Data.f -10,-10,-10
Data.f 0,0,-1
Data.l $0000FF
Data.f 1,1
Data.f 10,-10,-10
Data.f 0,0,-1
Data.l $0000FF
Data.f 1,0
;Cote gauche 16 à 19
Data.f -10,10,-10
Data.f -1,0,0
Data.l $FF00FF
Data.f 0,0
Data.f -10,10,10
Data.f -1,0,0
Data.l $FF00FF
Data.f 0,1
Data.f -10,-10,10
Data.f -1,0,0
Data.l $FF00FF
Data.f 1,1
Data.f -10,-10,-10
Data.f -1,0,0
Data.l $FF00FF
Data.f 1,0
;Cote droit 20 à 23
Data.f 10,10,10
Data.f 1,0,0
Data.l $00FFFF
Data.f 0,0
Data.f 10,10,-10
Data.f 1,0,0
Data.l $00FFFF
Data.f 0,1
Data.f 10,-10,-10
Data.f 1,0,0
Data.l $00FFFF
Data.f 1,1
Data.f 10,-10,10
Data.f 1,0,0
Data.l $00FFFF
Data.f 1,0
Triangles:
;Face en Haut
Data.w 2,1,0
Data.w 0,3,2
;Face en Bas
Data.w 6,5,4
Data.w 4,7,6
;Face Avant
Data.w 10,9,8
Data.w 8,11,10
;Face Arrière
Data.w 14,13,12
Data.w 12,15,14
;Face Gauche
Data.w 18,17,16
Data.w 16,19,18
;Face Droite
Data.w 22,21,20
Data.w 20,23,22
EndDataSection