OpenGL: Nur Teile eines Models zeichnen/Terraintexturierung
-
Huhu,
ich habe mal 2 Fragen:1. Ich möchte ein 3D Model langsam sichtbar machen. Dabei soll zuerst nur der untere Teil des Models sichtbar sein. Langsam soll man dann immer mehr sehen bis man schliesslich das komplette Model sieht. Bei diesem Vorgang soll sich die Kamera schräg über dem Model befinden. Solange das Model nicht komplett sichtbar ist kann es also passieren das man in das Model "hineingucken" kann, da der obere Teil fehlt.
Meine Idee wäre jetzt das Model mit einer Ebene zu "schneiden". Die Polygone die über der Ebene liegen zeichne ich nicht. Polygone die von der Ebene geschnitten werden müsste ich in 2 Teile zerlegen und dann nur den unteren Teil zeichnen. Jedoch erscheint mir das ganze etwas aufwändig da ich ja ständig meine Vertexdaten ändern müsste.
Gibt es für sowas vielleicht eine etwas elegantere Möglichkeit?2. Ich möchte ein Terrain abhängig von der Höhe texturieren. Als Beispiel kann hierfür eine Insel genommen werden. In küstennähe ist das Terrain recht niedrig. Dort soll eine Sandtextur verwendet werden. Etwas weiter im Inselinneren ist das Terrain etwas höher und soll eine Grastextur verwendet werden. Berge erhalten ab einer bestimmten Höhe eine Felstextur. Wie mache ich sowas am geschicktesten?
mfg und schonmal Danke
xorm
-
Ließe sich 1. nicht mit Clip-Planes machen?
-
Ich habe eben mal Google nach Clip-Planes gefragt und glaube das ist genau das was ich brauche. Werd ich mir mal näher angucken.

Ich kannte bisher nur die Kamera Clip-Planes.mfg
xorm
-
1. dafuer eignet sich eine alphatest textur auf dem objekt sehr gut. ist nicht so trivial es zu beschreiben.
also, du zeichnest in den alphachannel der textur die helligkeit so ein, dass sie einer zeit entspricht, 0 (also ganz schwarz) fuer "anfang" und 255 (also weiss) fuer "ende".
beim zeichnen schaltest du nun alphatest ein, als vergleich nimmst du 'kleinergleich' und als referenzwert uebergibst du von 0 bis 255, entsprechend der menge die du von deinem objekt anzeigen moechtest.
das schoene bei der sache ist dass du nicht zwingend dran gebunden bist von unten nach objekt die objekte erscheinen zu lassen, du kannst auch teile 'sinnvoll' faerben. wenn du z.b. ein RTS haettest bei dem man so sieht wie ein haus entsteht, koenntest du so erst das geruest vom haeusschen, dann die waende, dann die fenster+tueren, dann das dacht zeigen.2. dafuer eignet sich eine 3d textur sehr gut. dabei mappst du x und z auf uv (bzw st bei ogl). und y (also die hoehe) auf w (bzw q bei opengl). volle hoehe ist dann oberste textur, ganz tief ist textur 0, also der boden.
die graphikkarten uebernehmen dann fuer die das blending/filtering.
-
Nachdem ich die Woche über kaum Zeit hatte, habe ich heute endlich mal wieder ein bisschen Zeit zum programmieren gefunden..

Das mit den 3D Texturen ist ein gutes Stichwort gewesen. Das ist genau das was ich gesucht habe.Das mit den Alpha-Texturen ist eine Interessante Methode, allerdings kann ich mir das noch nicht so richtig vorstellen.
Ich brauche das ganze tatsächlich für das "bauen" von Gebäuden in einem RTS/Aufbauspiel. Eigentlich habe ich vor das mit 2-3 Modellen zu machen. Ein reines Gerüst-Model was zuerst sichtbar wird. Nachdem das Gerüst voll sichtbar erscheinen langsam die Wände des Gebäude-Models. Wenn das Gebäude fertig ist wird das Model eventuell noch durch eine Version mit reduzierter Polygonanzahl ersetzt (bei dem dann z.B. die Innenbereiche die nur beim Bau sichtbar sind fehlen).
In meinen Tests mit einfachen Testmodelen ging das ganze per clip planes eigentlich auch ganz gut. Ich denke ich werde bei Gelegenheit einfach mal ein richtiges Gerüst + Gebäude modellieren und es mal damit probieren. Abhängig vom Resultat überlegen ich mir dann ob ich bei Clip-Planes bleibe oder eventuell eine andere Technik ausprobiere.
Danke für die Hinweise
mfg xorm