PureBasic

Forums PureBasic
Nous sommes le Lun 24/Juin/2019 18:33

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 
Auteur Message
 Sujet du message: 5000 Cubes
MessagePosté: Lun 05/Mar/2018 23:56 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6821
Localisation: IDF (Yvelines)
5000 Cubes texturés. Sur un pauvre i3 entrée de gamme, j'ai un affichage immédiat.
Code:
EnableExplicit

;Scene
Global Camera, Light

; Returns a random sign {-1, 1}
Macro RandomSign()
  ( Random(1)*2-1 )
EndMacro

;Summary
Declare GameLoad()
Declare RenderGame3D()
Declare RenderGame2D()
Declare Exit()

GameLoad()

Procedure GameLoad()
  Protected Window, n
   
  If InitEngine3D() And  InitKeyboard() And InitSprite() And InitMouse() And InitSound()
    Window = OpenWindow(#PB_Any, 0, 0, 0, 0, "", #PB_Window_Maximize | #PB_Window_BorderLess)
    SetWindowColor(Window, 0)
   
    ;-[Screen]
    OpenWindowedScreen(WindowID(Window),0, 0, WindowWidth(Window) , WindowHeight(Window))   
    KeyboardMode(#PB_Keyboard_International) 

    ;-[2D]
   
    ;-[3D]
    Add3DArchive(#PB_Compiler_Home + "Examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
       
    ;-Camera
    Camera = CreateCamera(#PB_Any, 0, 0, 100, 100)
    CameraBackColor(Camera, RGB(0, 0, 0))
    MoveCamera(Camera, 0, 0, -100)
    CameraLookAt(Camera, 0, 0, 0)
   
    ;-Light
    Light = CreateLight(#PB_Any, RGB(255, 255, 255), 0, 1000, 0, #PB_Light_Point)
    SetLightColor(Light, #PB_Light_SpecularColor, RGB(255, 255, 255))
    SetLightColor(Light, #PB_Light_DiffuseColor, RGB(255, 255, 255))
       
    ;Création de 5000 cubes
    CreateMaterial(0, TextureID(LoadTexture(-1, "glass_Dirt.png")))
    MaterialBlendingMode(0, #PB_Material_AlphaBlend)
    SetMaterialColor(0, #PB_Material_SpecularColor, RGB(255,255,255))
   
    CreateEntity(0, MeshID(CreateCube(-1, 8)), MaterialID(0))
    For n = 1 To 5000
       MoveEntity(CopyEntity(0, -1), Random(1000) * RandomSign(), Random(1000) * RandomSign(), Random(1000) * RandomSign())
    Next
   
    ;-Loop
    While #True
      Repeat : Until WindowEvent() = 0
      FlipBuffers() 
      RenderGame3D()
      RenderWorld()
      RenderGame2D()
    Wend
  Else
   
  EndIf
EndProcedure

Procedure RenderGame3D()
  RotateCamera(Camera, 0.1, 0.1, 0.1, #PB_Relative)
  If ExamineKeyboard()
    If KeyboardReleased(#PB_Key_Escape)
      Exit()
    EndIf 
  EndIf
 
  If ExamineMouse()
   
  EndIf
EndProcedure

Procedure RenderGame2D()
EndProcedure

Procedure Exit()
  End
EndProcedure

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Image to scene 3d - v2
MessagePosté: Mar 06/Mar/2018 0:18 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 1983
Merci ,je testerai ton code demain
Là je suis avec ma tablette (au pieu lol)

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Image to scene 3d - v2
MessagePosté: Mar 06/Mar/2018 0:25 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6821
Localisation: IDF (Yvelines)
Zorro a écrit:
Là je suis avec ma tablette (au pieu lol)
On ne veut pas connaitre les détails :mrgreen:

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Image to scene 3d - v2
MessagePosté: Mar 06/Mar/2018 8:27 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2137
Localisation: 50200 Coutances
Excellent falsam, j'ai été bluffé. Merci pour le partage.

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.62, 5.70 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Image to scene 3d - v2
MessagePosté: Mar 06/Mar/2018 10:47 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 1983
oui effectivement meme avec 50.000 cubes ça passe chez moi ....

je ne comprends pas d'ou viens le ralentissement dans l'autre code du coup ....

de toutes façons, je n'aime pas la 3D avec Purebasic
que ce soit le nom des commandes, la façon dont ça s'emboite....
bref, un je ne sais quoi qui ne me plait pas
trop compliqué tout ça , je dois etre trop vieux pour ses trucs :lol:

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Image to scene 3d - v2
MessagePosté: Mar 06/Mar/2018 10:53 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6821
Localisation: IDF (Yvelines)
Zorro a écrit:
oui effectivement meme avec 50.000 cubes ça passe chez moi ....

je ne comprends pas d'ou viens le ralentissement dans l'autre code du coup ....

de toutes façons, je n'aime pas la 3D avec Purebasic
que ce soit le nom des commandes, la façon dont ça s'emboite....
bref, un je ne sais quoi qui ne me plait pas
trop compliqué tout ça , je dois etre trop vieux pour ses trucs :lol:
Houuuuuuuu fais un effort et tu verras qu'on peut s'amuser avec Ogre3D

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: 5000 Cubes
MessagePosté: Mar 06/Mar/2018 11:30 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 25/Juin/2015 16:18
Messages: 257
et dans une staticgeometry tu fais *20

remplacer la boucle ligne 50 par:

Code:
    CreateStaticGeometry(0,1000,1000,1000,0)
    For n = 1 To 100000
       AddStaticGeometryEntity(0,EntityID(0), Random(1000) * RandomSign(), Random(1000) * RandomSign(), Random(1000) * RandomSign())
    Next
    BuildStaticGeometry(0)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: 5000 Cubes
MessagePosté: Mar 06/Mar/2018 20:48 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 05/Sep/2008 11:42
Messages: 1119
Localisation: Besançon
Vive la StaticGeometry(), chouette exemple Falsam !

Je suis sur un code où j'ai 40.000 spheres (36.000 pour les communes françaises et environ 4.000 pour les communes suisses) et ça passe bien. Par contre, quand je rajoute les 260.000 CreateLine3D() correspondant aux déplacements domicile-travail entre les communes, ça commence à ralentir un peu car je ne peux pas les passer en staticgeometry()...
Je pensais que le code dessous passait les Entity en Static mais si ensuite j'essaie de libérer les Entity, le compilateur m'indique que les Entity crées avec le mesch issu de Createline n'existent pas !

Code:
;CreateStaticGeometry(2,10000,10000,10000,#False)
 
For j=1 To 1000
   CreateLine3D(1000+j, 0, 0, 0, RGB(255, 255, 255), Random(10000)-5000, Random(10000)-5000, Random(10000)-5000, RGB(255, 255, 255))
   CreateEntity(1000+j, MeshID(1000+j), #PB_Material_None)
   AddStaticGeometryEntity(2,EntityID(1000+j),0,0,0)
Next

;BuildStaticGeometry(2)

For j=1 To 1000
   FreeEntity(1000+j) 
Next



Je vais repasser en 2D mais la gestion du déplacement et du zoom sur la carte était pratique avec la 3D...

_________________
Only PureBasic makes it possible


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: 5000 Cubes
MessagePosté: Mer 07/Mar/2018 12:26 
Hors ligne

Inscription: Mer 21/Jan/2004 17:48
Messages: 5161
Cool Dji a écrit:
quand je rajoute les 260.000 CreateLine3D() correspondant aux déplacements domicile-travail entre les communes, ça commence à ralentir un peu


Tu peux faire tes lignes dans un seul mesh (ou une poignée, je ne sais plus la capacité maxi) en utilisant :
CreateMesh(#PB_Any, #PB_Mesh_LineList, #PB_Mesh_Static)

Code:
#CameraSpeed = 1
#scale = 3

IncludeFile #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb"

Define.f KeyX, KeyY, MouseX, MouseY

If InitEngine3D()
 
  Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)
  Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/fonts", #PB_3DArchive_FileSystem)
  Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Scripts", #PB_3DArchive_FileSystem)
  Parse3DScripts()
 
  InitSprite()
  InitKeyboard()
  InitMouse()
 
  If Screen3DRequester()
   
    ;- Material
    CreateMaterial(0, LoadTexture(0, "White.jpg"))
    DisableMaterialLighting(0, #True)
   
    ;- Mesh Grid
    CreateMesh(3, #PB_Mesh_LineList, #PB_Mesh_Static)
    For i=0 To 1000
      MeshVertexPosition(Random(2000)-1000, 0, Random(2000)-1000)
      MeshVertexColor(RGB(Random(255),Random(255),Random(255)))
      MeshVertexPosition(Random(2000)-1000, 0,Random(2000)-1000)
      MeshVertexColor(RGB(Random(255),Random(255),Random(255)))
    Next

    FinishMesh(#False)
   
    SetMeshMaterial(3, MaterialID(0))
    Grid = CreateNode(#PB_Any, 0, 0, 0)
    AttachNodeObject(Grid, MeshID(3))
   
   
   
    ;-Camera
    CreateCamera(0, 0, 0, 100, 100)
    MoveCamera(0, 0, 40, 10, #PB_Absolute)
    CameraFOV(0, 40)
    CameraLookAt(0, NodeX(Grid),  NodeY(Grid),  NodeZ(Grid))
    CameraBackColor(0, RGB(0, 0, 40))
   
    ;-Light
    CreateLight(0, RGB(255,255,255), -10, 60, 10)
    AmbientColor(RGB(90, 90, 90))
   
    Repeat
      Screen3DEvents()
     
      ExamineKeyboard()
     
      RotateNode(Grid, 0.3, 0.3, 0.3, #PB_Relative)

      RenderWorld()
     
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
 
Else
  MessageRequester("Error", "The 3D Engine can't be initialized", 0)
EndIf

End

_________________
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: 5000 Cubes
MessagePosté: Mer 07/Mar/2018 16:34 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 05/Sep/2008 11:42
Messages: 1119
Localisation: Besançon
Ok, merci Comtois, je teste ce soir :D

Je n'ai pas été limité en nombre de mesch mais effectivement mettre plusieurs lignes (ou toutes) dans le même ça peut simplifier.

Falsam, c'est la dernière fois que je parasite ton topic :mrgreen:

_________________
Only PureBasic makes it possible


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: 5000 Cubes
MessagePosté: Mer 07/Mar/2018 16:51 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6821
Localisation: IDF (Yvelines)
Cool Dji a écrit:
Falsam, c'est la dernière fois que je parasite ton topic
Un parasite ? ou ça ? ^-^

Au contraire c'est instructif.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: 5000 Cubes
MessagePosté: Mer 07/Mar/2018 19:15 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 05/Sep/2008 11:42
Messages: 1119
Localisation: Besançon
Oui, la prop de Comtois est instructive.
Merci, c'est impec...ça va me permettre de garder le mode 3D :D

_________________
Only PureBasic makes it possible


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: 5000 Cubes
MessagePosté: Mar 03/Juil/2018 22:30 
Hors ligne

Inscription: Dim 01/Juil/2018 22:38
Messages: 28
trop impressionnant merci pour ton partage :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: 5000 Cubes
MessagePosté: Mer 04/Juil/2018 8:47 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 6623
Localisation: Isere
"J'avions" zappé :oops:
Merci pour le partage 8)

_________________
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye