[172] | 1 | |
---|
| 2 | |
---|
| 3 | |
---|
| 4 | Vorgehen zum modifizieren von Geländekacheln: |
---|
| 5 | a) Implementieren einer eigen TerrainTechnique und Modifikation zur Laufzeit -> Flexibel aber evtl langsam |
---|
| 6 | b) Dauerhaftes Patchen der Orginaldatenbank -> Keine Verzögerung, Patching nicht reversibel, unflexibel |
---|
| 7 | c) Erzeugen von sub-datenbanken mit gepatchen bereichen, Verzweigen auf die |
---|
| 8 | alternative Sub-datenbank zur Laufzeit |
---|
| 9 | (im loadingcallback lediglich ein lookup Table) -> Implementierung aufwändig, rel. schnell, Prefetching notwendig zum Erstellen der gepatchten Subdatenbanken |
---|
| 10 | d) Pseudoloaders welcher die Datenbank modifikationen beim Laden macht, |
---|
| 11 | so dass der gesamte Compilevorgang noch im Pagerthread stattfindet. -> Implementierung aufwändig, flexibel, langsam aber keine Framedrops |
---|
| 12 | |
---|
| 13 | Vorgehen bei Nutzung einer eigenen GeometryTechnique: |
---|
| 14 | a) TilesLoadedCallback: Muss bei VPB Datenbanken < 2.9.10 verwendet werden, da hier die DB die geometryTechnique enthält und daher terrain->terrainTechniquePrototype ignoriert. |
---|
| 15 | b) CustonGeometryTechniquePrototype: Kann bei VPB Datenbanken >= 2.9.10 verwendet werden, da hier in die DB keine geometryTechnique enthältund daher terrain->terrainTEchniquePrototype verwendet. |
---|
| 16 | |
---|
| 17 | |
---|
| 18 | Grundsätzliche Optionen für Heightfieldmodifikationen: |
---|
| 19 | a) vor dem init() Call das Heightfield modifizieren |
---|
| 20 | b) init() überladen und in init die modifikationen durchführen, bevor generateGeometry() aufgerufen wird. |
---|
| 21 | |
---|
| 22 | Vorgehen für das ermitteln der korrekten Heightwerte: |
---|
| 23 | 1. checken ob Tile betroffen ( xmin < x < xmax && ymin < y < ymax ) oder ( latmin < lat < latmax && lonmin < lon < lonmax ) |
---|
| 24 | 2. Wenn Betroffen, je vertex reihe/spalte checken ob sie im bereich liegt |
---|
| 25 | 3. Wenn im Bereich: modifizieren der Werte |
---|
| 26 | I) Bei Verwendung eines Patch-Bildes: Auslesen des images je spalte, interpolieren der Werte auf Tile-Bereich und Vertexanzahl und addieren/ersetzen der ursprünglichen Werte. |
---|
| 27 | II) Bei Verwendung einer Mathematischen funktion: Berechnen des Additions-/Zielwertes je vertex und addieren/ersetzen des ursprünglichen Wertes. |
---|
| 28 | Eingabewert in Algorithmus: Lat/Lon der 4 Tile-Ecken. Algorithmus kan für lat lon in der Tile linear interpolieren zu den Ecken. |
---|
| 29 | |
---|
| 30 | |
---|
| 31 | |
---|
| 32 | |
---|
| 33 | grundsätzliche Optionen für Löcher: |
---|
| 34 | a) generateGeometry umbauen, so dass es keine Oberfläche und keinen Skirt an den Stellen bildet. |
---|
| 35 | b) einene weiteren layer einbauen der pro vertex entscheided ob der Vertex gerendert wird oder nicht (todo: switchlayer ansehen, evtl ist dass ja schon sowas) |
---|
| 36 | c) alpha in der textur aktuivieren für stellen die Löcher haben sollen und blenden lassen ( todo: wird zFightfing vermieden wenn einer der partner transparent ist?) |
---|