Flusslauf

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Tigerass

Betreff: Flusslauf

BeitragFr, Apr 29, 2011 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Ich möchte gerne einen Flusslauf mit Kurven in Blitz darstellen. Diesen möchte ich Animieren, indem ich eine Textur Mithilfe der UV Koordinaten darauf bewege. Das Problem dabei ist nur, dass ich keine Ahnung hab, wie man für jedes Triangle in der Kurve die UV Koordinaten für die Textur einstellt. In Blitz habe ich es mit VertexTexCoords() hinbekommen, aber das Würde zu viel code Brauchen und zu viel Arbeit. Das ganze sollte dann auch noch als animiertes Model exportiert werden können, sodass ich es in Blitz einfach als Animation abspielen kann. Habe es mit Blender versucht, aber keine Lösung gefunden.
Googlen bringt nichts.
Es gab schonmal so ein Ähnliches Problem mit einer animierten Panzerkette.

Ich will damit hauptsächlich erreichen dass es in den Kurven nicht so aussieht als ob das Wasser gegen das Ufer Läuft, es soll die Kurve "mitlaufen".

Wäre nett wenn jemand eine Lösung für mein Problem hätte.
Bedanke mich schonmal im vorraus

Tigerass

ZaP

BeitragFr, Apr 29, 2011 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
PositionTexture, wenn die Triangles bereits passende Texturkoordinaten haben.
Starfare: Worklog, Website (download)
 

Tigerass

BeitragFr, Apr 29, 2011 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Damit wird aber die komplette Textur vom Mesh verschoben. Dadurch entsteht ja der Effekt, das es in den Kurven so aussieht als ob das Wasser "gegen das Ufer" gedrückt wird.

EDIT:
Hier mal eine Demo < 1mb was ich überhaupt damit mein. vll. kann man es sich dann besser vorstellen.

https://www.blitzforum.de/upload/file.php?id=10562

Das ganze dann in Blender so animieren und dann als *.md2,*.x oder *.b3d exportieren, damit ich es einfach als animation laden kann.

mpmxyz

BeitragFr, Apr 29, 2011 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Das kommt darauf an, wie die Texturkoordinaten des Wassers gesetzt wurden.
Wenn zum Beispiel die u-Koordinate in Flussrichtung zeigt und die v-Koordinate quer dazu verläuft, kannst du die Textur immer weiter in u-Richtung verschieben. Wenn du dabei wiederum darauf achtest, dass die v-Koordinaten der Modellpunkte am Ufer immer gleich bleiben, bekommst du eine relativ gute Flussbewegung hin. Bei Engstellen im Fluss wird bei diesem System das Wasser etwas enger gezeichnet. Solange man es damit nicht übertreibt, wirkt es relativ natürlich. (Dieser Nebeneffekt ist aber noch besser als der von dir beschriebene, bei dem das Wasser im Ufer verschwindet/aus dem Ufer herauskommt.)
mfG
mpmxyz
PS: Da meine Modellierungskünste eher beschränkt sind, kann ich dir leider kein Bild zur weiteren Erklärung zeigen. Razz
Edit: Das setzt natürlich voraus, dass das Land vom Wasser getrennt ist. (Texturen)
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

Tigerass

BeitragFr, Apr 29, 2011 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß was du meinst, habe aber keine Ahnung wie ich es umsezten kann. Kannst du mir da nen Tipp geben?

EDIT: Wasser ist ein extra-model

mpmxyz

BeitragFr, Apr 29, 2011 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Du modellierst deinen Fluss. (hast du schon)
2. Du setzt die UV-Koordinaten richtig.
Hierbei definierst du eine Koordinate, die in Flussrichtung zeigst.
Je weiter es dann flussabwärts geht, desto größer werden die entsprechenden Werte. Wenn du bei 1.0 ankommst, geht es an dieser Stelle sofort wieder mit 0.0 los! Ansonsten läuft der Fluss teilweise rückwärts. (Wenn sich die Textur bei Werten größer als 1.0 einfach wiederholt, musst du nicht darauf achten, dass auf 0.0 zurückzusetzen.)
Mit der Stärke der Veränderung und dem Abstand von den Punkten kannst du die Geschwindigkeitsverhältnisse des Wassers festlegen.
Die andere Koordinate bestimmt dann, auf welcher Seite des Flusses du dich befindest.
(z.B. linkes Ufer: 0.0
Mitte: 0.5
rechtes Ufer: 1.0)
Hier musst du nur beachten, dass du die Werte richtig verteilst.
3. Das Animieren im Programm
Hier lässt du die flussabwärts gerichtete Koordinate kontinuierlich steigen. Wenn sie 1.0 erreicht - denke hier an eine ">="-Abfrage - wird die Verschiebung wieder auf 0.0 gesetzt. (PositionTexture)
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

