照明を追加
:: 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。取得(); }
参照:https://blog.csdn.net/woaicd/article/details/77163012