ich habe bei mir GLScene installiert und habe einige Zeit damit rumgespielt. Nun möchte ich ein Gelände darstellen und darin rumfliegen. Es existieren zwar verschiedene Anleitungen, welche das Gelände über ein Bitmap einlesen. Dies hilft mir aber nur beschränkt weiter, denn ich habe ein File mit Koordinaten und den entsprechenden Höhen, welche ich einlesen will. Ich möchte den Umweg über eine Bitmap vermeiden, denn die vertikale Auflösung dürfte darunter leiden (256 Graustufen). Meine Höhen varieren von 200 bis 4500 Metern mit einer Auflösung von 10cm.
Kann mir jemand sagen wie ich diese Daten in ein HDS kriege oder wo ich eine Anleitung dafür finden kann. Gibt es eventuell andere Variabeln hierfür., die sich besser eignen.
Du hast also ein File mit den Koordinaten anstatt eines Bitmaps.
Dazu hätte ich zwei Fragen:
1. Wo genau liegt das Problem? 2. Was ist ein HDS?
Ich gehe mal davon aus, dass du das Format von dem File kennst, das du einlesen willst.
Damit hast du dann ja deine Höhenkoordinaten. Von da aus geht es so weiter wie mit einem Bitmap halt auch.
zuerst zu Deiner zweiten Frage. HDS steht für Height Data Source und ist eine Klasse, welche von GLScene zur Verfügung gestellt wird. Darin werden die Höhen eines Geländes abgelegt. Für die Visualisierung stehen dann verschiedene Prozeduren zur Verfügung, welche auf diese HDS zurückgreifen.
Und wo liegt nun das Problem? In den Beispielen, die ich gesehen habe, werden die Höhen von einem Bitmap eingelesen. Hierfür steht auch eine Funktion zur Verfügung: GLBitmapHDS1.Picture.LoadFromFile(). Nun suchte ich eine ähnliche Funktion, welche Geländedaten von einem File einliest, wobei das Format z.B eine Matrix sein könnte. Ich habe nun die HDS Klasse etwas genauer angeschaut und denke, dass ich selber eine solche Funktion schreiben kann. So schwierig dürfte dies ja auch nicht sein. Man muss sich eben einfach die Zeit dazu nehmen Ich probier es mal.
posX:Extended;// Für den ultimativen Speicherverbrauch <!-- s;) --><img src=\"{SMILIES_PATH}/icon_wink.gif\" alt=\";)\" title=\"Wink\" /><!-- s;) -->
posY:Extended;// Hier gilt das gleiche wie bei posX
Height:Extended;// Auch damit bekommst deinen RAM voll <!-- s;) --><img src=\"{SMILIES_PATH}/icon_wink.gif\" alt=\";)\" title=\"Wink\" /><!-- s;) -->
end;
var
HeightMapFile:fileof THeightMapFile;
var
HeightBuffer: THeightMapFile;
begin
AssignFile(HeightMapFile,'karte.map');
Reset(HeightMapFile);
whilenotEOF(HeightMapFile)do
begin
Read(HeightMapFile, HeightBuffer);
// Aktuelle Höhe, X-Position und Y-Position in HeightBuffer
// abgelegt. Diese Daten können dann z.B. in ein Array
// gelesen werden und das kann dann im passenden Format
// der HDS übergeben werden.
DoSomethinWithTheHeightBuffer;
end;
CloseFile(HeightMapFile);
end;
Natürlich kannst du auch einen Stream nehmen. Oder sonst irgendwas Wie du die Daten dann allerdings an diese HDS übergibst, weiß ich nicht. Ich hab nunmal kein GLScene. ^^
Mitglieder in diesem Forum: 0 Mitglieder und 3 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.