Page 1 sur 1

[MAJ] Histoire d'eau (code et exe inclus)

Publié : sam. 08/nov./2008 18:55
par djes
Voici un petit test sur la nouvelle "fonctionnalité" permettant d'afficher un océan.

C'est ici : http://djes.free.fr/purebasic/water_example.zip

Edit: j'ai modifié le cube pour qu'il n'utilise plus les shaders et soit texturé de façon "normale" (UV), et j'ai enlevé l'antialiasing pour que ça ne rame pas sur les anciennes machines.

Publié : sam. 08/nov./2008 20:22
par tmyke
Vraiment belle effet, belle intégration, et beau boulot.
:wink:

Publié : sam. 08/nov./2008 22:30
par Anonyme

Code : Tout sélectionner

22:28:50: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at OgreGpuProgram.cpp (line 1079)
Tu n'y pourras pas grand chose a mon avis.
sinon , sans l'eau , je vois bien le cube texturé avec le logo.

Publié : sam. 08/nov./2008 23:16
par djes
C'est l'eau qui donne ça sous Linux? Damn!

Publié : sam. 08/nov./2008 23:42
par Anonyme
vi :?

Publié : dim. 09/nov./2008 1:08
par Le Soldat Inconnu
Whaou, c'est extra :)

Publié : dim. 09/nov./2008 12:22
par djes
Cpl.Bator a écrit :vi :?
Et l'exemple GUI, il fonctionne?

Publié : sam. 20/déc./2008 21:22
par Fig
Très impressionnant ! 8O

Publié : ven. 23/janv./2009 17:49
par beauregard
"dis, çà fait quoi d'être sur un radeau ?"

Code : Tout sélectionner