Tigerass

BeitragFr, Apr 29, 2011 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann denke ich mal dass es bei mir am setzen der UV Koordinaten mangelt, denn das kapier ich noch nicht so ganz. Du meinst, ich soll die V-koordinate kontinuierlich um z.B 0.002 pro ms verschieben. Wie aber merke ich, wo eine Kurve ist? dort wo die Kurve ist bewegt sich das Wasser dann doch auch "unter das Ufer". Oder versteh ich da was falsch?

mpmxyz

BeitragFr, Apr 29, 2011 22:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Kurven entstehen dadurch, dass du den Fluss entsprechend modellierst.
Dadurch, dass die (bei dir) U-Koordinaten am Ufer gleich sind und der Fluss sich in die dort senkrecht dazu stehende V-Richtung bewegt, schiebt sich das Wasser nicht unter das Ufer durch. Das passiert nur bei einer Verschiebung in U-Richtung.

Ich versuche mich mal in kleinen Textgrafiken:
U
X.X X.X X.X X.X 0.0 0.0 _ X.X 0.0 0.5 1.0 X.X
X.X X.X 0.0 0.0 0.5 0.5 _ X.X 0.0 0.5 1.0 X.X
X.X 0.0 0.5 0.5 1.0 1.0 _ X.X 0.0 0.5 1.0 X.X
X.X 0.0 0.5 1.0 X.X X.X _ X.X 0.0 0.5 1.0 X.X
X.X 0.0 0.5 1.0 X.X X.X _ X.X 0.0 0.5 1.0 X.X
(X.X=>Land)

V
X.X X.X X.X X.X 1.0 1.0 _ X.X 1.0 1.0 1.0 X.X
X.X X.X 0.6 0.6 0.8 1.0 _ X.X 0.8 0.8 0.8 X.X
X.X 0.4 0.4 0.4 0.6 0.8 _ X.X 0.4 0.4 0.4 X.X
X.X 0.2 0.2 0.2 X.X X.X _ X.X 0.2 0.2 0.2 X.X
X.X 0.0 0.0 0.0 X.X X.X _ X.X 0.0 0.0 0.0 X.X
(gebogen) ___________ (gerade)
Hier wird die Bewegung des Wassers bestimmt. (0=>Anfang des Flusses, 1=>Hier kommt das Wasser später an. Beachte, dass das außen fließende Wasser einen längeren Weg hat!)
->Du musst nicht erkennen, ob irgendwo eine Kurve liegt, sondern musst nur darauf achten, dass die Ränder immer den gleichen U-Wert haben. Dann kann nämlich nichts verloren geben. Bei den V-Koordinaten musst du dir dann Gedanken machen, wie lange das Wasser dort hin braucht, damit das Ergebnis so aussieht, als ob das Wasser überall gleich schnell ist.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Dottakopf

BeitragSa, Apr 30, 2011 0:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Alternativ:

sofern der fluss der tiefste punkt in deinen level ist, kannst du auch einfach auf der höhe des Flusses ein plane erstellen und die textur in die fließrichtung bewegen.

zugegeben unschön, aber es funktioniert Wink


Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!
 

Tigerass

BeitragSa, Apr 30, 2011 10:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke mpmxyz
Jetzt habe ich es kapiert Razz . Werde mich gleich mal dransetzten. Trotzdem würde es mich interessieren ob man so einen Effekt auch in Blender animieren und exportieren kann.

LG Tigerass

PhillipB

BeitragSa, Apr 30, 2011 11:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja,das geht such einfach mal in der Forensuche wie man annimationen abspielen kann!
 

BIG BUG

BeitragSa, Apr 30, 2011 23:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, das geht nicht da UV oder Texturkoordinaten nicht mit Animation exportiert werden können. Aber wie schon gesagt ist es ja mit PositionTexture sehr leicht zu lösen.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group