UDN
Search public documentation:

ImportingSkeletalLODsJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

骨格 LOD のインポート

ドキュメントの概要:骨格メッシュの低 LOD (ディテールのレベル) バージョンのインポート方を説明。

ドキュメントの変更ログ: AndrewMoise? により作成。 Laurent Delayen により更新。

概要

骨格メッシュのボーンと頂点のすべてを更新することは、大変コストがかかることがあるため、キャラクターを遠くに見るときは、メッシュのより低い LOD (ディテールのレベル) バージョンを使用することができます。これは、1 つのシーンで多数のキャラクターをレンダリングするときに、重要な最適化になり得ます。

UnrealEngine 3 では、骨格メッシュのためのメッシュ LOD およびボーン LOD の両方をサポートします。ローディテールのメッシュをアーティストが作成し、既存の骨格メッシュに使用するため、LOD としてインポートします。LOD を追加した後は、ゲーム中に LOD がどのような距離で使用されてもコントロールできます。メッシュのより低い LOD バージョンをレンダリングするときは、アニメーション システムは、要求されたボーンのみをアニメーション化して更新します。

UnrealEngine 2 では、骨格メッシュのローポリ バージョンを自動的に生成するためのコードがありました。しかしこの機能は、アーティストが作成した LOD よりもはるかに悪い結果になったため、取り除かれました。 低LODメッシュを自動的に生成するツールはなく、これはアーティストが手動で(Max, Maya, またはパイプラインにある使用している 3D パッケージのどれでも)行なわなければならず、 アニメーションセットビューア へのインポートも同様に行わなければいけません。 低ディティールメッシュはアーティストにより作成され、既存のSkeletalMeshに使用するため、LOD としてインポートされます。LODを追加すると、ゲームでどのディスタンスでLODが使用されるかを制御します。メッシュの低LODバージョンをレンダリング時、アニメーションシステムは要求されたボーンのみをアニメーション化し、更新します。

Low-LOD メッシュの作成

メッシュのより低い LOD バージョンをインポートするときは、含まれるトライアングルとボーンが「ベース」のハイポリ バージョンよりも、少数にすべきです。メッシュを LOD として使用するには以下の条件が必要です。

  • ボーンを取り除く場合、ボーンは、階層の末端からのみ取り除くことができます。したがって、指を取り除くのは、LOD にとって良いアイデアですが、脊椎などからボーンを取り除くことはできません。
  • ベース メッシュに対するルート ボーンと LOD は同じである必要があります。
  • ベース メッシュの階層と LOD は同じである必要があります。

より低い LOD バージョンのメッシュでは、スキンニング コストが減少するので、頂点ごとに影響を一つだけ持たせるのが良い方法である場合がよくあります。「ソフト」な頂点のある LOD をインポートすると、警告がポップアップされますが、この警告は、..Editor.ini ファイル(AnimSetViewer セクションの CheckSingleInfluenceLOD フラグ)で無効にすることができます。

LOD を表示する

アニメーション セット ビューアのツールバーにはいくつかのボタンがあり、メッシュ用のさまざまな LOD レベルがどのように見えるかが分かります。

LODButtons.jpg

オート スクリーン上のメッシュのサイズに基づいて、使用する LOD レベルを自動的に選択します。ゲーム中にメッシュがどのように見えるかをプレビューできます。
B ディスプレイに「ベース」メッシュ(LOD 0 など) を使用するように強制します。
1 ディスプレイに LOD 1 を使用するように強制します。
2 ディスプレイに LOD 2 を使用するように強制します。この場合、このメッシュのためにインポートされた LOD 2 はないので、グレイになります。
3 ディスプレイに LOD 3 を使用するように強制します。このメッシュのためにインポートされた LOD 3 はありません。

