2 codes 3D similaires mais dont l'un plante
Publié : mar. 28/mars/2023 21:51
Salut,
Je me met à la 3D.
Voici un code qui fonctionne parfaitement. Il est simple et facile à comprendre :
Ce code qui lui est très similaire mais avec une autre approche plante (en tout cas, sur mon ordinateur) ! Pourquoi ??
(peut être que les x et y de MoveEntity(entity(i), x, y, 0) n'aiment pas les nombres négatifs...)
Merci de m'éclairer...

Je me met à la 3D.
Voici un code qui fonctionne parfaitement. Il est simple et facile à comprendre :
Code : Tout sélectionner
EnableExplicit
Define Dim camera(100),Dim light(100),Dim mesh(100),Dim material(100),Dim entity(100)
; Define camera, light, mesh, material, entity
; Define camera2, light2, mesh2, material2, entity2
Define xx.f, yy.f, zz.f, xx2.f, yy2.f, zz2.f
; Define Dim create.l(100)
Define i.l,u.l,n.l,x.l,y.l
Define b.b
Declare CreateSquare(Mesh, Size.f)
ExamineDesktops()
InitEngine3D(#PB_Engine3D_DebugLog) : InitSprite() : InitKeyboard() : InitMouse()
OpenScreen(DesktopWidth(0), DesktopHeight(0), 32, "3D de base")
Add3DArchive(#PB_Compiler_Home + "examples\3D\Data\Textures", #PB_3DArchive_FileSystem)
; Camera
camera(0) = CreateCamera(#PB_Any, 0, 0, 100, 100)
MoveCamera(camera(0), 0, 0, 20)
CameraLookAt(camera(0), 0, 0, 0)
; Si pas de ciel, couleur de fond
CameraBackColor(camera(0), RGB(184, 134, 11))
; Lumiere
light(0) = CreateLight(#PB_Any, RGB(255, 255, 255), -100, 100, 0)
;;;;;;;;;;;;
For i=0 To 100
mesh(i) = CreateCube(#PB_Any, 1)
material(i) = CreateMaterial(#PB_Any, TextureID(LoadTexture(#PB_Any, "caisse.png")))
entity(i) = CreateEntity(#PB_Any, MeshID(mesh(i)), MaterialID(material(i)))
; On redimentionne le cube.
ScaleEntity(entity(i), 1, 1, 0.1)
MoveEntity(entity(i), Random(20)-10, Random(12)-6, 0)
Next
;;;;;;;;;;;
Repeat
ExamineKeyboard()
ExamineMouse()
RenderWorld()
FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape) Or MouseButton(#PB_MouseButton_Middle)
(peut être que les x et y de MoveEntity(entity(i), x, y, 0) n'aiment pas les nombres négatifs...)
Code : Tout sélectionner
EnableExplicit
Define Dim camera(100),Dim light(100),Dim mesh(100),Dim material(100),Dim entity(100)
; Define camera, light, mesh, material, entity
; Define camera2, light2, mesh2, material2, entity2
Define xx.f, yy.f, zz.f, xx2.f, yy2.f, zz2.f
; Define Dim create.l(100)
Define i.l,u.l,n.l,x.l,y.l
Define b.b
Declare CreateSquare(Mesh, Size.f)
ExamineDesktops()
InitEngine3D(#PB_Engine3D_DebugLog) : InitSprite() : InitKeyboard() : InitMouse()
OpenScreen(DesktopWidth(0), DesktopHeight(0), 32, "3D de base")
Add3DArchive(#PB_Compiler_Home + "examples\3D\Data\Textures", #PB_3DArchive_FileSystem)
; Camera
camera(0) = CreateCamera(#PB_Any, 0, 0, 100, 100)
MoveCamera(camera(0), 0, 0, 20)
CameraLookAt(camera(0), 0, 0, 0)
; Si pas de ciel, couleur de fond
CameraBackColor(camera(0), RGB(184, 134, 11))
; Lumiere
light(0) = CreateLight(#PB_Any, RGB(255, 255, 255), -100, 100, 0)
;;;;;;;;;;;
i=0
For y=-6 To 6
For x=-10 To 10
If Random(1)>0
mesh(i) = CreateCube(#PB_Any, 1)
material(i) = CreateMaterial(#PB_Any, TextureID(LoadTexture(#PB_Any, "caisse.png")))
entity(i) = CreateEntity(#PB_Any, MeshID(mesh(i)), MaterialID(material(i)))
; On redimentionne le cube.
ScaleEntity(entity(i), 1, 1, 0.1)
MoveEntity(entity(i), x, y, 0)
i+1
EndIf
Next
Next
Repeat
ExamineKeyboard()
ExamineMouse()
RenderWorld()
FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape) Or MouseButton(#PB_MouseButton_Middle)

