Wasser (plane) unsichtbar machen?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Jolinah

Betreff: Wasser (plane) unsichtbar machen?

BeitragDo, Dez 25, 2003 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich arbeite grad an nem kleinen Projekt mit nem Ruderboot usw..

Mein Problem ist:

Wenn ich mein Boot ins Wasser setze, natürlich etwas ins Wasser rein (es soll ja nicht auf der Spitze schwimmen), dann durchdringt das Wasser das boot.

user posted image


Ich habe noch nicht viel mit Blitz3d programmiert, deshalb wollt ich Fragen ob mir jemand ein paar Denkanstösse geben könnte wie ich das Wasser in dem Boot unsichtbar machen kann. Es braucht keine Komplette Lösung zu sein oder so. Ich weiss nur nicht so recht wie ich das anpacken soll.

Ich habe schon etwas mit Linepick versucht. Das wasser habe ich auf EntityPickmode 2 gesetzt. Danach hab ich mal einfach eine Linie (Linepick) irgendwo gemacht die das Wasser durchläuft (im sichtbaren bereich der Kamera).
Jedoch hab ich weder ein Entity noch eine Surface oder irgendwas zurückbekommen...

Valio

BeitragFr, Dez 26, 2003 0:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit einem Wasserterrain (statt -plane) wär' das einiges einfacher! Weiterer Vorteil: Durch das Terrain lassen sich Wellen simulieren. Nachteil: Der Blick ins Unendliche musst du mit einem texturierten Cube mit Backface Culling nachbilden (also ein Würfel der die gesamte Spielumgebung umgibt). Aber ich denke du willst wohl eh lieber einen etwas ausgefeilteren Himmel, oder?
Programming today is a race between software engineers striving to build better and bigger idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. - Rick Cook
Gegen TCPA || Stoppt RFID || Tux user #361946 || User posted image

Jolinah

BeitragFr, Dez 26, 2003 0:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, wär wohl das beste für den Himmel. Und dann könnt ich ja auch nen Terrain fürs Wasser nehmen...

Aber da bleibt für mich immer noch die Frage wie ich einzelne Triangles ausfindig machen kann um sie dann unsichtbar zu machen. Mit Linepick wollte das nicht so wirklich funktionieren bei mir. Ausserdem denke ich das Linepick zu ungenau wäre.

Valio

BeitragFr, Dez 26, 2003 0:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Da lässt sich sicher irgendeine Formel mit der Position des Boots verwenden... kommt drauf an, wie du das genau gecodet hast...
Programming today is a race between software engineers striving to build better and bigger idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. - Rick Cook
Gegen TCPA || Stoppt RFID || Tux user #361946 || User posted image

Jolinah

BeitragFr, Dez 26, 2003 14:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mal folgendes versucht:

Code: [AUSKLAPPEN]

;=====================================
;Water
;
;Macht das Wasser im Boot unsichtbar
;=====================================
.Water


ent = LinePick(EntityX(boot),EntityY(boot)+ 3,EntityZ(boot),0,-10,0,1)

If ent <> 0

  sur = GetSurface(ent,PickedSurface())
  tri = PickedTriangle()
  v1 = TriangleVertex(sur,tri,0)
  v2 = TriangleVertex(sur,tri,1)
  v3 = TriangleVertex(sur,tri,2)

  VertexColor(sur,v1,VertexRed(sur,v1),VertexGreen(sur,v1),VertexBlue(sur,v1),0.0)
  VertexColor(sur,v2,VertexRed(sur,v2),VertexGreen(sur,v2),VertexBlue(sur,v2),0.0)
  VertexColor(sur,v3,VertexRed(sur,v3),VertexGreen(sur,v3),VertexBlue(sur,v3),0.0)

  ;UpdateNormals ent
EndIf


Return



Das Problem: Es funktioniert nur mit einem Mesh. Weder Plane noch Terrain ist ein Mesh.

Das heisst ich müsste ein Model fürs Wasser machen. Aber da reicht kein Model mit 2 Face's auf der Oberfläche, es müsste viel mehr Triangles haben. Nur wie krieg ich sone fläche in nem Model Editor hin? Jedes Triangle selber zu modeln würde viel zu lange dauern, und wenn ich die Würfel funktion des Model Editors benutze macht er eben nur 2 Triangles auf der Oberfläche.

Sparx

BeitragFr, Dez 26, 2003 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Du koenntest natuerlich alle viel einfacher, aber dafuer etwas unprofesioneller machen: Einfach nen 2. Boden ins Schiff, welches etwas hoeher ist, als das wasser.
User posted image

