Irrlicht Engine >>> 2 Fragen bezüglich Terrain/Map

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Irrlicht Engine >>> 2 Fragen bezüglich Terrain/Map

Beitrag von Vermilion »

Da ich für mein Spiel eine 3D Engine verwenden möchte, beschäftige ich mich derzeit mit der Irrlicht Engine, da ich durch einen Tipp auf die Aufmerksam gemacht wurde. Sie ist insgesamt besser als die OGRE in PB, sie hat viel mehr Möglichkeiten und größere Kompatibilität (z.B. dass man Terrains als BMP laden kann, was ich viel angenehmer finde, als das exotische 256 Farben 8Bit PNG Bild der PB OGRE >_< ), jedoch vermisse ich ein paar kleine feine Details aus der PB-OGRE (siehe 2. Frage).
Also,

1.: Ich will im Spiel große, weite Maps verwenden, für Naturlandschaften. Siehe Terrain Screenshot unten. Soll ich da Terrains oder BSP Maps (soweit ich weiß, unterstützt Irrlicht nur BSP) verwenden? Dabei soll berücksicht werden, dass gelegentlich Objekte, Meshes, wie Häuser auftauchen sollen oder etc., und die als Mesh? Wird das mit der Textur nicht auch ein bisschen Kompliziert?
(Man könnte die Map vergleichen mit einer von UT2004, dessen Name ich vergessen habe, is auch egal, gibt ja mehrere solche, in der es weite Naturlandschaften sowie auch Gebäude darauf gibt. Oder solche Maps wie sie in Halo vorkommen, am Anfang aufm Ring)*

2.: Wie kann ich bei der Irrlicht Engine die TerrainHöhe an einem bestimmten Punkt feststellen? Also so etwas wie der Befehl "TerrainHeight()" bei PB OGRE.

Bild

* mh, ich glaube ich weiß schon, bsp maps oder? ><* Weil Klippen oder Steilhänge kriege ich nich mit Terrain hin...
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Benutzeravatar
neotoma
Beiträge: 202
Registriert: 13.09.2004 16:16
Kontaktdaten:

Beitrag von neotoma »

Hi Vermilion,

Irrlicht unterstützt BSPs und Terrains. Wobei BSP idealer für Innenlevel sind.
Du kannst die Terrains als Heightmap erstellen, und dann halt beliebig Objekt darauf stellen, Gegner laufen lassen ect.

Das mit der Terrainhöhe gehört zu den Todos für das nächste Release.
(Sorry, im Moment muss man das noch per Hand machen, und aus der Heightmap auslesen.... was ungenau ist...)

Klippen und Steilhänge sind auch in Games meist eigene Mehes, die auf das Terrain gestellt werden....

Gruß,

Mike
Alle Rechtschreibfehler unterliegen der GPL und dürfen frei kopiert und modifiziert werden.
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag von Vermilion »

Hatte ich mir auch schon überlegt mit Klippen Meshes...

Verdammt! <) Dann muss ich noch warten... denn die Funktion brauche ich auf jeden Fall, wenn ich drüberlatschen will, natürlich mit einer gewissen Genauigkeit der Höhe, damit das nicht so seltsam aussieht.

Ein anderes Beispiel wären die Maps bzw. einzige große Map von World Of Warcraft.

Naja, ok, solang es von "TerrainHeight" in Irrlicht nichts neues gibt, beschäftige ich mich anderweitig... :)
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> (Sorry, im Moment muss man das noch per Hand machen, und aus der Heightmap auslesen.... was ungenau ist...)

öhm.. wieso sollte es ungenau sein, aus der heightmap auszulesen?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
neotoma
Beiträge: 202
Registriert: 13.09.2004 16:16
Kontaktdaten:

Beitrag von neotoma »

Kaeru Gaman hat geschrieben:> (Sorry, im Moment muss man das noch per Hand machen, und aus der Heightmap auslesen.... was ungenau ist...)

öhm.. wieso sollte es ungenau sein, aus der heightmap auszulesen?
Naja, die positionen zwischen den Pixeln (die als vertex umgewandelt werden, sind numal meist schräg.... und so muss man sich die position
selbst aus demn umliegenden Punkten interpolieren.

Mike
Alle Rechtschreibfehler unterliegen der GPL und dürfen frei kopiert und modifiziert werden.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

achso, das meinst du.....

aber im grunde wäre es also kein problem, die vier nächsten punkte aus der
Heightmap zu nehmen und die höhe an einem punkt dazwischen exakt zu errechnen.
bräuchte man imho sogar nur ein paar dreisätze, keine komplexen winkelfunktionen...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag von Vermilion »

:mrgreen: Cool... kann mir jemand sagen, wie ich das mache? :mrgreen:
Ich bin zu blöd dafür. /:-> Zumindest kann ich mir nicht vorstellen, was ich da rechnen soll und wie ich z.B. die nächstgelegenen Punkte feststelle.
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

nuja... ich kenn mich mir dem irrlicht-wrapper (noch) nicht aus,
also kann ich dir nur theoretische hinweise geben.

dein Terrain hat eine gewisse größe in Game-koordinaten,
und eine gewisse größe in der HeightMap.

also, nehmen wir mal an, du machst eine 10.000² Landschaft auf ner 1000² heightmap.
das heißt, mit EntityX / 10 bekommst du eine koordinate auf der heightmap.

(folgendes wenn Y die höhenkoordinate ist. bei OGRE liegt die Map in X zu Z, und Y ist die höhe)
wenn jetzt EntityX = 425 ist, und EntityZ = 375 ist,
sitzt die Entity genau in der mitte von vier punkten,
nach HeightMap(X,Z) sind das
HeightMap(42,37) und HeightMap(43,37) nordseite und
HeightMap(42,38) und HeightMap(43,38) südseite des umfassenden Quadrats.
diese Vier höhen nimmst du, um die höhe des punktes in der mitte zu ermitteln.
Bild
die zeichnung ist jetzt für die genaue mitte.
du ermittelst die mittlere höhe der nordseite, die mittlere höhe der südseite,
dann das mittel dieser beiden höhen, und da ist die höhe des mittelpunktes des quadrats.

für andere teilstrecken ist es halt nich genau die mitte, aber die rechnung ist genauso einfach.
....ich hoff mal, das hat ein bissel geholfen... das ist fast schwieriger zu erklären als zu rechnen... ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag von Vermilion »

Also das Bild hat mir am meißten geholfen! <) Zumindest am schnellsten. Ich habe gerade diesen Text 3 mal neu verfassen müssen, da mir alles erst nacheinander klar wurde! <)
Aber trotzdem hab ich noch eine Frage: Wie lese ich denn jetzt die Höhe in der Heightmap (Beispiel: "Karte.bmp") aus? Einfach den Schwarz-Weiß RGB-Wert des Pixels bestimmten?
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

wie gesagt
Kaeru Gaman hat geschrieben:ich kenn mich mir dem irrlicht-wrapper (noch) nicht aus,
also kann ich dir nur theoretische hinweise geben.
schau mal ob irrlicht ne spezielle function hat um auf die heightmap zuzugreifen.
wenn du sie als bmp übergeben hast, müsste das auch per farbe gehen,
aber sie muss ja irgendwo als heightmap im speicher stehen,
dort per pointer zugreifen wär praktischer.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten