Difference between revisions of "メッシュと LOD"

From Second Life Wiki
Jump to navigation Jump to search
Line 117: Line 117:
[http://en.wikipedia.org/wiki/Normal_%28geometry%29 ''法線''] とはひとつの平面に対して垂直な何かです。  
[http://en.wikipedia.org/wiki/Normal_%28geometry%29 ''法線''] とはひとつの平面に対して垂直な何かです。  
この記事の範囲では、法線とは面が指し示す方向を表わすものです。  
この記事の範囲では、法線とは面が指し示す方向を表わすものです。  
殆どの 3D レンダラーは、Second Life ビューワを含めて、巧く面のひとつの側だけを描画します。
殆どの 3D レンダラーは、Second Life ビューワも含めて、巧妙に面の片側だけを描画します。
これはレンダリング・サイクルを節約しますが、モデルが ''多様体'' であることを前提としています。  
これはレンダリング・サイクルを節約しますが、モデルが ''多様体'' であることを前提としています。  
(その多様体は、法線が一緒に表示されないようにするやり方で囲い込まれているか、あるいは必要な時に両側の面を表示します)
(その多様体は、法線が一緒に表示されないようにするやり方で囲い込まれているか、あるいは必要な時に両側の面を表示します)
Line 124: Line 124:
2つの球体。左: 法線が外向き、右: 法線が内向き。
2つの球体。左: 法線が外向き、右: 法線が内向き。


===Smooth Normals===
===滑らかな法線===
In the case of a round or curved multiple face surface, a normal average can be used. A normal average allows inexpensive surface smoothing. Commonly known as "smooth normals" or "smooth shading", it is an invaluable tool when creating low polygon Second Life content. Smooth normals allow fewer faces to appear as a visually smooth surface, requiring far fewer faces. For example, a five-sided cylinder with smooth normals can appear completely round in Second Life. In some cases, a even a three-sided cylinder can appear perfectly round.
円形か湾曲した複合面の表面の場合、標準的な平均値が使えます。
標準的な平均値は、安価な表面の平滑化を許します。
通常、"滑らかな法線 (smooth normals)" または "滑らかな陰面消去 (smooth shading)" として知られるそれは、
ローポリゴンな Second Life コンテンツを制作する際に、すこぶる有益なツールとなります。
滑らかな法線は、より少ない面を視覚的に滑らかな表面として見せることを許します。はるかに少ない面の場合にです。
例を挙げると、滑らかな法線を持った5面のシリンダーは、 Second Life では完全に丸く見えます。
ある場合では、3面のシリンダーですら、完璧に丸く見えるのです。


{|
{|

Revision as of 00:23, 20 December 2012

詳細レベル

詳細レベル (LOD) は Second Life が、カメラが距離を遠ざけるにつれてオブジェクトの視覚的な詳細を低下させる仕組みです。

メッシュモデルをアップロードする際に、私たちは各レベルにおける詳細度を完全にコントロールできます。

  • アップローダーは4つの詳細レベルをサポートします。
  • アップローダーは、プレビューや大まかなインポートに合った低い LOD を自動的に生成します。 あなたは自分自身で低い LOD のモデルを作成することで、レベル間のよりスムーズな移行を獲得できます。
  • LOD の (詳細度が変化する観察距離における) 選択は、オブジェクトの大きさに影響されます。 同じ距離では、より大きなオブジェクトは小さなオブジェクトより詳細な LOD を見せます。 あなたが自分で LOD モデルを作成してアップロードする際には、これを忘れないでください。
  • アップローダーは、複数の LOD レベルのスロットに同じファイルを使用することを許します。 これはより小さなオブジェクトの詳細を確保するのに便利ですが、よく考えて使用してください ;高度に詳細なモデルを全てのスロットに使用すると、モデルの土地影響 (land impact) やレンダリング性能に不利な影響をを与えます。
  • 全ての LOD モデルの当り判定の境界 (bounding box) が、共通なサイズであることを確認してください。 これはオブジェクトが LOD レベルを遷移する際に、大きさを変えてしまうのを阻みます。 ほとんどのモデル作成アプリケーションは、複合したオブジェクトの当り判定境界を、同時に見る方法を提供しています。
  • 各々の LOD モデルは、最高の詳細度のモデルの全てのマテリアルを維持すべきです。 あなたのモデルが8つのマテリアルを持つなら、すべての LOD モデルも同様です。 これを無視すると、予測不能なテクスチャ位置の変化を引き起こすでしょう。 しかもマテリアルの必要性の無視は、アップローダーを止めないでしょう。 もしあなたのモデルがテクスチャを不適切に表示しているなら、LOD ファイルのマテリアルに目を凝らしてください。
  • LOD モデルを作成する為の大まかな指針は、各レベルでトライアングル数を 50%-75% 減らすことにあります。 例としては、最も詳細なモデルが 400 トライアングルだとすると、次のレベルでは 200 トライアングルを越えるべきではないでしょう。 さらに次のレベルは 100 以下で、最低では 50 トライアングルかそれ以下であるべきです。

メッシュモデルを順を追ってアップロードする為の Second Life の知識基盤 (Knowledge Base): モデルのアップロード

アップローダーの LOD セクションの簡単な手順

アップローダーが生成する LOD

  1. トップメニュー・バーから、 Build > Upload > Model... を選択します。
  2. "High" のファイルスロットで Browse をクリックし、あなたのコンピュータ上の .dae ファイルを選択し、 Open をクリックします。
  3. "Medium" レベルのスロットを反転表示させる為にクリックします。 どれかのレベルを反転表示させると、そのレベルのモデルが Preview 窓に表示されます。 LOD 間の遷移が満足できるまで、トライアングル数を上下させる為に各々のレベルで↑↓を使用してください。
  4. Calculate weights & fee をクリックし、好きな土地影響 (Land Impact) 数になるかを見ます。 しかしまだアップロードしないで! まだモデルの物理特性プロパティを調節する必要があります。

トライアングル数の制限とエラー閾値の完全な詳細は、 Upload Model UI reference を見てください。

ユーザーが作成する LOD ファイル

  1. トップメニュー・バーから、 Build > Upload > Model... を選択します。
  2. "High" の LOD スロットで、上述の最高詳細度のモデルを読み込みます。
  3. "Medium" スロットで、次の詳細度の LOD モデルを読み込みます。
  4. "Low" のファイルスロットで、最低より一段上の LOD モデルを読み込みます。
  5. "Lowest" スロットで、最低の LOD モデルを読み込みます。
  6. Calculate weights & fee をクリックし、好きな土地影響 (Land Impact) 数になるかを見ます。 しかしまだアップロードしないで! まだモデルの物理特性プロパティを調節する必要があります。

物理特性

Second Life は、カスタムの物理シェイブ (物理特性の形状) をサポートしており、それはメッシュオブジェクトと一緒にアップロードすることもできるし、独立してアップロードすることも可能です。 これにより、視覚的に複雑でありながら低い物理特性の重みをもったオブジェクトの制作が可能となります。 物理シェイブを作る際の Havok の公式 (そして非常に技術的で) かつ最良の演習のために、 Second Life 知識基盤で Best practices for creating efficient collision volumes を見てください。

Havok 物理のヒントと過度の単純化

Havok はキューブを愛しています。そしてここに、Havok がキューブを処理することに最適化されていることが殆ど瞬時に見てとれます。 逆に言うと、Havok がキューブ (より適切に言えば、空洞を持つかカットされたそれ)よりも複雑なオブジェクトに出会う時、そのオブジェクトの ひとつひとつのトライアングル を数えて、それぞれをどう扱うかを思案することを強いられます。だから物理シェイブはできる限り単純に保ってください!

さまざまなタイプの課題に対応する物理シェイプを作成するための指針が存在します;

  • 大きくてくぼんだ形状 (家とか)の為には、最低限のトライアングル数をもったカスタムの物理特性のメッシュを用います。より大きなトライアングルを物理メッシュに使うと、物理コストはより低下します。
  • 正確な衝突形状を必要としない非常に単純なオブジェクト (木の幹とか)では、箱型のような粗末な物理シェイプを使ってみてください。 さらにこの手法に関する情報が必要であれば、 Physics Optimization を見てください。
  • カスタムの物理特性のメッシュを効果的に使うには小さすぎるが、かなり正確な衝突モデルを必要とする、中間的なオブジェクトに対しては、下記のメッシュアップローダーの物理特性タブを利用してください。

物理シェイプ、それがメッシュのアップロードや LOD とどのように関係するか

ここにメッシュアップローダーの物理特性タブを使用するための手順の説明があります

このタブには殆ど無限の柔軟性があります。ここにあるのはアップローダーの物理特性タブの素早い説明であり、冗長ではありますが、解析ボタンの重要性と実用性を詳解することは必要なことです。

ステップ 1: 詳細レベル

  • あなたは LOD レベルのどれでも物理シェイプとして割り当てることができます。
  • あるいは、物理シェイプのために新しいファイルを挿入できます。
  • あるいは、アップローダーのまさにここで物理シェイプを生成することもできます。

ステップ 2: 解析

  • 解析ボタンを使用せずにアップロードされたメッシュの物理シェイプは、インワールドで、両側に面をもつ結果となるでしょう。 実例: ひとつの平面が両側に面をもつ壁としてアップロードされるでしょう。 キューブは空洞をもつ箱としてアップロードされます。 これは単純な形状を作るには便利なのですが、同時に、アバターやその他の物理オブジェクトをトラップするエリアを作り出す危険なことでもあります。
  • 解析ボタンを押すと一組の 凸面体 (穴や窪みのない形状)が生成されます。それは元々のメッシュ形状を近似したものです。 これらの凸面体の殻 (convex hull) は、塊として振る舞う物理シェイブを作り出します。 解析済みの物理シェイプの中で立ち往生したアバターや物理オブジェクトは、 Havok によってきちんとその塊から押し出されます。

ステップ 3: 単純化

  • ここからあなたは単純化ができます。
  • より複雑な形状の中の穴を塞いでください。 これは物理シェイプのために LOD レベルを利用するときに有用です。


いつでもゴールは最も単純な物理シェイプを可能とすることにあるべきです。 ここにあるアップローダーのツールを表面形状 (geometry) と物理特性の計算をできうる限り低く保つ為に利用してください。

UV マッピング

Second Life の中でビルドツールを使ったことのある人なら、誰でも既に UV マッピングは理解しています。 ただし、たぶんそれは異なる用語集の下でのことです。 UV マッピングでは、単純にテクスチャの繰り返し (U と V) とオフセット(補正値)を設定します。 もしあなたがビルドツールのテクスチャ・タブを子細に見たなら、U と V が既にテクスチャのオフセット値として使われているのが見えるでしょう。 そうした親しみの上で、このコンセプトがより簡単に出てくることを学んでください。

一般的な UV マッピングの技法

標準的な UV マッピング

最も普通の UV マップ技法では、メッシュの表面を偏平な部分に巧妙に分割します。 大抵の 3D モデリング・ソフトウェアパッケージにはこの機能が最初から装備されています。

このやり方でする UV マッピングには、長所も短所もあります:

  • この UV マッピング技法を使って作られた形状は、テクスチャがインワールドでどのように適用されるかを簡単に視覚化でき、それによりテクスチャの修正や描画が簡単になります
  • 大抵の 3D モデリング・ソフトウェアパッケージは、このマッピング技法 (投影マッピング、シーン・ライティング、諸々と併せることで)を利用して美しいテクスチャを生成するのに利用することができます。
  • 欠点は、より大きくとても複雑なオブジェクトで明らかになります。 複雑なオブジェクトをひとつの UV マップ上に平らに広げようとすると、あるものは簡単にピクセル(ないしテクスチャ空間)から飛び出して行きます。 その代りとして、大きなオブジェクトは、しばしば継ぎ目のない繰り返し可能なテクスチャを必要とします。

投影 UV マッピング

投影 UV マッピングは、インワールドでプリム・オブジェクトにテクスチャを適用するのに非常に似ています。 投影 UV マッピングの目的は、拡散発色の (diffuse) テクスチャの大きさを決め、回転させ、位置を補正することで、オブジェクトに完璧にそれを着せることにあります。

  • 投影 UV マッピングの利点は多用途であることです。 この方法でUV マップされた家には、どんな数の標準的な壁や屋根、あるいは室内装飾のテクスチャでも着せられます。
  • テクスチャは繰り返しと位置補正が可能です。
  • テクスチャはアニメーションできます。

欠点:

  • インワールドでのテクスチャサイズが過剰になる危険性。
  • 投影 UV マップを付けてアップロードされたモデルでは、モデリングソフトウェアのテクスチャ焼き付け機能の利点が利用できない。

テクスチャの焼き付け

大抵のモデリング・ソフトウェアパッケージでは、高度な機能として、標準的な UV マップと投影マップの両方が画像の描画に利用されています。 これはしばしば、テクスチャの"焼き付け"として言及されるものです。 その目的は、投影マップに格納されたすべてのテクスチャ情報を、標準的な UV マップに適合する画像を制作するため利用する、というものです。 この描画では、シーンの中のどんな照明やその他オブジェクトでも反映させることができます。

テクスチャの面

  • Second Life の COLLADA メッシュアップローダーは、8つまでの独立したテクスチャの面をサポートします。
  • 各々の LOD モデルは、すべて同じ数のテクスチャの面を持たねばなりません。
  • すべての独立した面は、同じ UV マップを使用する必要があります。
  • モデリング・ソフトウェアのそれぞれは、これを僅かづつ異なるやり方で扱っています。

あるモデラーは、異なるエリアに異なるマテリアルを割り当てることで、アップロードされるメッシュに独立したテクスチャの面を格納します。 また、別のモデラーは、これを独立したテクスチャにエリアを割り当てることで行います。 アプリケーション固有の情報の例がここにあります。

法線

法線 とはひとつの平面に対して垂直な何かです。 この記事の範囲では、法線とは面が指し示す方向を表わすものです。 殆どの 3D レンダラーは、Second Life ビューワも含めて、巧妙に面の片側だけを描画します。 これはレンダリング・サイクルを節約しますが、モデルが 多様体 であることを前提としています。 (その多様体は、法線が一緒に表示されないようにするやり方で囲い込まれているか、あるいは必要な時に両側の面を表示します)

Normal and flipped normal sphere.png 2つの球体。左: 法線が外向き、右: 法線が内向き。

滑らかな法線

円形か湾曲した複合面の表面の場合、標準的な平均値が使えます。 標準的な平均値は、安価な表面の平滑化を許します。 通常、"滑らかな法線 (smooth normals)" または "滑らかな陰面消去 (smooth shading)" として知られるそれは、 ローポリゴンな Second Life コンテンツを制作する際に、すこぶる有益なツールとなります。 滑らかな法線は、より少ない面を視覚的に滑らかな表面として見せることを許します。はるかに少ない面の場合にです。 例を挙げると、滑らかな法線を持った5面のシリンダーは、 Second Life では完全に丸く見えます。 ある場合では、3面のシリンダーですら、完璧に丸く見えるのです。

Smooth cylinder next to not smooth.png Two five-sided cylinders. Top: Solid normals. Bottom: Smooth normals.

Note where both cylinders intersect the walls, they show the profile of the actual geometry.

Candlestick.png Applying smooth normals to some areas and not to others can be useful for adding detail or highlighting edges.

Low polygon modeling

It is important to remember that Hollywood-quality digital models are extremely costly to use in Second Life. Real-time rendering means Second Life must stream triangles and data near the speed of light. Make sure each and every polygon and bit counts! There are many low polygon modeling techniques and software-specific tutorials and tools available around the web.

The goal is to save every triangle you can on the model you plan to upload:

  • Ensure that any flat surface uses the smallest number of triangles possible.
  • Use smooth normals to "fake" smooth curved surfaces.
  • Use low polygon rendering tricks to bake detailed textures, which can provide the illusion of more geometric detail.

Low polygon texture baking tricks

It is possible to create a very highly detailed model and use it to render gorgeous textures on the faces of a very simple low polygon (Second Life friendly) version. In this case, the name "low polygon modeling" sounds slightly deceptive because you will model and render a very high polygon scene for the purposes of creating the textured illusion. However, the final product is a very efficient, low-polygon model with very detailed textures mapped onto it.

Most modeling software packages have features built in to facilitate this technique.