CreateWater()

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Rokur
Beiträge: 167
Registriert: 29.12.2005 09:58
Computerausstattung: Intel Core2 Quad (4x2,4 GHz), 4096 MB RAM, GForce 8800GTX 786 MB
Windows XP 32 Bit, PureBasic 4.40 (x86)

CreateWater()

Beitrag von Rokur »

Hat von euch schonmal jemand CreateWater() erfolgreich verwendet?
Die Hilfe dazu ist leider etwas dürftig und Beispiel gibts auch keins in der Hilfe.
WinXP 32 Bit, PureBasic 4.40 (x86)
Benutzeravatar
grapy
Beiträge: 108
Registriert: 09.09.2004 09:05

Re: CreateWater()

Beitrag von grapy »

Das würde mich auch interessieren.
Alle bisherigen Versuche endeten in blauen oder weissen
Flächen die sich zwar wellenartig bewegen aber keinesfalls
wie Wasser aussehen.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: CreateWater()

Beitrag von DarkDragon »

Leider kann ich es euch nicht raussuchen, weil die Suchfunktion in beiden Foren einigermaßen streikt (Sie findet das PureBasic 4.31 beta 1 Announcement nichtmehr). Da war ein Beispielquelltext drin, aber ich habe auch schon mit dem Wasser experimentiert und da gibts noch Probleme, doch ich kann die Ursache nicht genau finden und ich kann die Probleme auch nicht gut fixieren, sonst hätte ich schon längst einen weiteren Bugreport geschrieben. Manchmal muss man auch negative Werte eingeben damit das Wasser transparent wird.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Re: CreateWater()

Beitrag von jojo1541 »

hmm, solange man ein Licht(z.B Sun) hat, dass darauf scheint, erkennt man das Wasser, hier mal ein mini-test, den ich iwan mal gemacht hab, um in die 3d-lib von pb reinzufinden:

Code: Alles auswählen

InitEngine3D()
InitSprite()
InitMouse()
InitKeyboard()

#cameraspeed = 1

