Changes between Version 5 and Version 6 of TheoriesOfTerrainDeformation


Ignore:
Timestamp:
Dec 7, 2010, 9:57:31 PM (13 years ago)
Author:
Torben Dannhauer
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TheoriesOfTerrainDeformation

    v5 v6  
    33= Terrain Deformation : Approaches to modify terrain tiles =
    44 1. Implement a custom txerrainTechnique to modify at runtime   -> Flexible but eventually slow [[br]]
    5  1. Patching a VPB database persistent                          -> Keine Verzögerung, Patching nicht reversibel, unflexibel [[br]]
    6  1. Erzeugen von sub-datenbanken mit gepatchen bereichen, Verzweigen auf die alternative Sub-datenbank zur Laufzeit (im loadingcallback lediglich ein lookup Table)-> Implementierung aufwändig, rel. chnell, Prefetching notwendig zum Erstellen der gepatchten Subdatenbanken [[br]]
    7  1. Pseudoloaders welcher die Datenbank modifikationen beim Laden macht,
    8         so dass der gesamte Compilevorgang noch im Pagerthread stattfindet.     -> Implementierung aufwändig, flexibel, langsam aber keine Framedrops
    9  1. Use osgEarth. Runtime modification is not possible, but each run of osgVisual could have other setups and other displacements.
     5 1. Patching a VPB database persistent                          -> Low delay, patching irreversible, not flexible [[br]]
     6 1. Creating patched sub databases, runtime branching to the alternative patched sub database (only a lookup table in the tileLoadCallback) -> Complex implementation, supposed to be fast [[br]]
     7 1. Pseudoloader which modifies the tiles while the are in the loading pipeline, the complete tile compilation will be done in the databasepager thread -> Complex implementation, flexible, slow but no framedrops [[br]]
     8 1. Use osgEarth. Runtime modification is not possible, but each run of osgVisual could have other setups and other displacements. [[br]]
    109
    1110
    1211== Modifying terrain using a custom terrainTechnique ==
    13  1. tilesLoadedCallback: Muss bei VPB Datenbanken < 2.9.10 verwendet werden, da hier die DB die geometryTechnique enthält und daher terrain->terrainTechniquePrototype ignoriert.
    14  1. Custom geometryTechniquePrototype: Kann bei VPB Datenbanken >= 2.9.10 verwendet werden, da hier in die DB keine geometryTechnique enthältund daher terrain->terrainTechniquePrototype verwendet.
     12 1. tilesLoadedCallback: Must be used for VPB databases < 2.9.10 because these DBs contains a compiled in standard geometryTechnique, so terrain->terrainTechniquePrototype() is never queried. [[br]]
     13 1. Custom geometryTechniquePrototype: Can be used on VPB databases >= 2.9.10 because here the standard geometryTechnique is not compiled in, so terrain->terrainTechniquePrototype is queried and can be used as custom terrainTechnique over the whole database. [[br]]
    1514
    1615== Modifying terrain patching a VPB database persistent ==
    17  1. Use VPB's --patch function. The patches must have a higher resolution than the database to patch. todo: Create algorithm t calculate displacement and create ESRI .arc files.
     16 1. Use VPB's --patch function. The patches must have a higher resolution than the database to patch. todo: Create algorithm t calculate displacement and create ESRI .arc files. [[br]]
    1817
    1918
     
    3029
    3130= Approaches to modify terrainTile heightfield =
    32  1. vor dem init() Call das Heightfield modifizieren
    33  1. init() überladen und in init die modifikationen durchführen, bevor generateGeometry() aufgerufen wird.
     31 1. Modify heightfield prior to tile's init() call. [[br]]
     32 1. Overload init() and modify inside init() before generateGeometry() is called. [[br]]
    3433
    3534== Calculating the new height values ==
    36  1. checken ob Tile betroffen ( xmin < x < xmax && ymin < y < ymax ) oder ( latmin < lat < latmax && lonmin < lon < lonmax )
    37  1. Wenn Betroffen, je vertex reihe/spalte checken ob sie im bereich liegt
    38  1. Wenn im Bereich: modifizieren der Werte
    39         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.
    40         II) Bei Verwendung einer mathematischen funktion: Berechnen des Additions-/Zielwertes je vertex und addieren/ersetzen des ursprünglichen Wertes.
    41                 - Eingabewert in Algorithmus: Lat/Lon der 4 Tile-Ecken. Algorithmus kann für lat lon der Vertices in der Tile linear interpolieren.
     35 1. checken ob Tile betroffen ( xmin < x < xmax && ymin < y < ymax ) oder ( latmin < lat < latmax && lonmin < lon < lonmax ) [[br]]
     36 1. Wenn Betroffen, je vertex reihe/spalte checken ob sie im bereich liegt [[br]]
     37 1. Wenn im Bereich: modifizieren der Werte [[br]]
     38  1. 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.  [[br]]
     39  1. Bei Verwendung einer mathematischen funktion: Berechnen des Additions-/Zielwertes je vertex und addieren/ersetzen des ursprünglichen Wertes. Eingabewert in Algorithmus: Lat/Lon der 4 Tile-Ecken. Algorithmus kann für lat lon der Vertices in der Tile linear interpolieren. [[br]]
    4240
    4341