![]() ![]() ![]() |
|
![]() |
|
![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Die Klasse TDXHeightmap erlaubt es Ihnen, in nur wenigen Schritten eine flexible Heightmap einzusetzen und diese auch nachträglich zur Laufzeit zu verändern. Dabei ist es fast egal, in welchem Format die Bilddatei mit den Höheninformationen vorhanden ist. Sie können sogar farbige Bilder verwenden, um diese als Höhenkarte zu benutzen. Desweiteren beinhaltet das 3D-Objekt Texturkoordinaten, so dass Sie eine Textur über die Heightmap legen können.
Mit TDXHeightmap.Create erstellen Sie die Heightmap:
constructor Create(_Owner: IDirect3DDevice8); |
_Owner: Das Direct3DDevice, unter dem die Heightmap später angezeigt werden soll.
Der Destructor der Heightmap. Wenn Sie die Heightmap freigeben wollen, dann sollten Sie jedoch in jedem Fall TDXHeightmap.Free verwenden, da diese Funktion automatisch kontrolliert, ob überhaupt die jeweilige Instanz erstellt wurde und dann automatisch Destroy aufruft.
destructor Destroy; |
Mit dieser Funktion wird die eigentliche Heightmap erst erstellt. Dazu können Sie verschiedene Parameter eingeben, um das Resultat auf Ihre Bedürfnisse abzustimmen. Solange diese Funktion nicht ausgeführt wird, kann keine Heightmap angezeigt werden.
function GenerateTerrain(_heightmap: string; _mapsize_x, _mapsize_z, _height_f: single; _points_x, _points_z: cardinal; _tu_f, _tv_f: single ): HRESULT; |
_heightmap: Der Pfad und Dateiname der Bilddatei, aus der die Höheninformationen gelesen werden sollen.
_mapsize_x, _mapsize_z: Die Grösse der Heightmap in Ihrer 3D-Anwendung.
_height_f: Der Höhenfaktor. Dieser Parameter wird mit dem Höhenwerten aus der Bilddatei multipliziert. 0.5 halbiert zum Beispiel alle Höhenwerte.
_points_x, _points_z: Die Anzahl der Vertices in der X- und Z-Achse. Mit diesen Parametern können Sie im Grunde die Auflösung der Höhenmap einstellen. Verwenden Sie nicht mehr als 110 Vertices pro Achse, da es sonst zu Systemabstürzen kommen kann.
_tu_f, _tv_f: Faktoren, mit denen Sie bestimmen können, wie oft die Textur auf der Heightmap gekachelt werden soll. Verwenden Sie 1, 1 um die Textur über die ganze Map zu strecken.
Wenn Sie zur Laufzeit die Heightmap wechseln wollen, dann können Sie dies tun, in dem Sie einfach eine neue Bilddatei laden.
function LoadHeightmapFromFile(_heightmap: string): HRESULT; |
_heightmap: Der Pfad und Dateiname der Bilddatei, aus der die Höheninformationen gelesen werden sollen.
Wahlweise können Sie die Höhenwerte ändern, in dem Sie eine bereits erstellte Textur der Klasse übergeben.
function LoadHeightmapFromTexture(_hmap: IDirect3DTexture8): HRESULT; |
_hmap: Ein IDirect3DTexture8-Interface mit den Höheninformationen, die in die Heightmap übertragen werden sollen.
Einfacher gehts doch kaum, oder? Einfach diese Funktion aufrufen, und die Heightmap wird gerendert. Sie müssen lediglich dran denken, die richtigen Transformationen, Lichtverhältnisse und Texturen eingestellt zu haben. Dann dürfte es keine Probleme geben.
function draw: HRESULT; |