2 codes 3D similaires mais dont l'un plante

Généralités sur la programmation 3D
Avatar de l’utilisateur
SPH
Messages : 4944
Inscription : mer. 09/nov./2005 9:53

2 codes 3D similaires mais dont l'un plante

Message par SPH »

Salut,

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)
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...)

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)
Merci de m'éclairer... :idea: :oops:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
falsam
Messages : 7323
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: 2 codes 3D similaires mais dont l'un plante

Message par falsam »

Dans ton code tu cherches à créer 273 Mesh alors que ton tableau de mesh en contient 100.

Code : Tout sélectionner

For y=-6 To 6 ; 13 positions
  For x=-10 To 10 ; 21 position
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4944
Inscription : mer. 09/nov./2005 9:53

Re: 2 codes 3D similaires mais dont l'un plante

Message par SPH »

Roooo, tout se passe dans le define.
Merci de ton éclairage !

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Répondre