Xenon

BeitragFr, Dez 26, 2003 14:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Schreib dir doch einen eigenen Highmap/Terrain Loader, so schwer ist das nicht!

Jolinah

BeitragFr, Dez 26, 2003 14:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Daran hab ich auch schon gedacht.. nur sieht das bisschen doof aus. Ich mein wenn da vielleicht später noch wer reinsitzt in das Boot, wo legt er dann seine füsse hin? Dann müsste er ja fast liegen Smile

Wärs nen grosses Piratenschiff oder so dann wärs kein Problem nen Boden reinzumachen.

Gibts denn keine Möglichkeit auch bei Planes oder Terrains auf die Triangles und Vertices zuzugreifen?

Jolinah

BeitragFr, Dez 26, 2003 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
@Xenon:

Oh.. darauf wär ich selber nie gekommen, danke Smile

Gute Idee, ich hoffe nur das ich das auch hinkrieg.

Und falls ich es hinkrieg kann ich ja den Code veröffentlichen falls noch mehr Leute das selbe Prob haben mit Terrains.

Sparx

BeitragFr, Dez 26, 2003 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann machs eben anders. Mach ein Terrain und schreibe eine routine mit dem Befehl MODIFYTERRAIN. Muesste recht einfach sein
User posted image

Jolinah

BeitragFr, Dez 26, 2003 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
@Sparx:

Meinst du da wo sich das Boot befindet das Terrain (Wasser) verkleinern in der Höhe?

Eigentlich auch ne gute Idee Wink, versuch ich mal.

Sparx

BeitragFr, Dez 26, 2003 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
NEin, denn das geht nicht! Ich meine mit MODIFYTERRAIN musst du dann die Form des Botes in das Terrain hoelen also bsp:
fuer z.b. einen Wuefel
Code: [AUSKLAPPEN]

 for x = wuerfelx - 10 to wuerfelx+10
  for y = wuerfely - 10 to wuerfely+10
   ModifyTerrain wasser,x,y,Terrainheight(wasser,x,y)-10
  next
 next


wenn die unterseite des Botes Sinuskurven foermig ist, dann must du die veranderrungsrate damit multiplizieren. Wenn sich die Form des Botes nicht als eine Mthematische funktion ausdruecken laesst, dann musst du leider fuer jeden Schiffspunkt auf dem terrain eine "Ernidrigung" einzeln Machen. Fertig!
User posted image

Jolinah

BeitragFr, Dez 26, 2003 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab bisschen herum experimentiert Wink

Aber das Terrain ist in ein Gitter unterteilt, man muss da die Position des bootes umrechnen in eine Position auf dem Terrain Gitter. Und diese Terrain Gitter Punkte liegen bei mir nicht so nahe aneinander. Also ist es nicht möglich eine so genaue Form einzuhöhlen.


Trotzdem vielen Dank für die Hilfe. Ich denke ich lass das Projekt erstmal ne Weile ruhen und versuch was einfacheres Smile
 

netmaster

BeitragFr, Dez 26, 2003 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Jolinah hat Folgendes geschrieben:
(es soll ja nicht auf der Spitze schwimmen)


hmm, ich würde einfach die Spitze weglassen und das Boot unten flach modellen. Dem Spieler interessiert es nicht (und er sieht es nicht) wie das Boot von unten ausschaut. Und wenn schon, dann so Modellen daß der Boden höher liegt als das Wasser.
Alles andere ist unnötiges Ressourcen Verschwendung die in einem Spiel nichts zu suchen haben. Noch kannst Du es Dir erlauben, aber später wenn viele Objekte,Animationen usw... dazukommen wirst Du schauen wo Du Frames einsparen kannst.
In der 3D Welt geht es darum dem Spieler die Realität vorzutäuschen und nicht nachzuahmen. Deswegen mach' nur das nötigste auf einfache Art & Weise ohne daß es (viel) Performance kostet. Very Happy

cu

netmaster
 

boss@future

Betreff: Ne ne... so wird des nix....

BeitragSa, Jan 10, 2004 11:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Also,
eigentlich wäre die idee den unteren Teil wegzulassen ned so schlecht, aber der Spieler hat seine Füße ja unter der Wasseroberfläche... Außerdem denke ich mir dass des wasser noch runtergealphert wird oder so... ansonsten wärs zieeemlich verschmutzt Wink....ne lösung hab ich aber leider auch ned, weil ich BB noch ned so lang hab....

Cya FLO

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group