Add3DArchive("data\",#PB_3DArchive_FileSystem)

OpenScreen(1280,1024,32,"test")

LoadTexture(0,"clouds.jpg")

SkyDome("clouds.jpg",50)



AmbientColor(RGB(100,20,0))

CreateMaterial(0, LoadTexture(0, "r2skin.jpg"))
CreateEntity  (0, LoadMesh(0, "robot.mesh"), MaterialID(0) ,100, 200, 300)

CreateCamera(0,0,0,100,100)
CameraLocate(0,100,200,300)
CreateCamera(1,80,80,20,20)
CameraLocate(1,100,200,300)
Sun(100,100,200,RGB(234, 205, 21))
CreateWater(0,200,200,400,100,#PB_World_WaterHighQuality|#PB_World_WaterCaustics|#PB_World_WaterSmooth|#PB_World_WaterFoam|#PB_World_WaterSun)
Fog(RGB(200,200,200),100,200,400)
AnimateEntity(0,"Walk")


Repeat
  
  ExamineMouse()
  ExamineKeyboard()
  
  ClearScreen(0)
  
  camerax = (MouseDeltaY()/5) * (-1)
  cameray = (MouseDeltaX()/5) * (-1)
  
  If KeyboardPushed(#PB_Key_Up)
    movey - #cameraspeed
  ElseIf KeyboardPushed(#PB_Key_Down)
    movey + #cameraspeed
  Else
    movey = 0
  EndIf
  
  
  If KeyboardPushed(#PB_Key_Left)
    movex - #cameraspeed
  ElseIf KeyboardPushed(#PB_Key_Right)
    movex + #cameraspeed
  Else
    movex = 0
  EndIf
  
  
  RotateCamera(0,camerax,cameray,cameraz,#PB_Relative)
  MoveCamera(0,movex,0,movey)
  

  
  
  RenderWorld()
  
 
  
  FlipBuffers()

Until GetAsyncKeyState_(#VK_ESCAPE)
Was m ich interessieren würde, ist, was "Welteinheiten" sind...
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: CreateWater()

Beitrag von DarkDragon »

Welteinheiten ist halt die Einheit in deiner Welt. Je nach größe deiner anderen Modelle musst du dann diese Einheit definieren.

Angenommen du hast nen Maßstab 1m:1 (Echt:Virtuell) dann ist die echte Einheit 1m in der virtuellen Welt 1.0.
Bei einem Maßstab von 1m:5 (Echt:Virtuell) ist die echte Einheit 1m in der virtuellen Welt 5.0.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Re: CreateWater()

Beitrag von Thalius »

habs in meiner Sammlung gefunden:

Waterr example ist unter GUI.pb mit Texturen etc.
Hier:
http://www.anwesend.ch/meckardt/pb/Ogre1.6.zip

Cheers,
Thalius
"...smoking hash-tables until until you run out of memory." :P
Benutzeravatar
grapy
Beiträge: 108
Registriert: 09.09.2004 09:05

Re: CreateWater()

Beitrag von grapy »

leider hat das dieses Wasser mit den Orginal Ogre Demos nix gemein.

Aber mal was anderes, ist es eigentlich bekannt das TextureOutput() nicht mehr da ist?
Ich hab das früher mal öfters verwendet und bin beim Ausgraben meiner uralten 3D Schätzchen
darauf gestossen.

OK, wenn "Suchen" funktioneren würde hätte ich auch danach gesucht ^^
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: CreateWater()

Beitrag von DarkDragon »

grapy hat geschrieben:leider hat das dieses Wasser mit den OgreDemos nix gemein.

Aber mal was anderes, ist es eigentlich bekannt das TextureOutput() nicht mehr da ist?
Ich hab das früher mal öfters verwendet und bin beim Ausgraben meiner uralten 3D Schätzchen
darauf gestossen OK, wenn "Suchen" funktioneren würde hätte ich auch danach gesucht ^^
Ja das ist bekannt.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: CreateWater()

Beitrag von mk-soft »

Bei LoadTexture(0,"clouds.jpg") kommt bei mir IMA :(
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Rokur
Beiträge: 167
Registriert: 29.12.2005 09:58
Computerausstattung: Intel Core2 Quad (4x2,4 GHz), 4096 MB RAM, GForce 8800GTX 786 MB
Windows XP 32 Bit, PureBasic 4.40 (x86)

Re: CreateWater()

Beitrag von Rokur »

Hm beim Testen sind mir folgende Dinge aufgefallen:
Stehen nach dem CreateWater() noch weitere Befehle zum "Einrichten" der Welt, z.B. Sky, dann wird das Wasser bei mir ignoriert, aber der Himmel ist auch nicht zu sehen. Steht CreateWater() am Ende, dann bricht das Programm unerwartet ab und in der Ogre.log steht am Ende folgendes zum Wasser:

Code: Alles auswählen

07:37:20: [Hydrax] Hydrax object created.
07:37:20: [Hydrax] Creating module.
07:37:20: [Hydrax] Creating ProjectedGrid module.
07:37:20: [Hydrax] ProjectedGrid created.
07:37:20: [Hydrax] Module created.
07:37:20: [Hydrax] Creating RTListeners.
07:37:20: Creating viewport on target 'rtt/2315488/HydraxRefractionMap', rendering from camera 'C0', relative dimensions L: 0.00 T: 0.00 W: 1.00 H: 1.00 ZOrder: 0
07:37:20: Creating viewport on target 'rtt/26016160/HydraxReflectionMap', rendering from camera 'C0', relative dimensions L: 0.00 T: 0.00 W: 1.00 H: 1.00 ZOrder: 0
07:37:20: Creating viewport on target 'rtt/25043360/HydraxDepthMap', rendering from camera 'C0', relative dimensions L: 0.00 T: 0.00 W: 1.00 H: 1.00 ZOrder: 0
07:37:20: [Hydrax] RTListeners created
07:37:20: [Hydrax] Registring device restored listener
07:37:20: [Hydrax] Device restored listener registred
07:37:20: [Hydrax] Creating materials,
07:37:20: [Hydrax] Creating water material...
07:37:20: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at OgreGpuProgram.cpp (line 1079)
Ausserdem erschließt sich mir aus der Hilfe leider nicht wie und wo das Wasser denn hingesetzt wird, da mir die Flächenangaben fehlen und warum man dazu eine Camera angeben muss?
WinXP 32 Bit, PureBasic 4.40 (x86)
Antworten