j'ai voulu tester les ombres avec la lib , et curieusement ça fonctionne en mode plein écran , alors que je n'arrive pas à faire fonctionner l'exemple de Fred ? Je ne vois pas ce qu'il y a de différent entre les deux codes ?
Par contre je n'utilise pas le même paramètre que lui sinon la scène est rouge , encore un truc étrange
ou ajoutez un répertoire Robot avec les fichiers qui vont bien.
Code : Tout sélectionner
; Exemple No7b
; => M3D_RotateTexture()
; => M3D_SetFacetteHeight()
; => M3D_GetNormale()
; Comtois le 14/10/05
; Pb 3.94 avec la lib ogre 1.03 beta
;-Constantes
;/ Ecran
#ScreenWidth = 800
#ScreenHeight = 600
#ScreenDepth = 32
;/Matrix
#Matrix1 = 0
#Sphere1 = 1
#Sphere2 = 2
#Sphere3 = 3
#Robot = 4
;- Structures
Structure Camera
Angle.f
Distance.l
Hauteur.l
Mode.l
EndStructure
Structure Vecteur
x.f
y.f
z.f
EndStructure
Global camera.Camera ,Vp.Vecteur, Curseur.Vecteur,Hauteur.f,HeightMode.l
HeightMode=1 ; Facette=1 , Vertex=0
Hauteur=80.0
;{- Initialisation
If InitEngine3D() = 0
MessageRequester( "Erreur" , "Impossible d'initialiser la 3D , vérifiez la présence de engine3D.dll" , 0 )
End
ElseIf InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester( "Erreur" , "Impossible d'initialiser DirectX 7 Ou plus" , 0 )
End
ElseIf OpenScreen( #ScreenWidth , #ScreenHeight , #ScreenDepth , "M3D_Matrix3DV2" ) = 0
MessageRequester( "Erreur" , "Impossible d'ouvrir l'écran " , 0 )
End
EndIf
;}
Add3DArchive("\", #PB_3DArchive_FileSystem)
Add3DArchive("Robot\", #PB_3DArchive_FileSystem)
#PB_Shadow_None = 0
#PB_Shadow_Modulative = 1 ; Black shadow (fast)
#PB_Shadow_Additive = 2 ; Additive translucent shadow (more expensive with severl lights)
WorldShadows(#PB_Shadow_Modulative) ; Set the shadow mode for the world
LoadMesh (#Robot, "Robot.mesh")
LoadTexture(#Robot, "r2skin.jpg")
CreateEntity (#Robot, MeshID(#Robot), CreateMaterial(#Robot, TextureID(#Robot)))
EntityLocate(#Robot,150,80,150)
AnimateEntity(#Robot, "Walk")
;- Texture
LoadTexture(#Matrix1,"T16_64x64.png")
CreateTexture(#Sphere1,64,64)
StartDrawing(TextureOutput(#Sphere1))
Box(0,0,64,64,RGB(255,0,0))
StopDrawing()
;- Matière
CreateMaterial(#Matrix1, TextureID(#Matrix1))
CreateMaterial(#Sphere1, TextureID(#Sphere1))
;- Mesh
;Curseur
M3D_CreateMesh(#Sphere1,#M3D_Sphere)
;Matrix
M3D_CreateMeshMatrix(#Matrix1,300,300,7,7,1)
M3D_PrepareMatrixTexture(#Matrix1, #Matrix1, 4, 4)
For b = 0 To M3D_NbFacetteZ(#Matrix1)-1
For a = 0 To M3D_NbFacetteX(#Matrix1)-1
Read Texture
M3D_TextureFacette(#Matrix1, a, b, Texture)
Next a
Next b
M3D_SetFacetteHeight(#Matrix1, 3, 3, Hauteur)
M3D_NormalesMatrix(#Matrix1)
M3D_UpDateMatrix(#Matrix1)
;-Entity
; Matrix
CreateEntity(#Matrix1, MeshID(#Matrix1), MaterialID(#Matrix1))
EntityLocate(#Matrix1, 0, 0, 0)
EntityRenderMode(#Matrix1, 0)
; Curseur
For i=1 To 3
CreateEntity(i,MeshID(#Sphere1),MaterialID(#Sphere1))
ScaleEntity(i,i*10,i*10,i*10)
EntityRenderMode(i, 0)
Next i
;- Camera
CreateCamera(0, 0, 0 , 100 , 100)
CameraLocate(0, M3D_MatrixWidth(#Matrix1) / 2 , EntityY(#Matrix1) + 400, 450)
CameraLookAt(0, M3D_MatrixWidth(#Matrix1) / 2, EntityY(#Matrix1), M3D_MatrixWidth(#Matrix1) / 2)
;- Light
AmbientColor(RGB(45,45,45))
CreateLight(0,RGB(255,255,255))
Repeat
ClearScreen(0,0,0)
If ExamineKeyboard()
If KeyboardReleased(#PB_Key_F2)
HeightMode=1-HeightMode
If HeightMode
If Curseur\x>=M3D_NbFacetteX(#Matrix1)
Curseur\x=M3D_NbFacetteX(#Matrix1)-1
EndIf
If Curseur\z>=M3D_NbFacetteZ(#Matrix1)
Curseur\z=M3D_NbFacetteZ(#Matrix1)-1
EndIf
EndIf
EndIf
If KeyboardPushed(#PB_Key_LeftAlt) Or KeyboardPushed(#PB_Key_RightAlt)
If HeightMode
x.f=(Curseur\x + 0.5 * HeightMode) * M3D_FacetteWidth(#Matrix1)
z.f=(Curseur\z + 0.5 * HeightMode) * M3D_FacetteHeight(#Matrix1)
y.f=M3D_GetGroundHeight(#Matrix1,x,z)
Else
y.f=M3D_GetVertexHeight(#Matrix1,Curseur\x,Curseur\z)
EndIf
If KeyboardReleased(#PB_Key_Left) And Curseur\x>0
Curseur\x - 1
ElseIf KeyboardReleased(#PB_Key_Right) And Curseur\x<M3D_NbFacetteX(#Matrix1)-HeightMode
Curseur\x + 1
ElseIf KeyboardReleased(#PB_Key_Down) And Curseur\z<M3D_NbFacetteZ(#Matrix1)-HeightMode
Curseur\z + 1
ElseIf KeyboardReleased(#PB_Key_Up) And Curseur\z>0
Curseur\z - 1
EndIf
If HeightMode
M3D_SetFacetteHeight(#Matrix1,Curseur\x,Curseur\z,y)
Else
M3D_SetVertexHeight(#Matrix1,Curseur\x,Curseur\z,y)
EndIf
M3D_UpDateMatrix(#Matrix1)
M3D_NormalesMatrix(#Matrix1)
EndIf
If KeyboardReleased(#PB_Key_Left) And Curseur\x>0
Curseur\x - 1
ElseIf KeyboardReleased(#PB_Key_Right) And Curseur\x<M3D_NbFacetteX(#Matrix1)-HeightMode
Curseur\x + 1
ElseIf KeyboardReleased(#PB_Key_Down) And Curseur\z<M3D_NbFacetteZ(#Matrix1)-HeightMode
Curseur\z + 1
ElseIf KeyboardReleased(#PB_Key_Up) And Curseur\z>0
Curseur\z - 1
ElseIf KeyboardReleased(#PB_Key_LeftControl) And HeightMode
M3D_RotateTexture(#Matrix1,Curseur\x,Curseur\z,#M3D_LeftRotate)
M3D_UpDateMatrix(#Matrix1)
ElseIf KeyboardReleased(#PB_Key_RightControl) And HeightMode
M3D_RotateTexture(#Matrix1,Curseur\x,Curseur\z,#M3D_RightRotate)
M3D_UpDateMatrix(#Matrix1)
EndIf
x.f=(Curseur\x + 0.5 * HeightMode) * M3D_FacetteWidth(#Matrix1)
z.f=(Curseur\z + 0.5 * HeightMode) * M3D_FacetteHeight(#Matrix1)
If HeightMode
y.f=M3D_GetGroundHeight(#Matrix1,x,z)
M3D_GetNormale(#Matrix1, x, z,@Vp)
Else
y.f=M3D_GetVertexHeight(#Matrix1,Curseur\x,Curseur\z)
Vp\x=0
Vp\y=1
Vp\z=0
EndIf
If KeyboardPushed(#PB_Key_LeftShift)
Hauteur = y + 2
If HeightMode
M3D_SetFacetteHeight(#Matrix1,Curseur\x,Curseur\z,Hauteur)
Else
M3D_SetVertexHeight(#Matrix1,Curseur\x,Curseur\z,Hauteur)
EndIf
M3D_UpDateMatrix(#Matrix1)
M3D_NormalesMatrix(#Matrix1)
ElseIf KeyboardPushed(#PB_Key_RightShift)
Hauteur = y - 2
If HeightMode
M3D_SetFacetteHeight(#Matrix1,Curseur\x,Curseur\z,Hauteur)
Else
M3D_SetVertexHeight(#Matrix1,Curseur\x,Curseur\z,Hauteur)
EndIf
M3D_UpDateMatrix(#Matrix1)
M3D_NormalesMatrix(#Matrix1)
EndIf
If KeyboardReleased(#PB_Key_F1)
Camera\Mode = #PB_Camera_Wireframe - Camera\Mode
CameraRenderMode(0,Camera\Mode)
EndIf
EndIf
For i=#Sphere1 To #Sphere3
EntityLocate(i,x + Vp\x * i*i*5, y + Vp\y * i*i*5, z + Vp\z * i*i*5)
Next i
LightLocate(0,EntityX(3) , EntityY(3) + 35, EntityZ(3))
EntityLocate(#Robot,150,M3D_GetGroundHeight(#Matrix1,150,150),150)
RotateEntity(#Robot,0.3,0,0)
RenderWorld()
;Aide
StartDrawing(ScreenOutput())
FrontColor(255,255,255)
DrawingMode(1)
Locate(10,0)
DrawText("Use Arrow key = Move cursor ")
Locate(10,20)
DrawText("Use LeftControl And RightControl = Rotate Texture ")
Locate(10,40)
DrawText("Use LeftShift And RightShift = Height Facette/Vertex ")
Locate(10,60)
DrawText("Use LeftAlt And RightAlt And Arrow key = Height Facette/Vertex ")
Locate(10,80)
DrawText("[F1] Camera")
Locate(10,100)
DrawText("[F2] Mode Facette/Vertex")
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End
DataSection
Data.l 5,5,5,5,5,5,5
Data.l 5,1,1,1,1,1,5
Data.l 5,1,6,6,6,1,5
Data.l 5,1,6,14,6,1,5
Data.l 5,1,6,6,6,1,5
Data.l 5,1,1,1,1,1,5
Data.l 5,5,5,5,5,5,5
EndDataSection