メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

Unreal Engine の風景を生成する

この例では、Unreal® Editor を使用して、高さマップ ファイルをインポートし、ランドスケープ マップを作成する方法を示します。サポートされているファイル形式は次のとおりです:

  • 16ビット、グレースケールPNGファイル

  • 16ビット、グレースケール、リトルエンディアンバイト順のRAWファイル

この例では、符号なし 16 ビット整数 (uint16) 形式を使用します。

データの作成

65 x 65 のメッシュ ポイントを使用して、MATLAB ® シェイプ membrane で新しい風景を作成します。メッシュのサイズによって、Unreal Editor の最終的なランドスケープのサイズが決まります。デフォルトでは、Unreal Editor は 1 メートル x 1 メートルのメッシュを使用するため、65 x 65 メッシュはデフォルトのスケールで 64 メートル x 64 メートルのランドスケープ サイズに変換されます。

npoints = 65;
m = (npoints - 1)/2;
L = membrane(1,m);
x = -1:1/m:1;
surf(x,x',L)

Figure contains an axes object. The axes object contains an object of type surface.

分析関数の代わりにサンプリングされたデータを使用する場合、1 メートルずつのメッシュで高さマップ データをサンプリングします。最大スパンは 8128 メートル x 8128 メートルです。サンプリングされたデータを使用するには、X または Y に沿ったサンプリングされたポイントの数に等しい npoints を選択します。

グレースケールに変換

解像度を最大限に高めるには、高さマップ値の範囲を可能な限り小さい整数 (0) から大きい整数 (65535) に設定します。このデータを使用して uint16 グレースケールの高さマップを作成し、高さマップを画像として表示します。

maxL = max(L,[],"all");
minL = min(L,[],"all");
range = maxL - minL;
scale = range / 65535;
Lgray = uint16((L - minL)/scale);
imagesc(Lgray); colormap(gray)

Figure contains an axes object. The axes object contains an object of type image.

ファイルの保存

高さマップを、Unreal Editor にインポートできる 16 ビット PNG 形式のファイルに保存します。

注: エクスポート設定で 0:255 グレースケール カラーマップを適用すると、解像度が失われる恐れがあります。

Lfile = 'Lgray_uint16.png';
imwrite(Lgray,Lfile,"png");

Unreal Editorでランドスケープを作成する

Unreal Editor でランドスケープを作成するには、ランドスケープ環境を作成し、ハイトマップ ファイルをインポートし、ハイトマップにマテリアルを適用して、MATLAB で使用するためにレベル ブループリントを再親化します。

景観環境の作成

  1. Unreal Editor を開きます。コンテンツ ブラウザで、新しいランドスケープを配置する場所に移動します。

  2. 目的のフォルダーを右クリックし、基本アセットの作成>レベルを選択します。

  3. レベルに名前を付けて保存し、ダブルクリックして開きます。ワールド アウトライナー では、レベルがすべて黒く表示され、アイテムが含まれていません。

  4. 空港などの既存のレベルを開きます。ワールド アウトライナーで、環境 フォルダー内の 9 つの項目すべてを Shift キーを押しながら選択し、右クリックして 編集 > コピー を選択します。

  5. 新しいレベルをもう一度開き、コピーしたアイテムを ワールド アウトライナー に貼り付けます。レベルには照明と雰囲気が含まれるようになりました。

CreateLandscapeEnv.png

高さマップファイルのインポート

  1. ビューポートの上部で、モード>ランドスケープを選択して、左側にランドスケープモード ツールバーを追加し、新しいランドスケープ ダイアログ ボックスを表示します。

  2. ファイルからインポートをクリックし、Heightmap File用に作成したファイルを選択します。このアクションは、Heightmap Resolution を読み込んだ画像のサイズ (65 x 65) に設定します。

  3. スケール は、3 方向すべてでデフォルトで 100 倍になります。Unreal Editor はメートルをセンチメートルに変換します。

  4. 全体解像度を、セクション サイズを考慮して 1:1 スケーリングの 高さマップ解像度 と同じ値に設定します。セクション サイズのオプションは、7x715x1531x3163x63127x127、および 255x255 の 4 倍です。全体の解像度は、各方向のセクション サイズコンポーネントあたりのセクション数、およびコンポーネント数の積です。この例では、これらの値は 63 x 63 セクションで、コンポーネントごとに 1 つのセクションがあり、各方向に 1 つのコンポーネントがあります。全体の解像度は 64 x 64 です。

  5. インポートをクリックします。ランドスケープ要素が ワールド アウトライナー に追加されます。横向きモードのツールバーを閉じます。

  6. 必要に応じて風景の位置とスケールを変更し、F を押して選択範囲をウィンドウに合わせます。場所スケール をそれぞれ [0,0,0][100,100,10] に設定し、球体を風景の一番端に配置すると、球体の座標は [6300,6300,-1840] センチメートルになります。

  7. 新しい地形を囲むように、LightmassImportanceVolume の位置とスケールを調整します。

ImportHeightmapFile.png

マテリアルを適用する

ワールド アウトライナー で、ランドスケープ を選択します。次に、詳細ペインで Landscape Material を見つけます。ランドスケープ マテリアルの値が空の場合、チェック模様のグレーの画像が生成されます。ランドスケープの外観を変更するには、使用するマテリアルを選択します (例: MathWorksAerospaceContent > Environment > Apple_Hill > Materials > Grass_1)。マテリアルをクリックして選択し、左向きの Landscape Material 矢印をクリックしてマテリアルを適用します。

ApplyMaterials.png

再親ブループリント

表示ウィンドウの上部にある ブループリント をクリックし、レベル ブループリントを開く を選択します。ダイアログボックスで、クラス設定をクリックします。詳細 ペインの最初の項目は、クラス オプション > 親クラス です。親クラスSim 3d Level Script アクターに設定します。この設定により、このレベルを MATLAB で使用できるようになります。保存してダイアログを終了します。

Reparent.png

新しいランドスケープマップが使用できるようになりました。

NewLandscapeSmall.png

参考

外部の Web サイト