Ich würde gern einem texturierten GL_QUADS ein Höhenprofil geben. Ich stelle mir dabei eine Art Schogette vor. So weit ich weiß, wird dazu ein Heightmap erstellt wird, also Normalen unterschiedlicher Länge und Richtung. Alle Tutorials sind jedoch komplexer und bauen eine Landschaft aus Triangles auf. Wie sollte ich vorgehen?
Registriert: Di Mai 10, 2011 19:00 Beiträge: 43
Programmiersprache: FreePascal , C++
Ich kann dir nur die Wikiartikel zu den Tutorial_Abseits_eckiger_Welten und Tutorial_BumpMap raten. Die Artikel fand ich relativ einleuchtend. Aber Beispiele habe ich jetzt spontan leider keine parat.
Kommt aber auch darauf an was du willst. Soll das Quad irgendwo in einer Szene rumschwirren und nur den Anschein machen gewölbt zu sein oder soll eine virtuelle Schogetten-schachtel entstehen ?
Das Bumpmapping Tutorial ist allerdings ein bischen veraltet. Für sowas gibt es jetzt Shader und GLslang. Falls es das ist was du willst, solltest du dir mal die beiden Shadertutorials anschauen. Außerdem gibt es in der Shadersammlung auch schon fertige Beispiele.
Besten Dank für eure Hinweise. Ich habe per Nurbs eine 3D-Struktur erzeugt, auf die ich auch meine Textur legen kann. Mal abgesehen davon, dass diese Textur spiegelverkehrt ist, bin ich nicht so recht glücklich mit dem Ergebnis. Es sieht einfach nicht nach einem realen Spielbrett a la Fritz o.ä. aus. Aber das ist eine Design-Frage, und vielleicht hilft es, den Hintergrund zu texturieren oder spiegelnd zu machen.
Was meint ihr, sollte ich weiter an der 3D-Darstellung arbeiten? Links ist das Spielfeld als Drawgrid realisiert (bei dem ich zwar innen eine Textur anbringen könnte, aber nicht außerhalb für ein voluminöses Brett), rechts per OpenGL (dem noch einige Features fehlen).
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7804 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Damit deine Textur korrekt dargestellt wird, müssen die Koordinaten getauscht werden. Schau dazu nochmal das Tutorial an. Kleiner Tipp: Sieht aus als wenn du die Texturkoordinaten genau verkehrt herum verwendest (Uhrzeigersinn).
Die 3D-Struktur deines Brettes ist ja sehr regelmäßig. Du könntest also sogar per Hand (ansonsten mit einem 3D Modellierungstool wie Blender) die Bestandteile der Karte in 3D bauen. Dann musst du noch für Beleuchtung sorgen. Das macht man heutzutage mit Shadern. (Fertige Shader findest du im Wiki) Wenn du Beleuchtung drinnen hast, wird das ganze schlagartig deutlich besser aussehen. Richtig dolle wirds dann mit Schatten - das ist dann aber ne andere Geschichte.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Danke für die Rückmeldung. An welcher Stelle müssen denn Koordinaten geändert werden? Bei Nurbs habe ich ja keine glTexCoord().
Mittlerweile habe ich ein Holzbrett unter dem Spielfeld angebracht und damit sieht das schon viel netter aus. Licht ist schon an - von rechts oben, allerdings keine Shader. Schatten und Reflexionen muss ich unbedingt noch einbauen.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7804 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Also mit Nurbs hätte ich das definitiv nicht gemacht. Du hast ja keine geschwungene Oberfläche, sondern eine die aus Flachen Teilstücken besteht. Also hätte ich, ganz primitiv im imidiate mode (glBegin/glEnd) die Felder zeichnen lassen.
Also quasi (Pseudocode)
Code:
glBegin
for (x = 1 to breite) do
for (y = 1 to laenge) do
zeichneFeld(x,y);
glEnd
function zeichneFeld(x,y)
glVertex2i(x,y);
glVertex2i(x+1,y);
glVertex2i(x+1,y+1);
glVertex2i(x,y+1);
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Das Spielbrett besteht auch aus einfachen Quads. Spielsteine sollen aber eine Höhe haben, also wie eine Schogette aussehen. Nur für die gibt es ein Nurb.
Mitglieder in diesem Forum: 0 Mitglieder und 24 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.