頂点およびボーン カウントに加えて、現在使用中の LOD を表示する 3D ビューポートの一番上にもいくつか情報があります。アニメーション セット ビューアで、「Show Bones」(ボーンを表示) または「Show Bone Name」(ボーン名を表示) をオンにした場合、現在表示されている LOD のために更新されたボーンのみが表示されます。

LOD をインポートする

まず LOD を追加したい骨格メッシュのあるアニメーション セット ビューアを開けます。次に [File] メニューから 「Import Mesh LOD」(メッシュ LOD をインポートする) を選択します。そのメッシュのより低いバージョンを含んだ PSK ファイルを指定するように求められます。インポートする .PSK を選択すると、コンボ ボックスがポップアップされ、そのメッシュをどの LOD レベルとしてインポートするかが選択できます。LOD 0 は、「base」(ベース) または最高のポリ メッシュです。LOD 1 は、一段階下がったもので、以下同様に続きます。既に存在する LOD でのインポートは、既存の LOD メッシュを置換することになります。

インポートが上手く行き、エラーが何も生じなければ、ツールバーにある適切な [Force LOD] (LOD を強制する)ボタンを押して、メッシュが正しく導入されているか確認できます。

LOD を設定する

LOD が適切に機能するために調整する必要のある設定がいくつかあります。それぞれの LOD レベルには、右側の 「Mesh」 タブの 「LODInfo」配列にエントリがあります。

LODInfo.jpg

このアレイのエントリ 0 は無視してください。「ベース」メッシュを表しています。

DisplayFactor
(表示ファクタ)
LOD を使用する前に、スクリーン上でメッシュをどれくらいの大きさにするかを制御します。数字が小さいほど、遠くにあるメッシュに LOD を使用することを意味します。3D ウィンドウの一番上にメッシュのプレビュー用の現在の表示ファクタが表示されます。それぞれの連続する LOD レベルの表示ファクタは、そのすぐ前よりも小さくする必要があります。
LODHysteresis
(LOD ヒステリシス)
2 つの LOD レベルの境界線の真上で、メッシュの「ちらつき」を避けるために、このパラメータで、単純なバージョンから複雑なバージョンに移行するときに、「バイアス」を導入することができます。
LODMaterialMap
(LOD マテリアル マップ)
メッシュの LOD バージョンには、ベース メッシュと同じマテリアルを使用する必要があります。しかし、メッシュをインポートするときに、マテリアルは、異なる順序でインポートすることができます。このアレイで、骨格メッシュのマテリアル 配列のどのエレメントを、LOD の各セクションにマップするか選択できます。

マテリアルと LOD

LOD をセットアップする最も簡単な方法は、ベース メッシュと同じマテリアルを LOD に使用することです。それぞれの SkeletalMeshComponent (骨格メッシュのインスタンス)は独自のマテリアル アレイを持っており、これによって骨格メッシュ マテリアル アレイにあるマテリアルをオーバーライドすることが可能です。そのため、あらゆる LOD で使用するマテリアルをすべてこのアレイに保存したいと思われるでしょう。インスタンス単位のオーバーライドの例としては、異なるチーム スキンやフェイスを適用するなどがあります。しかし、ベース メッシュが使用していないマテリアルを使用する LOD をどうしても作成したいというのなら、可能です。骨格メッシュのマテリアル アレイに、ベース メッシュが使用していない新しいエレメントを追加し、そこへ新しいマテリアルを置きます。次に、LODMaterialMap を使用して、その LOD が新しいスロットを指すようにします。

LOD、ソケット、および物理資産

すべての LOD に現れるボーンだけにソケットを作成することができます。新しいソケットを作成するときは、すべての LOD にあるボーンのみがボーン選択コンボに現われます。ソケットに必要なボーンのない新しい LOD をインポートしようとしても、エラーが生じるだけです。

物理資産が要求するボーンは、たとえ LOD のメッシュに必要なくても、常に更新されています。これは、ボーン単位の衝突検知に使用するのですが、そのとき遠くに居る誰かがそのボーンを変更してはいけないためです。