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

Généralités sur la programmation 3D
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

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

Message 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.
Dernière modification par djes le lun. 10/nov./2008 1:51, modifié 1 fois.
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Vraiment belle effet, belle intégration, et beau boulot.
:wink:
Force et sagesse...
Anonyme

Message 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.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

C'est l'eau qui donne ça sous Linux? Damn!
Anonyme

Message par Anonyme »

vi :?
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Whaou, c'est extra :)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Cpl.Bator a écrit :vi :?
Et l'exemple GUI, il fonctionne?
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Message par Fig »

Très impressionnant ! 8O
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message 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
Dernière modification par beauregard le dim. 25/janv./2009 0:32, modifié 1 fois.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Là je peux pas voir, mais ça doit être sympa :)
Tu peux modifier l'entête pour mettre ton nom aussi ;)
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

vu comme ça le code ogre est bien plus facile que opengl... :D

pat
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message 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
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message 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 ;)
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Re:

Message 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...
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

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

Message 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 !!
Only PureBasic makes it possible
Répondre