:: 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。取得(); }