Pour utiliser un mesh dans PB, il y a longtemps j'avais utiliser un exportateur OGRE sous blender3D ça marchait très bien (même pour les animations exportées). J'avais trouvé cet exporter sur le site officiel d'OGRE.
Maintenant pour le problème de GallyHC, et bien comment dire ... j'ai fait un petit code hier en m'appuyant sur un exemple du répertoire Exemple/3D de PB, ce code est simpliste, mais la lampe du projecteur éclaire de façon opposée (il faudrait simplement inverser la direction de la lumière), ne t’inquiète pas GallyHC les pros de la 3D se chargeront de régler ça.
pour orienter le projecteur utilise les touches PAD8,PAD2,PAD4 et PAD6; les touches fléchées pour se déplacer dans l'espace et la souris pour s'orienter.
Le maniement du projecteur n'est pas génial tu verras en code commenté des tentatives d’améliorer la maniabilité)
De plus je n'utilise pas tes fichiers attachés pour représenter le projecteur. (la lampe c'est le tout petit cube)
Les autres commentaires dans le code ne sont que des résidus de tentatives vaines pour effectuer une orientation plus simple.
Code : Tout sélectionner
#CameraSpeed = 1
Enumeration
#Uentity = 0
#baseEntity
#BoxEntity
#RoomEntity
#P1Entity
#P2Entity
#P3Entity
EndEnumeration
Enumeration
#UMesh = 0
#BaseMesh
#BoxMesh
#RoomMesh
#P1Mesh
#P2Mesh
#P3Mesh
EndEnumeration
IncludeFile "Screen3DRequester.pb"
Define.f KeyX, KeyY, MouseX, MouseY, RollZ
If InitEngine3D()
Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
;Add3DArchive("Data/Models", #PB_3DArchive_FileSystem)
;Add3DArchive("Data/Packs/skybox.zip", #PB_3DArchive_Zip)
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
;LoadMesh(0, "robot.mesh")
CreateMaterial(1, LoadTexture(1, "clouds.jpg"))
;CreateMaterial(2, LoadTexture(2, "r2skin.jpg"))
;CreateEntity(1, MeshID(0), MaterialID(1), -30, 0, 0)
;CreateEntity(2, MeshID(0), MaterialID(2), 30, 0, 0)
CreateCube(#BaseMesh,10)
CreateCube(#UMesh,7)
CreateCube(#BoxMesh,4)
CreatePlane(#P1Mesh,50,50,75,75,1,1)
CreatePlane(#P2Mesh,50,50,75,75,1,1)
CreatePlane(#P3Mesh,50,50,75,75,1,1)
CreateEntity(#baseEntity,MeshID(#BaseMesh),#PB_Material_None,0,0,0)
CreateEntity(#Uentity,MeshID(#UMesh),#PB_Material_None,0,9,0)
CreateEntity(#BoxEntity,MeshID(#BoxMesh),#PB_Material_None,0,15,0)
CreateEntity(#P1Entity,MeshID(#P1Mesh),MaterialID(1),0,0,-25)
CreateEntity(#P2Entity,MeshID(#P2Mesh),MaterialID(1),25,0,0)
CreateEntity(#P3Entity,MeshID(#P3Mesh),MaterialID(1),0,25,0)
RotateEntity(#P1Entity,90,0,0,#PB_Absolute)
RotateEntity(#P2Entity,0,0,90,#PB_Absolute)
RotateEntity(#P3Entity,180,0,0,#PB_Absolute)
CreateLight(0,RGB(0,255,0),0,3,0,#PB_Light_Directional)
CreateCube(10,1)
CreateEntity(10,MeshID(10),#PB_Material_None,0,3,0)
AttachEntityObject(#BoxEntity,"",EntityID(10),0,0,0,0,0,0)
AttachEntityObject(#BoxEntity,"",LightID(0),0,0,0,0,0,0)
SkyBox("stevecube.jpg")
CreateCamera(0, 0, 0, 100, 100)
MoveCamera(0, 0, 10, 50, #PB_Absolute)
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
If KeyboardPushed(#PB_Key_Pad4)
RotateEntity(#Uentity, 0, -1, 0, #PB_Relative)
RotateEntity(#BoxEntity,0,-1,0,#PB_Relative)
ElseIf KeyboardPushed(#PB_Key_Pad6)
RotateEntity(#Uentity, 0, 1, 0, #PB_Relative)
RotateEntity(#BoxEntity,0,1,0,#PB_Relative)
EndIf
; If EntityYaw(#Uentity,#False)>88.9
; RotateEntity(#Uentity,0,-2,0,#PB_Relative)
; ElseIf EntityYaw(#Uentity,#False)<-88.9
; RotateEntity(#Uentity,0,2,0,#PB_Relative)
; EndIf
;
; If EntityPitch(#BoxEntity,#False)>88.9
; RotateEntity(#BoxEntity,-2,0,0,#PB_Relative)
; ElseIf EntityPitch(#BoxEntity,#False)<-88.9
; RotateEntity(#BoxEntity,2,0,0,#PB_Relative)
; EndIf
If KeyboardPushed(#PB_Key_Pad8)
RotateEntity(#BoxEntity, -1, 0, 0, #PB_Relative)
ElseIf KeyboardPushed(#PB_Key_Pad2)
RotateEntity(#BoxEntity, 1, 0, 0, #PB_Relative)
EndIf
;RotateEntity(#BoxEntity,EntityPitch(#BoxEntity,#False),EntityYaw(#BoxEntity,#False),EntityRoll(#BoxEntity,#False),#PB_Absolute)
;RotateEntity(#BoxEntity,0,EntityYaw(#Uentity,#True)-EntityYaw(#BoxEntity,#True),0,#PB_Relative)
;FetchOrientation(EntityID(#BoxEntity))
;LightDirection(0,GetX(),GetY(),GetZ())
;LightDirection(0,EntityPitch(#BoxEntity,#False),EntityYaw(#BoxEntity,#False),EntityRoll(#BoxEntity,#False))
If KeyboardReleased(#PB_Key_Pad0)
Debug LightDirectionX(0)
Debug LightDirectionY(0)
Debug LightDirectionZ(0)
Debug "================="
EndIf
RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
MoveCamera (0, 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
Place cette source dans le répertoire exemple/3D avant de faire ton Compile/Run.
En espérant que ça te soit utile, tout en étant conscient que c'est buggé.
Au revoir.