;
; ------------------------------------------------------------
;
;   PureBasic - Water example
; 
;    (c) 2008 - djes (http://djes.free.fr)
;     & beauregard-Toulouse-2009
; ------------------------------------------------------------
;

IncludeFile "Screen3DRequester.pb"

Define.f KeyX, KeyY, MouseX, MouseY

If InitEngine3D()

  Add3DArchive("test1\", #PB_3DArchive_FileSystem  )
  Add3DArchive("Water", #PB_3DArchive_FileSystem) 
   
  InitSprite()
  InitKeyboard()
  InitMouse()

  If Screen3DRequester()
    
    refresh_rate.l  =  60

    SetRefreshRate(refresh_rate)
    SetFrameRate(refresh_rate)

    Parse3DScripts()

    AntialiasingMode(#PB_AntialiasingMode_x2);4)

    LoadMesh   (1 , "cube.mesh")
    CreateEntity(1,   MeshID(1),  #PB_Material_None)
    ScaleEntity(1, 100, 100, 100)

;- hum1
naufrageT.b
naufrageY.f
camnauZ.f
mmh.f

     ;--- Camera

    ;Little computation to convert our pixels window to the % ogre
    level_min_x  = 0
    level_min_y  = 0
    level_max_x  = 1024
    level_max_y  = 768
    level_width  = level_max_y - level_min_y
    CreateCamera(0, (level_min_x * 100) / ScreenWidth, (level_min_y * 100) / ScreenHeight, (level_width * 100) / ScreenWidth, (level_width * 100) / ScreenWidth)

    cam_x.f = 0
    cam_y.f = 0
    cam_z.f = 4000
    CameraLocate(0, cam_x, cam_y, cam_z)
    CameraBackColor(0, RGB(100, 100, 255))
    CameraRange (0, 1, 100000)

MoveCamera(0, 0, 10, 0)

    ;--- Environment
;    AmbientColor(RGB(200, 200, 255))  
;    CreateWater(0, 0, 0, 0, 300,  #PB_World_WaterMediumQuality |  #PB_World_WaterCaustics | #PB_World_WaterSmooth |  #PB_World_WaterFoam | #PB_World_WaterSun)   
    CreateWater(0, 0, 0, 0, 300,  #PB_World_WaterHighQuality  |  #PB_World_WaterCaustics | #PB_World_WaterSmooth |  #PB_World_WaterFoam | #PB_World_WaterSun) 
    Sun(000, 100000, -10000000, RGB(1*255, 0.4*255, 0.1*255))    
    SkyBox("Skywarp.png")

Fog(RGB(165, 220, 245), 0.001, 10, 1000*7)                                               

    Repeat

      Screen3DEvents()
      
      ClearScreen(RGB(0, 0, 0))
                 
;- hum2      
      naufrageT+1 ; c'est cool voyez, la mer, les vagues tout çà... voyez...
      If naufrageT>42:naufrageT=1:EndIf

      If naufrageT>0 And naufrageT<7:naufrageY+1:camnauZ+0.1:EndIf; 1 à 6
      If naufrageT>6 And naufrageT<13:naufrageY+2:camnauZ+0.2:EndIf; 7 à 12
      If naufrageT>12 And naufrageT<19:naufrageY+1:camnauZ+0.1:EndIf; 13 à 18
; 19 à 24
      If naufrageT>24 And naufrageT<31:naufrageY-1:camnauZ-0.1:EndIf; 25 à 30
      If naufrageT>30 And naufrageT<37:naufrageY-2:camnauZ-0.2:EndIf; 31 à 36
      If naufrageT>36 And naufrageT<43:naufrageY-1:camnauZ-0.1:EndIf; 37 à 42


      If i.f<5000:i.f+2:EndIf

      If i.f>4750 And naufrageY<150
        naufrageY+1
      EndIf
   
      If naufrageY<150
        EntityLocate(1, 0, -25+naufrageY, -1500+i.f)
      EndIf
      If naufrageY>149
        EntityLocate(1, 0, -25+150, -1500+i.f)
        mmh+0.2
        If mmh>359:mmh=0:EndIf
        RotateEntity(1, 0, mmh, 0 )
      EndIf              
    
      
  ;    CameraLocate(0, 2500 + (1 + Sin(i / 2)) * 5000 * Sin(i * 0.4), 2510 + 2500 * Sin(i), 2500 + (1 + Sin(i / 2)) * 5000 * Cos(i * 0.4))
      CameraLookAt(0, 0, 0, 0)
      ;CameraLocate(0, cam_x, cam_y+naufrageY, cam_z)
      RotateCamera(0, 0, 0, -2.5+camnauZ) ; gare au mal de mer, beurp !
         
      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

Publié : sam. 24/janv./2009 14:26
par djes
Là je peux pas voir, mais ça doit être sympa :)
Tu peux modifier l'entête pour mettre ton nom aussi ;)

Publié : sam. 24/janv./2009 17:03
par Patrick88
vu comme ça le code ogre est bien plus facile que opengl... :D

pat

Publié : sam. 24/janv./2009 23:50
par Ar-S
Excellent messieurs !
Chose étrange, dans le code radeau, l'image se fige, mais uniquement si on fait un coup de molette de souris vers le bas 8O

Publié : dim. 25/janv./2009 0:30
par beauregard
merci les amis ! :)
Ar-S a écrit :Excellent messieurs !
Chose étrange, dans le code radeau, l'image se fige, mais uniquement si on fait un coup de molette de souris vers le bas 8O
étrange phénomène que cette molette capricieuse... une hallucination du à la grande soif sûrement ;)

Re:

Publié : lun. 19/oct./2009 23:50
par beauregard
Ar-S a écrit :Excellent messieurs !
Chose étrange, dans le code radeau, l'image se fige, mais uniquement si on fait un coup de molette de souris vers le bas 8O
je me remet en douceur à la 3D, et effectivement , en appuyant sur bouton 3(molette), on met en pause le programme... un mise à jour pour la 4.40 se fera sentir pour continuer de rêver au bord de l'eau...

Re: [MAJ] Histoire d'eau (code et exe inclus)

Publié : mer. 23/déc./2009 14:01
par Cool Dji
Yaouh !

Je découvre la 3D depuis quelques jours et ça me passionne.
Certes, je mesure l'immensité du pas qu'il me reste à franchir pour parvenir à faire ce dont j'ai envie mais la combinaison PB + Ogre a l'air bien interressante...

Merci Djes pour cet exemple et beauregard pour le complément !!