ハイポリとローポリの製作からLOD設定までの流れ

twitter でそのような話になったのでまとめてみます。以下の項目について書いています。

  • ハイポリのテクスチャーを、UV Map が全く異なるローポリに移植する
  • SecondLife 内で LOD 切替に対応したオブジェクトを制作する

 

1) ハイポリをつくる

今回は、下の図のような形をつくりました。5枚の花びらのような形を Screw Modifier でねじる変形をさせています。

 

2) ローポリをつくる

ただの筒です。サイズはハイポリよりやや小さめ(重ねて配置するとハイポリが少しはみ出す程度)がいいみたいです。同じレイヤーに置くと見づらいしベイクの邪魔になるので、私は別レイヤーに置いています。

 

3) ハイポリのテクスチャーベイク

マテリアルを設定してベイクします。今回はロープのようなものを想定してマテリアルをつけました。

 

でも、焼き上がりはだいたいパッとしないのです。そこで、別途 Ambient Occlusion1) だけ焼いたものを GIMP で重ねて立体感を強調するようにしています。

 

AO を重ねたらずいぶん重厚な表現になりました。さて、焼き上がったテクスチャーを blender の中で実際に貼り付けます。

 

4) ローポリのテクスチャーベイク

ローポリのベイクの準備として、ローポリを Unwrap し、新規テクスチャーをつくっておきます。

 

ココからがいちばん難しいところでしょうが、何度かやれば体が覚えると思います。がんばってください。手順は以下の通りです。

  1. Object Mode でハイポリを選択する
  2. Shift を押しながらローポリのあるレイヤーを選択する
    (こうすると2枚のレイヤーが同時に表示されます)
  3. Shift を押しながらローポリを選択する
  4. Edit Mode に入り
  5. Bake Mode を「Texture」にし、Selected to Active にチエックを入れる
  6. Bake する

 

無事に焼き上がったら、ローポリにも焼けたテクスチャーを貼り付けます。

焼けたテクスチャーのところどころに空白ができてしまうことがありますが、そのときは、ベイクのところの「Bias」の数値を上げながら何度かベイクして、良い結果が出るまで粘りましょう。

 

5) ハイポリに LOD 用ローポリのダミー面を追加する

ハイポリを選択し、 Edit Mode で面を追加します。この面には「ローポリのマテリアル」を割り当てます。この面は SecondLife 内で実際に見えてはいけないダミーの面なので、見えない場所に縮小して配置します。S → 0 で完全に面積をゼロにしても構いませんが、 Remove Doubles は適用しないようにしてください。

SecondLife に持ち込んだ後でテクスチャーを貼る際には、実際にこの面が存在していた方が作業がしやすいと思います。そのため、私はゼロにはせず、小さな面として残しておくことが多いです。

ここまで済んだらハイポリは完成です。Collada 形式で書き出しておきましょう。

 

6) ローポリに LOD 用ハイポリのダミー面を追加する

ハイポリのときと同様に、ローポリでもダミー面をつくっておきます。

これでローポリも完成です。同じく Collada で書き出します。

 

7) アップロード

今回は、以下のような LOD 設定でアップロードしてみました。

  • High : 製作したハイポリ
  • Med : 製作したローポリ
  • Low : 製作したローポリ
  • Lowest : 0 を指定

 

8) インワでテクスチャーを貼り付けて完成

うまくいけば、動画のように切り替わるはずです。

 

ハイポリとローポリの UV Map に互換性があり、1枚のテクスチャーを共有する場合はダミーの面は必要ありません。今回のように、両者の UV Map に共通点がなく、異なるテクスチャーを切り替える必要がある場合、私はダミーの面を介することで実現させています。

ダミーの面をつくることで、ハイポリとローポリは

  • 存在するマテリアルの種類が完全に一致
  • マテリアル数が等しい

という状況が生まれます。これが、ダミーの面をつくる理由です。実際、この手順を踏まずにアップロードを試みるとエラーが出てアップロード不可になります。

ただ、別のアプローチがあるのではないか? と、疑問を持っていることも確かです。たとえば、2枚のテクスチャーを別の UV Map を使って1枚にまとめてしまう…とか。これだと、テクスチャーの解像度を犠牲にすることになりますが、ダミーの面がなくてもいけそうです。

そういうわけで、「ココに書いた方法が正しい!」という主張をしているわけではありませんので、ご理解の程、よろしくお願い致します。また、他にもこういう方法があるよ!という記事が公開されないかなぁと、ほんのり期待をしつつw

1) 以下、AO と記述