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?) |
---|