PureBasic 5.00 Beta 2 Exemples

Généralités sur la programmation 3D
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

PureBasic 5.00 Beta 2 Exemples

Message par G-Rom »

Voici quelques exemples d'utilisation de la nouvelle version purebasic :

Comtois
Moi

N'hésitez pas à rapporté vos bugs & remarques.
Un grand merci à Comtois qui à mis un grand coup de collier sur cette version.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: PureBasic 5.00 Beta 2 Exemples

Message par comtois »

Un exemple qui montre l'usage des commandes :
SetEntityAttribute(Sphere, #PB_Entity_MaxVelocity, 80) ; Pour limiter la vitesse de la boule
EntityLinearFactor(Sphere, 0.7, 0, 0.7) ; Pour que la boule reste sur le plateau et ne soit pas expédiée dans les étoiles (l'axe Y est à zéro)


(faudra que je trouve un autre exemple plus parlant que celui là !)

Code : Tout sélectionner

;
; ------------------------------------------------------------
;
;   PureBasic - Flipper
;
;    (c) 2011 - Fantaisie Software
;
; ------------------------------------------------------------
;

IncludeFile "Screen3DRequester.pb"

#PB_Entity_MaxVelocity = 10

#CameraSpeed = 1
#Nb = 30
Define.f KeyX, KeyY, MouseX, MouseY, Angle = 145
Dim Planche(#Nb)

If InitEngine3D()
  
  Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
  Add3DArchive("Data/Scripts",#PB_3DArchive_FileSystem)
  Add3DArchive("Data/Packs/desert.zip", #PB_3DArchive_Zip)
  Parse3DScripts()
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()
    
    
    WorldShadows(#PB_Shadow_Modulative)
    
    ;-Materials
    CreateMaterial(0, LoadTexture(0, "Wood.jpg"))
    GetScriptMaterial(1, "SphereMap/SphereMappedRustySteel")
    GetScriptMaterial(2, "Color/Blue")
    GetScriptMaterial(3, "Scene/GroundBlend")
    
    ;-Ground
    CreatePlane(0, 100, 100, 10, 10, 15, 15)
    CreateEntity(0,MeshID(0),MaterialID(3), 0, 0, 0)
    EntityRenderMode(0, 0) 
    EntityPhysicBody(0, #PB_Entity_BoxBody, 0, 0, 1)
    
    ;-Mesh
    CreateCube(1, 1.0)
    CreateSphere(2, 2, 30, 30)
    CreateCylinder(3, 2, 10)
    
    ;-Entity
    Sphere = CreateEntity(#PB_Any, MeshID(2), MaterialID(1), 21, 2.1, 0)
    EntityPhysicBody(Sphere, #PB_Entity_SphereBody, 0.5, 1, 1)
    EntityLinearFactor(Sphere, 0.7, 0, 0.7)
    
    ; Cadre
    BiaisD = CreateEntity(#PB_Any, MeshID(1), MaterialID(2), 20, 2, -40)
    ScaleEntity(BiaisD, 10, 4, 1)
    RotateEntity(BiaisD, 0, -45, 0)
    EntityPhysicBody(BiaisD, #PB_Entity_BoxBody, 0, 1, 1)
    Haut = CreateEntity(#PB_Any, MeshID(1), MaterialID(2), 0, 2, -45)
    ScaleEntity(Haut, 50, 4, 1)
    EntityPhysicBody(Haut, #PB_Entity_BoxBody, 0, 1, 1)
    Bas = CreateEntity(#PB_Any, MeshID(1), MaterialID(2), 0, 2, 45)
    ScaleEntity(Bas, 50, 4, 1)
    EntityPhysicBody(Bas, #PB_Entity_BoxBody, 0, 1.5, 1)
    Gauche = CreateEntity(#PB_Any, MeshID(1), MaterialID(2), -25, 2, 0)
    ScaleEntity(Gauche, 1, 4, 90)
    EntityPhysicBody(Gauche, #PB_Entity_BoxBody, 0, 1, 1)
    Droit = CreateEntity(#PB_Any, MeshID(1), MaterialID(2), 25, 2, 0)
    ScaleEntity(Droit, 1, 5, 90)
    EntityPhysicBody(Droit, #PB_Entity_BoxBody, 0, 1, 1)
    Couloir = CreateEntity(#PB_Any, MeshID(1), MaterialID(2), 17, 2, 10)
    ScaleEntity(Couloir, 1, 4, 70)
    EntityPhysicBody(Couloir, #PB_Entity_BoxBody, 0, 0.1, 1)
    
    ; Bumper
    Cylinder = CreateEntity(#PB_Any, MeshID(3), MaterialID(0), 0, 0, -16)
    EntityPhysicBody(Cylinder, #PB_Entity_CylinderBody, 0, 1.5, 1)  
    Cylinder = CreateEntity(#PB_Any, MeshID(3), MaterialID(0), 0, 0, 0)
    EntityPhysicBody(Cylinder, #PB_Entity_CylinderBody, 0, 1.5, 1)  
    Cylinder = CreateEntity(#PB_Any, MeshID(3), MaterialID(0), -8, 0, -8)
    EntityPhysicBody(Cylinder, #PB_Entity_CylinderBody, 0, 1.5, 1)  
    Cylinder = CreateEntity(#PB_Any, MeshID(3), MaterialID(0), 8, 0, -8)
    EntityPhysicBody(Cylinder, #PB_Entity_CylinderBody, 0, 1.5, 1)  
    Cylinder = CreateEntity(#PB_Any, MeshID(3), MaterialID(0), 0, 0, 32)
    EntityPhysicBody(Cylinder, #PB_Entity_CylinderBody, 0, 1.5, 1)     
    
    ;-Camera
    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0, 0, 35, 70)
    CameraLookAt(0, 0, 0, 10)
    
    ;-Skybox
    SkyBox("desert07.jpg")
    
    ;-Light
    CreateLight(0, RGB(255, 255, 255), 100, 800, -500)
    AmbientColor(RGB(20, 20, 20))
    
    Repeat
      Screen3DEvents()
      
      If ExamineMouse()
        MouseX = -MouseDeltaX() * #CameraSpeed * 0.05
        MouseY = -MouseDeltaY() * #CameraSpeed * 0.05
      EndIf
      
      If ExamineKeyboard()
        
        If KeyboardPushed(#PB_Key_Space)
          ApplyEntityImpulse(Sphere, 0, 0, -30)
        EndIf      
        If KeyboardPushed(#PB_Key_LeftShift)
          ApplyEntityImpulse(Sphere, 3, 0, 0)
        EndIf         
        If KeyboardPushed(#PB_Key_RightShift)
          ApplyEntityImpulse(Sphere, -3, 0, 0)
        EndIf   
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -#CameraSpeed
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = #CameraSpeed
        Else
          KeyX = 0
        EndIf
        
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -#CameraSpeed
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = #CameraSpeed
        Else
          KeyY = 0
        EndIf
        
      EndIf
      
      ApplyEntityImpulse(Sphere, 0, 0, 0.3)
      SetEntityAttribute(Sphere, #PB_Entity_MaxVelocity, 80)
      MoveCamera  (0, KeyX, 0, KeyY)
      RotateCamera(0,  MouseY, MouseX, 0, #PB_Relative)
      RenderWorld()
      Screen3DStats()
      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.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: PureBasic 5.00 Beta 2 Exemples

Message par blendman »

salut

J'ai commencé à tester tous les exemples, ils sont tops ! :D

J'ai voulu en mixant certains entre eux, mais je n'ai pas réussi, je ne sais pas si c'est possible.
J'ai voulu mixer :
- character.pb (comtois je crois)
- rustyball.pb (g-rom)

Et visiblement, comme je dois activer opengl, ça ne marche plus avec l'exemple de character.pb dommage pour moi ^^.

je vais faire d'autres tests :D.
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: PureBasic 5.00 Beta 2 Exemples

Message par G-Rom »

rustyball est adaptable en changeant les shaders, a l'époque , je l'ai codé sous linux , donc glsl, si tu taquines un peu hlsl , c'est convertible , surtout que le shader est facile.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: PureBasic 5.00 Beta 2 Exemples

Message par blendman »

G-rom, Rustyball tout seul fonctionne très bien chez moi. Le problème vient en fait de l'autre scène (character.pb).
J'ai un peut cherché et il est possible (mais pas sûr) que l'origine du problème soit la fonction Parse3DScripts() pour certaines de ces scènes. Mais avec d'autres scènes utilisant cette fonction, il n'y a aucun problème en opengl. Donc pas certain que ça vienne de là directement.

Voici les scènes qui posent problèmes (en opengl) :
- les scènes avec un terrain : le terrain bug (on voit une sorte plan vertical blanc à la place)
- les scènes avec createwater : ça se lance, mais le rendu est différent (pb lié au shader), c'est pas très grave, mais je le signale juste au cas où

Voici les scènes qui font un Crash du programme (en opengl) :
- les scènes avec animations (EA01-EntityAnimation.pb...)
- character.pb
- rotatelight.pb, lightattenuation.pb, lightdirection.pb
- les scenes avec entitybone
- WorldShadows.pb
- CreateRenderTexture.pb
- RayPick.pb, RayPick_LightDirection.pb
- SaveRenderTexture.pb

Ces scènes tournent-elle sous linux et mac malgré le fait qu'elles ne fonctionnent pas bien avec opengl ?

Voici l'erreur que j'ai en lançant certaines scènes avec opengl comme sous-system :
Image

Scènes qui fonctionnent parfaitement avec opengl (même avec Parse3DScripts())
- NA01-NodeAnimation.pb
- GetScriptParticle.pb
- FogMaterial.pb
- AttachNodeObject.pb
- CameraLookAt.pb
- CreateTexture.pb
- ReloadMaterial.pb, ResetMaterial.pb
- SplinePursuit.pb

voilà, j'espère que cela vous sera utile ;).

En tout cas, encore bravo parce que c'est vraiment top tout ça :mrgreen:
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: PureBasic 5.00 Beta 2 Exemples

Message par comtois »

Je n'ai pas ce problème en opengl avec les exemples que tu mentionnes (j'en ai testé une poignée).
Qu'est-ce qu'il y a dans ton Ogre.log ?

Par contre au bout d'un moment j'ai un plantage qui semble lié à la souris ? Mais je n'ai pas ton message.
Si j'ajoute la gestion de la souris par CEGUI alors je n'ai plus de plantage (test réalisé avec LightLookAt.pb qui se trouve dans le répertoire PureBasic\Examples\3D\)
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.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: PureBasic 5.00 Beta 2 Exemples

Message par blendman »

je viens de tester lightattenuation.pb, et ça plante avec le même message que l'image posté.
Voici le log d'ogre :

Code : Tout sélectionner

13:00:20: Creating resource group General
13:00:20: Creating resource group Internal
13:00:20: Creating resource group Autodetect
13:00:20: SceneManagerFactory for type 'DefaultSceneManager' registered.
13:00:20: Registering ResourceManager for type Material
13:00:20: Registering ResourceManager for type Mesh
13:00:20: Registering ResourceManager for type Skeleton
13:00:20: MovableObjectFactory for type 'ParticleSystem' registered.
13:00:20: OverlayElementFactory for type Panel registered.
13:00:20: OverlayElementFactory for type BorderPanel registered.
13:00:20: OverlayElementFactory for type TextArea registered.
13:00:20: Registering ResourceManager for type Font
13:00:20: ArchiveFactory for archive type FileSystem registered.
13:00:20: ArchiveFactory for archive type Zip registered.
13:00:20: ArchiveFactory for archive type EmbeddedZip registered.
13:00:20: DDS codec registering
13:00:20: FreeImage version: 3.10.0
13:00:20: This program uses FreeImage, a free, open source image library supporting all common bitmap formats. See http://freeimage.sourceforge.net for details
13:00:20: Supported formats: bmp,ico,jpg,jif,jpeg,jpe,koa,iff,lbm,pbm,pbm,pcd,pcx,pgm,pgm,png,ppm,ppm,ras,tga,targa,tif,tiff,wap,wbmp,wbm,psd,cut,xbm,xpm,dds,gif,g3,sgi,j2k,j2c,jp2
13:00:20: PVRTC codec registering
13:00:20: Registering ResourceManager for type HighLevelGpuProgram
13:00:20: Registering ResourceManager for type Compositor
13:00:20: MovableObjectFactory for type 'Entity' registered.
13:00:20: MovableObjectFactory for type 'Light' registered.
13:00:20: MovableObjectFactory for type 'BillboardSet' registered.
13:00:20: MovableObjectFactory for type 'ManualObject' registered.
13:00:20: MovableObjectFactory for type 'BillboardChain' registered.
13:00:20: MovableObjectFactory for type 'RibbonTrail' registered.
13:00:20: *-*-* OGRE Initialising
13:00:20: *-*-* Version 1.8.0 (Byatis)
13:00:20: D3D9 : Direct3D9 Rendering Subsystem created.
13:00:20: D3D9: Driver Detection Starts
13:00:20: D3D9: Driver Detection Ends
13:00:20: OpenGL Rendering Subsystem created.
13:00:20: Particle Emitter Type 'Point' registered
13:00:20: Particle Emitter Type 'Box' registered
13:00:20: Particle Emitter Type 'Ellipsoid' registered
13:00:20: Particle Emitter Type 'Cylinder' registered
13:00:20: Particle Emitter Type 'Ring' registered
13:00:20: Particle Emitter Type 'HollowEllipsoid' registered
13:00:20: Particle Affector Type 'LinearForce' registered
13:00:20: Particle Affector Type 'ColourFader' registered
13:00:20: Particle Affector Type 'ColourFader2' registered
13:00:20: Particle Affector Type 'ColourImage' registered
13:00:20: Particle Affector Type 'ColourInterpolator' registered
13:00:20: Particle Affector Type 'Scaler' registered
13:00:20: Particle Affector Type 'Rotator' registered
13:00:20: Particle Affector Type 'DirectionRandomiser' registered
13:00:20: Particle Affector Type 'DeflectorPlane' registered
13:00:20: PCZone Factory Type 'ZoneType_Default' registered
13:00:20: CPU Identifier & Features
13:00:20: -------------------------
13:00:20:  *   CPU ID: GenuineIntel: Intel(R) Core(TM)2 Quad  CPU   Q9550  @ 2.83GHz
13:00:20:  *      SSE: yes
13:00:20:  *     SSE2: yes
13:00:20:  *     SSE3: yes
13:00:20:  *      MMX: yes
13:00:20:  *   MMXEXT: yes
13:00:20:  *    3DNOW: no
13:00:20:  * 3DNOWEXT: no
13:00:20:  *     CMOV: yes
13:00:20:  *      TSC: yes
13:00:20:  *      FPU: yes
13:00:20:  *      PRO: yes
13:00:20:  *       HT: no
13:00:20: -------------------------
13:00:20: *** Starting Win32GL Subsystem ***
13:00:20: Registering ResourceManager for type Texture
13:00:20: SceneManagerFactory for type 'OctreeSceneManager' registered.
13:00:20: SceneManagerFactory for type 'BspSceneManager' registered.
13:00:20: Registering ResourceManager for type BspLevel
13:00:20: Added resource location './Data/Textures' of type 'FileSystem' to resource group 'General'
13:00:20: Added resource location './Data/Scripts' of type 'FileSystem' to resource group 'General'
13:00:20: Added resource location './Data/Packs/desert.zip' of type 'Zip' to resource group 'General'
13:00:20: Parsing scripts for resource group Autodetect
13:00:20: Finished parsing scripts for resource group Autodetect
13:00:20: Creating resources for group Autodetect
13:00:20: All done
13:00:20: Parsing scripts for resource group General
13:00:20: Parsing script Color.material
13:00:20: Parsing script CubeMap.material
13:00:20: Parsing script Earth.material
13:00:20: Parsing script Examples.material
13:00:20: Parsing script facial.material
13:00:20: Parsing script particle.material
13:00:20: Parsing script ReloadMaterial.material
13:00:20: Parsing script ResetMaterial.material
13:00:20: Parsing script Rusty.material
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: PureBasic 5.00 Beta 2 Exemples

Message par comtois »

ça s'arrête à cette ligne
13:00:20: Parsing script Rusty.material
C'est la fautive, vire ce script et ça devrait fonctionner.
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.
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: PureBasic 5.00 Beta 2 Exemples

Message par G-Rom »

Voici les scènes qui posent problèmes (en opengl) :
- les scènes avec un terrain : le terrain bug (on voit une sorte plan vertical blanc à la place)
- les scènes avec createwater : ça se lance, mais le rendu est différent (pb lié au shader), c'est pas très grave, mais je le signale juste au cas où
C'est "normal" , Ogre à les code hlsl en dur au seins de son code.
on n'a pas fait de conversion pour le moment. l'alternative via cg est envisagé par Fred, mais rien n'est encore fait à ce niveau.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: PureBasic 5.00 Beta 2 Exemples

Message par blendman »

Comtois : effectivement, ça marche comme ça.

G-rom : ah ok, je comprends. cela signifie que pour le moment, terrain et water ne marchent pas encore parfaitement sous linux/mac ?
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: PureBasic 5.00 Beta 2 Exemples

Message par Mesa »

Pour faire un retour sur les exemples fournis :
Sur une petite configuration, xp 32, carte graphique nvidia avec 128 Mo de ram, les exemples de Comtois fonctionnent très bien sauf cameraview qui a un affichage clignotant et pour les exemples de G-Rom, tout marche bien aussi sauf que c'est d'une grande lenteur avec ou sans débogueur. Probablement dû à la taille des images (?).

Mesa.
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: PureBasic 5.00 Beta 2 Exemples

Message par Cool Dji »

Hello,

Merci pour les apports de la 5.0 et les exemples !
Résultats un peu comme Mesa mais je n'ai pas encore testé sur mon portable du boulot (tout neuf i5).
Je prépare un point plus précis, en tous les cas Water =0k et la fonction terrain multiple c'est great

Bravo, bravo :D
Only PureBasic makes it possible
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: PureBasic 5.00 Beta 2 Exemples

Message par comtois »

Pensez aussi à tester les exemples de votre répertoire PureBasic\Examples\3D , ils sont tous à jour pour la 5.00 y compris Sound3D.pb.
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.
Répondre