Page 1 sur 1

PureBasic 5.00 Beta 2 Exemples

Publié : ven. 31/août/2012 11:57
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.

Re: PureBasic 5.00 Beta 2 Exemples

Publié : ven. 31/août/2012 18:05
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

Re: PureBasic 5.00 Beta 2 Exemples

Publié : ven. 31/août/2012 18:56
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.

Re: PureBasic 5.00 Beta 2 Exemples

Publié : ven. 31/août/2012 19:12
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.

Re: PureBasic 5.00 Beta 2 Exemples

Publié : sam. 01/sept./2012 8:26
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:

Re: PureBasic 5.00 Beta 2 Exemples

Publié : sam. 01/sept./2012 11:00
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\)

Re: PureBasic 5.00 Beta 2 Exemples

Publié : sam. 01/sept./2012 12:01
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

Re: PureBasic 5.00 Beta 2 Exemples

Publié : sam. 01/sept./2012 12:20
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.

Re: PureBasic 5.00 Beta 2 Exemples

Publié : sam. 01/sept./2012 17:31
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.

Re: PureBasic 5.00 Beta 2 Exemples

Publié : dim. 02/sept./2012 14:56
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 ?

Re: PureBasic 5.00 Beta 2 Exemples

Publié : lun. 03/sept./2012 15:51
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.

Re: PureBasic 5.00 Beta 2 Exemples

Publié : lun. 03/sept./2012 18:49
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

Re: PureBasic 5.00 Beta 2 Exemples

Publié : mar. 04/sept./2012 5:24
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.