PB 5.73 vs PB 6.01 Comportements 3D différents

Généralités sur la programmation 3D
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

PB 5.73 vs PB 6.01 Comportements 3D différents

Message par falsam »

Bonjour les codeurs.

Avec le code ci-dessous, j'affiche notre ami Sinbad.

Utilisation.
Pour faire évoluer Sinbad, vous pouvez utiliser les touche fléchées ou bien les touches QZSD habituellement utilisées.
Vous pouvez aussi utiliser la souris pour l'orienter à droite ou à gauche. La souris permet aussi de changer l'angle de vue verticale. La touche Esc permet de quitter ce test.

Les soucis rencontrés.
Le cône de lumière qui se déplace avec Sinbad est fluide avec PB 5.73. Ce qui n'est pas le cas avec PB 6.01.
La souris est inutilisable avec PB 5.73. Ce qui n'est pas le cas avec PB 6.01.

Pouvez vous tester ce code et me dire si vous rencontrez ces différences de comportement.

Code : Tout sélectionner

EnableExplicit

Enumeration
  #Mainform
EndEnumeration

; Fenetre principale 
Global Window, Event

; Sol
Global Ground, GroundMesh, GroundMat

; Player
Global Player, PlayerMesh, Rotation.f, PlayerSpeed.f, CurrentAnimation.s

; Camera
Global Camera, Hight.f = 3, Distance.f = -30

; Lumiere
Global Light

InitEngine3D() : InitKeyboard() : InitSprite() : InitMouse()

