Difference between revisions of "メッシュと LOD"
Atami Merlin (talk | contribs) |
Atami Merlin (talk | contribs) m (シエイブ → シェイプ に修正) |
||
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{multi-lang|1=Mesh_and_LOD|2=/ja}} | |||
==詳細レベル== | ==詳細レベル== | ||
Line 36: | Line 37: | ||
==物理特性== | ==物理特性== | ||
Second Life | Second Life は、カスタムの物理シェイプ (物理特性の形状) をサポートしており、それはメッシュオブジェクトと一緒にアップロードすることもできるし、独立してアップロードすることも可能です。 | ||
これにより、視覚的に複雑でありながら低い物理特性の重みをもったオブジェクトの制作が可能となります。 | これにより、視覚的に複雑でありながら低い物理特性の重みをもったオブジェクトの制作が可能となります。 | ||
物理シェイプを作る際の Havok の公式 (そして非常に技術的で) かつ最良の演習のために、 | |||
Second Life 知識基盤で [http://community.secondlife.com/t5/English-Knowledge-Base/Best-practices-for-creating-efficient-collision-volumes/ta-p/984115 Best practices for creating efficient collision volumes] を見てください。 | Second Life 知識基盤で [http://community.secondlife.com/t5/English-Knowledge-Base/Best-practices-for-creating-efficient-collision-volumes/ta-p/984115 Best practices for creating efficient collision volumes] を見てください。 | ||
===Havok 物理のヒントと過度の単純化=== | ===Havok 物理のヒントと過度の単純化=== | ||
[https://wiki.secondlife.com/wiki/Physics_engine Havok] はキューブを愛しています。そしてここに、Havok がキューブを処理することに最適化されていることが殆ど瞬時に見てとれます。 | [https://wiki.secondlife.com/wiki/Physics_engine Havok] はキューブを愛しています。そしてここに、Havok がキューブを処理することに最適化されていることが殆ど瞬時に見てとれます。 | ||
逆に言うと、Havok がキューブ (より適切に言えば、空洞を持つかカットされたそれ)よりも複雑なオブジェクトに出会う時、そのオブジェクトの ''ひとつひとつのトライアングル'' | 逆に言うと、Havok がキューブ (より適切に言えば、空洞を持つかカットされたそれ)よりも複雑なオブジェクトに出会う時、そのオブジェクトの ''ひとつひとつのトライアングル'' を数えて、それぞれをどう扱うかを思案することを強いられます。だから物理シェイプはできる限り単純に保ってください! | ||
さまざまなタイプの課題に対応する物理シェイプを作成するための指針が存在します; | さまざまなタイプの課題に対応する物理シェイプを作成するための指針が存在します; | ||
Line 62: | Line 63: | ||
====ステップ 2: 解析==== | ====ステップ 2: 解析==== | ||
* 解析ボタンを使用せずにアップロードされたメッシュの物理シェイプは、インワールドで、両側に面をもつ結果となるでしょう。 実例: ひとつの平面が両側に面をもつ壁としてアップロードされるでしょう。 キューブは空洞をもつ箱としてアップロードされます。 これは単純な形状を作るには便利なのですが、同時に、アバターやその他の物理オブジェクトをトラップするエリアを作り出す危険なことでもあります。 | * 解析ボタンを使用せずにアップロードされたメッシュの物理シェイプは、インワールドで、両側に面をもつ結果となるでしょう。 実例: ひとつの平面が両側に面をもつ壁としてアップロードされるでしょう。 キューブは空洞をもつ箱としてアップロードされます。 これは単純な形状を作るには便利なのですが、同時に、アバターやその他の物理オブジェクトをトラップするエリアを作り出す危険なことでもあります。 | ||
* 解析ボタンを押すと一組の ''凸面体'' (穴や窪みのない形状)が生成されます。それは元々のメッシュ形状を近似したものです。 これらの凸面体の殻 (convex hull) | * 解析ボタンを押すと一組の ''凸面体'' (穴や窪みのない形状)が生成されます。それは元々のメッシュ形状を近似したものです。 これらの凸面体の殻 (convex hull) は、塊として振る舞う物理シェイプを作り出します。 解析済みの物理シェイプの中で立ち往生したアバターや物理オブジェクトは、 Havok によってきちんとその塊から押し出されます。 | ||
====ステップ 3: 単純化==== | ====ステップ 3: 単純化==== | ||
Line 117: | Line 118: | ||
[http://en.wikipedia.org/wiki/Normal_%28geometry%29 ''法線''] とはひとつの平面に対して垂直な何かです。 | [http://en.wikipedia.org/wiki/Normal_%28geometry%29 ''法線''] とはひとつの平面に対して垂直な何かです。 | ||
この記事の範囲では、法線とは面が指し示す方向を表わすものです。 | この記事の範囲では、法線とは面が指し示す方向を表わすものです。 | ||
殆どの 3D レンダラーは、Second Life | 殆どの 3D レンダラーは、Second Life ビューワも含めて、巧妙に面の片側だけを描画します。 | ||
これはレンダリング・サイクルを節約しますが、モデルが ''多様体'' であることを前提としています。 | これはレンダリング・サイクルを節約しますが、モデルが ''多様体'' であることを前提としています。 | ||
( | (その多様体は、法線が一緒に展開表示されないようにするやり方で囲い込まれているか、あるいは、必要な時に両側の面を表示します) | ||
[[File:normal and flipped normal sphere.png|256px]] | [[File:normal and flipped normal sphere.png|256px]] | ||
2つの球体。左: 法線が外向き、右: 法線が内向き。 | 2つの球体。左: 法線が外向き、右: 法線が内向き。 | ||
=== | ===滑らかな法線=== | ||
円形か湾曲した複合面の表面の場合、標準的な平均値が使えます。 | |||
標準的な平均値は、安価な表面の平滑化を与えます。 | |||
通常、"滑らかな法線 (smooth normals)" または "滑らかな陰面消去 (smooth shading)" として知られるそれは、 | |||
ローポリゴンな Second Life コンテンツを制作する際に、すこぶる有益なツールとなります。 | |||
滑らかな法線は、より少ない面で視覚的に滑らかな表面として見せることを許します。はるかに少ない面の場合にです。 | |||
例を挙げると、滑らかな法線を持った5面のシリンダーは、 Second Life では完全に丸く見えます。 | |||
ある場合では、3面のシリンダーですら、完璧に丸く見えるのです。 | |||
{| | {| | ||
|- | |- | ||
|[[File:smooth cylinder next to not smooth.png|256px]] | |[[File:smooth cylinder next to not smooth.png|256px]] | ||
| | |2つの5面シリンダー. 上: 硬い法線. 下: 滑らかな法線. | ||
両方のシリンダーが壁と交錯する所では、両者とも実際の表面形状 (geometry) の輪郭を見せていることに注意 | |||
|- | |- | ||
|[[File:candlestick.png|256px]] | |[[File:candlestick.png|256px]] | ||
| | |滑らかな法線をあるエリアに適用し、他にはしないことは、ディテールを加えたりエッジを強調表示させたりするために有用です。 | ||
|} | |} | ||
== | ==ローポリゴン・モデリング== | ||
Second Life でハリウッド・クォリティのデジタル・モデルを使うというのは、極めて高価なものだということを忘れないことが重要です。 | |||
リアルタイム・レンダリングは、Second Life がほとんど光速でトライアングルやデータを送出しなければならないことを意味します。 | |||
すべてのポリゴンやビット数のことを意識してください! | |||
[http://en.wikipedia.org/wiki/Low_poly ローポリゴン]・モデリングの技法やソフトウェア固有のチュートリアルやツールは、ウェブを巡って見ることが可能です。 (訳注 上のローポリゴンは和訳がないので、[http://ja.wikipedia.org/wiki/法線マッピング 法線マッピング]を直接見てください) | |||
ゴールは、あなたがアップロードしようとするモデルの各々のトライアングルを節約することにあります: | |||
* | * どの平らな表面も、可能な限り最小限のトライアングル数の使用で済むようにしてください。 | ||
* | * 滑らかな曲面に "見せ掛ける" ために、滑らかな法線を使ってください。 | ||
* | * ディテールをもったテクスチャを焼いて、ローポリゴン・レンダリングのトリックを利用してください。それは、さらに表面形状の詳細さの錯覚をもたらします。 | ||
=== | ===ローポリゴン・テクスチャを焼き付けるトリック=== | ||
とても高度に詳細なモデルを制作し、それをとてもシンプルなローポリゴン (Second Life に優しい)バージョンの表面に、華麗なテクスチャとして描画するために利用することは重要なことです。 | |||
この場合、"ローポリゴン・モデリング"という名前は、少しばかりごまかしに響きます。 | |||
なぜなら、あなたはテクスチャの幻影を創りだすためにモデルを作り、とてもハイポリゴンなシーンを描画するだろうからです。 | |||
しかしながら、最終的な成果は非常に効果的で、ディテールに富んだテクスチャマップを備えたローポリゴン・モデルになります。 | |||
ほとんどのモデリング・ソフトウェア・パッケージは、この技法の手助けとなる機能が組み込まれています。 | |||
---- | |||
[[Good_Building_Practices]] に戻る | |||
[[Category:Mesh]] |
Latest revision as of 00:36, 22 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
- トップメニュー・バーから、 Build > Upload > Model... を選択します。
- "High" のファイルスロットで Browse をクリックし、あなたのコンピュータ上の .dae ファイルを選択し、 Open をクリックします。
- "Medium" レベルのスロットを反転表示させる為にクリックします。 どれかのレベルを反転表示させると、そのレベルのモデルが Preview 窓に表示されます。 LOD 間の遷移が満足できるまで、トライアングル数を上下させる為に各々のレベルで↑↓を使用してください。
- Calculate weights & fee をクリックし、好きな土地影響 (Land Impact) 数になるかを見ます。 しかしまだアップロードしないで! まだモデルの物理特性プロパティを調節する必要があります。
トライアングル数の制限とエラー閾値の完全な詳細は、 Upload Model UI reference を見てください。
ユーザーが作成する LOD ファイル
- トップメニュー・バーから、 Build > Upload > Model... を選択します。
- "High" の LOD スロットで、上述の最高詳細度のモデルを読み込みます。
- "Medium" スロットで、次の詳細度の LOD モデルを読み込みます。
- "Low" のファイルスロットで、最低より一段上の LOD モデルを読み込みます。
- "Lowest" スロットで、最低の LOD モデルを読み込みます。
- 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 ビューワも含めて、巧妙に面の片側だけを描画します。 これはレンダリング・サイクルを節約しますが、モデルが 多様体 であることを前提としています。 (その多様体は、法線が一緒に展開表示されないようにするやり方で囲い込まれているか、あるいは、必要な時に両側の面を表示します)
滑らかな法線
円形か湾曲した複合面の表面の場合、標準的な平均値が使えます。 標準的な平均値は、安価な表面の平滑化を与えます。 通常、"滑らかな法線 (smooth normals)" または "滑らかな陰面消去 (smooth shading)" として知られるそれは、 ローポリゴンな Second Life コンテンツを制作する際に、すこぶる有益なツールとなります。 滑らかな法線は、より少ない面で視覚的に滑らかな表面として見せることを許します。はるかに少ない面の場合にです。 例を挙げると、滑らかな法線を持った5面のシリンダーは、 Second Life では完全に丸く見えます。 ある場合では、3面のシリンダーですら、完璧に丸く見えるのです。
2つの5面シリンダー. 上: 硬い法線. 下: 滑らかな法線.
両方のシリンダーが壁と交錯する所では、両者とも実際の表面形状 (geometry) の輪郭を見せていることに注意 | |
滑らかな法線をあるエリアに適用し、他にはしないことは、ディテールを加えたりエッジを強調表示させたりするために有用です。 |
ローポリゴン・モデリング
Second Life でハリウッド・クォリティのデジタル・モデルを使うというのは、極めて高価なものだということを忘れないことが重要です。 リアルタイム・レンダリングは、Second Life がほとんど光速でトライアングルやデータを送出しなければならないことを意味します。 すべてのポリゴンやビット数のことを意識してください! ローポリゴン・モデリングの技法やソフトウェア固有のチュートリアルやツールは、ウェブを巡って見ることが可能です。 (訳注 上のローポリゴンは和訳がないので、法線マッピングを直接見てください)
ゴールは、あなたがアップロードしようとするモデルの各々のトライアングルを節約することにあります:
- どの平らな表面も、可能な限り最小限のトライアングル数の使用で済むようにしてください。
- 滑らかな曲面に "見せ掛ける" ために、滑らかな法線を使ってください。
- ディテールをもったテクスチャを焼いて、ローポリゴン・レンダリングのトリックを利用してください。それは、さらに表面形状の詳細さの錯覚をもたらします。
ローポリゴン・テクスチャを焼き付けるトリック
とても高度に詳細なモデルを制作し、それをとてもシンプルなローポリゴン (Second Life に優しい)バージョンの表面に、華麗なテクスチャとして描画するために利用することは重要なことです。 この場合、"ローポリゴン・モデリング"という名前は、少しばかりごまかしに響きます。 なぜなら、あなたはテクスチャの幻影を創りだすためにモデルを作り、とてもハイポリゴンなシーンを描画するだろうからです。 しかしながら、最終的な成果は非常に効果的で、ディテールに富んだテクスチャマップを備えたローポリゴン・モデルになります。
ほとんどのモデリング・ソフトウェア・パッケージは、この技法の手助けとなる機能が組み込まれています。