OSGモデル

:: ref_ptr OSG <OSG ::ノード> MyOSGLoadEarth CreateNode ::()
{ 
    OSGのref_ptr :: <OSG ::グループ> = _root 新しい新しいOSG ::グループ; 
 
    // ファイルの定義と標高読ん
     // 真の標高ファイル名は:ASTGTM2_N34E110_dem.tifは
     // 特殊なTIFF形式に属し、GeoTIFFのは
     // ので、読書のためのGDALのプラグインのOSGを使用して読んだときにパスを追加した後.gdal
     // .gdal延長ちょうどここでそれを追加します、ファイル拡張子の標高を変更するための本当の必要性 
    OSG ref_ptr :: <ハイトOSG ::> :: readHeightFieldFile osgDBハイト=(" G:\\ \\ ASTGTM2_N34E110_dem.tif.gdal ASTER.GDEM.V2-DEM_sn " ); 
 
    / / リーフノードを作成するオブジェクト 
    のOSG ref_ptrを:: <OSG ::のGeode> =のGeode 新新OSG ::のGeode; 
 
    IF(ハイト=!nullptr)
    { 
        // 元のデータが大きすぎるため、三次元物体を作成することは失敗するので、オブジェクトの再構築
         // 回間引き同等のデータを。もちろん、絵は直接特別なツールの使用を削減することができます
         // ハイトコピーするために使用される新しいハイトオブジェクト、作成 
        OSGのref_ptrを:: <OSG ::ハイト> = heightMap1 新しい新しいOSG ::ハイトを;
         //は、元のオブジェクトからコピー一部の上馴染み 
        heightMap1-> SetOrigin(heightMap-> getOrigin()); 
        heightMap1 - > setRotation(heightMap-> getRotation()); 
        heightMap1 - > setSkirtHeight(heightMap-> getSkirtHeight());
         // 間隔XY方向であります倍増し、 
        heightMap1-> setXInterval(heightMap-> getXInterval()* 2 )。
        heightMap1- > setYInterval(heightMap-> getYInterval()* 2 );
         // ランクの数が元の標高データの半分に新しい量を設定 
        heightMap1->割り当て(heightMap-> getNumColumns()/ 2、heightMap-> getNumRows()/ 2 ); 
 
        // に実際のデータ値に入れ
        のための(R&LTサイズ_t = 0 ; R&LT <heightMap1-> getNumRows(); ++ R&LT)
        { 
            ため(= size_tのC 0、C <heightMap1-> getNumColumns(); + + C)
            { 
                // 千におけるXY方向の間隔のデータのロードは、約0.0002(緯度と経度をオフセット)、格子3600で、ステージの数が少なすぎる、標高値のレベルしばしば、無Mに変換する変換(GPS)の座標と、結果の後に深刻な障害を表示しています。そこでここでは50000で割っの高い値に単純です(これは別の標高ファイルは変更になる場合があります試してTIFファイルに従ったものです)
                heightMap1-> setHeightメソッド(C、R、heightMap->のgetHeight(C * 2、R * 2)/ 50000 )。
            } 
        } 
 
        // 添加到叶子节点中 
        geode-> addDrawable(新しいOSG :: ShapeDrawable(heightMap1)); 
    } 
 
    _root - >はaddChild(ジオード。得ます())。
    返す _root。取得(); 
}

 

おすすめ

転載: www.cnblogs.com/herd/p/11070059.html