Window = OpenWindow(#PB_Any, 0, 0, 0, 0, "", #PB_Window_Maximize | #PB_Window_BorderLess)
OpenWindowedScreen(WindowID(Window),0, 0, WindowWidth(Window) , WindowHeight(Window))    

; Localisation des assets
Add3DArchive(#PB_Compiler_Home + "Examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "Examples/3D/Data/Packs/desert.zip", #PB_3DArchive_Zip)
Add3DArchive(#PB_Compiler_Home + "Examples/3D/Data/Packs/Sinbad.zip", #PB_3DArchive_Zip)
Parse3DScripts()

; Configuration du clavier
KeyboardMode(#PB_Keyboard_International | #PB_Keyboard_AllowSystemKeys)

; Ciel, lumiere et ombre 
SkyBox("desert07.jpg")

Light = CreateLight(#PB_Any, RGB(255, 255, 255), 0, 0, 0, #PB_Light_Spot)
SpotLightRange(Light, 30, 100, 1)
AmbientColor(0)

WorldShadows(#PB_Shadow_Additive, 100, RGB(255, 0, 0), 1024)

; Création du sol
GroundMesh = CreatePlane(#PB_Any, 2000, 2000, 200, 200, 200, 200)
GroundMat = CreateMaterial(#PB_Any, TextureID(LoadTexture(#PB_Any, "Dirt.jpg")))
Ground = CreateEntity(#PB_Any, MeshID(GroundMesh), MaterialID(GroundMat)) 
CreateEntityBody(Ground, #PB_Entity_StaticBody, 1, 1, 1)

; Player
PlayerMesh = LoadMesh(#PB_Any, "sinbad.mesh")
Player = CreateEntity(#PB_Any, MeshID(PlayerMesh), #PB_Material_None)
CreateEntityBody(Player, #PB_Entity_BoxBody, 0.1, 0, 0)
EntityAngularFactor(Player, 0, 1, 0)

; Camera 
Camera = CreateCamera(#PB_Any, 0, 0, 100, 100)
CameraBackColor(Camera, RGB(145, 182, 201))

; Loop
Repeat
  
  ; Evenements window
  Repeat
    Event  = WindowEvent()
    Select Event
      Case #PB_Event_CloseWindow
        End
    EndSelect
  Until Event = 0
  
  ; Evenements souris
  If ExamineMouse()
    ; Rotation du player
    Rotation = -MouseDeltaX() * 0.25   
    
    ; Hauteur de la camera 
    Hight + MouseDeltaY() * 0.1
    If Hight < -4
      Hight= -4
    EndIf    
    
    ; Distance de la caméra par rapport au player
    Distance + MouseWheel()
  EndIf
  
  ; Evenements claviers
  If ExamineKeyboard()
    If KeyboardPushed(#PB_Key_Left) Or KeyboardPushed(#PB_Key_Q) 
      Rotation = 0.5 
    ElseIf KeyboardPushed(#PB_Key_Right) Or KeyboardPushed(#PB_Key_D)
      Rotation = -0.5
    EndIf
    
    If KeyboardPushed(#PB_Key_Up) Or KeyboardPushed(#PB_Key_Z)
      PlayerSpeed = 15
      CurrentAnimation = "RunBase"
    ElseIf KeyboardPushed(#PB_Key_Down) Or KeyboardPushed(#PB_Key_S)
      PlayerSpeed = -15
      CurrentAnimation = "RunBase"
    Else
      PlayerSpeed = 0
      CurrentAnimation = "IdleTop"
    EndIf   
    
    If KeyboardPushed(#PB_Key_Escape)
      End
    EndIf
  EndIf
  
  ; Action joueur (Position, Rotation, Animation)
  RotateEntity(Player, 0, Rotation, 0, #PB_Relative) 
  MoveEntity(Player, 0, 0, PlayerSpeed, #PB_Absolute|#PB_Local) 
  
  If EntityAnimationStatus(Player, CurrentAnimation) = #PB_EntityAnimation_Stopped
    StartEntityAnimation(Player, CurrentAnimation)
  EndIf
  
  ; Action camera
  CameraFollow(Camera, EntityID(Player), 0, EntityY(Player) + Hight, Distance, 1, 1, #True)
  
  ; Action lumiere : 
  MoveLight(Light, EntityX(Player), 50, EntityZ(Player), #PB_Absolute)
  ;
  ; Rendering de la scene
  RenderWorld()
  FlipBuffers()  
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: PB 5.73 vs PB 6.1 Comportements 3D différents

Message par Marc56 »

Hello,

C'est fluide et la souris fonctionne dans les deux cas chez moi.

À noter que j'ai du désactiver Directx11 dans les option du compilateur sinon, écran blanc et message

Code : Tout sélectionner

[ERREUR] Ligne: 28
[ERREUR] InitEngine3D() doit être appelée avec succès avant d'utiliser le jeu de commandes 3D.
Pourtant InitEngine3D() est présent ligne 22 ?

PS. Je n'ai pas PB 6.1 au mieux PB 6.01 B3
:wink:
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: PB 5.73 vs PB 6.01 Comportements 3D différents

Message par blendman »

Salut

ici, sur pb5.73 (directX), ça fonctionne, la souris aussi. mais le perso flotte et n'est pas sur le sol.
pb5.73 opengl : c'st nickel (le perso est sur le sol, la souric est ok et la lumière aussi.

Avec pb 6.00, aucun soucis, c'est nickel (directX).

J'ai installé directx12 il y a 3 jours sur ce pc.
À noter que j'ai du désactiver Directx11 dans les option du compilateur sinon, écran blanc et message
tu as installer directX sur ta machine ?
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: PB 5.73 vs PB 6.01 Comportements 3D différents

Message par falsam »

Bonjour Marc. Merci pour ta réponse.
Marc56 a écrit : mar. 14/févr./2023 8:49 PS. Je n'ai pas PB 6.1 au mieux PB 6.01 B3
Manquait un 0. Monsieur est taquin :mrgreen:

Je n'ai pas activé de sous-système dans les options de compilation. Je pense d'ailleurs qu'il ne faut pas le faire avec cette dernière version de PureBasic.

Sur cette capture sous PB 5.73 le cône de lumière est fluide.
Image

Contrairement à cette capture sous PB 6.01.
Image

Configuration dans ma signature.
Configuration : Windows 11 Famille 64-bit - PB 6.03 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
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: PB 5.73 vs PB 6.01 Comportements 3D différents

Message par falsam »

Je n'avais pas vu ce petit détail !!! Sinbad a les pieds enfoncés dans le sol. Trop de cassoulet sans doute :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.03 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
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: PB 5.73 vs PB 6.01 Comportements 3D différents

Message par falsam »

Hello Blendman. Si j'active DirectX11 avec PB 5.73 J'ai un plantage lors de l'exécution. Je ne tiens pas à installer DirectX sur mon pc. La majorité des jeux récents sont OpenGL.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: PB 5.73 vs PB 6.01 Comportements 3D différents

Message par G-Rom »

Les 2 gifs animé du dessus n'utilise pas la même technique d'éclairage , a l'oeil , un fonctionne en pixel lighting, l'autre en vertex lighting , d'ou la nécessité dans le code de diviser en 200x200 le sol, en pixel lighting , comme l'éclairage se fait au pixel , pas besoin de divisé , contrairement au vertex lighting.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: PB 5.73 vs PB 6.01 Comportements 3D différents

Message par falsam »

G-Rom a écrit : ven. 17/févr./2023 16:38 d'ou la nécessité dans le code de diviser en 200x200 le sol, en pixel lighting
C'est le cas dans le code que j'ai proposé. Je n'aurais donc pas mieux !
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: PB 5.73 vs PB 6.01 Comportements 3D différents

Message par G-Rom »

falsam a écrit : ven. 17/févr./2023 16:57
G-Rom a écrit : ven. 17/févr./2023 16:38 d'ou la nécessité dans le code de diviser en 200x200 le sol, en pixel lighting
C'est le cas dans le code que j'ai proposé. Je n'aurais donc pas mieux !
je sais , c'est pour cela que je dis cela, essaye de ne pas divisé dans ton code ou tu vois que "c'est fluide" , si cela marche, c'est que c'est du pixel lighting , sinon du vertex lighting
Répondre