Skinned Metaball Builder マニュアル -イントロダクション-

 

 

Skinned Metaball Builder Manual -イントロダクション-

 

概要 

"Skinned Metaball Builder" はメタボールでメッシュデータを生成する機能を提供するアセットです。

以下のような特徴があります:


エディタとランタイムいずれでも動作します.

www.youtube.com

 

- プラットフォームに依存していません.

- 作成したメッシュをAssetとして保存できます(Editorの場合).

- 自動的にスキニングされますので、アニメーションを付けるのに適します(オプション).

www.youtube.com

 

- シンプルながらテクスチャマッピングをサポートしています.

www.youtube.com

 

- Unityスクリプト(C#)で実装されており, カスタマイズが可能です.

 

クイックスタート

youtu.be

字幕ONで解説が表示されます(英語)

  1. "Metaball/Prefabs/SkinnedSeed" をシーンへドラッグ&ドロップします.
  2. ヒエラルキーから "SkinnedSeed.SourceTree" を選択します.
  3. "Ctrl+Shift+C" もしくは "Command+Shift+C" を入力して、ノードを追加します.
  4. それを移動させたり、 "base radius" を好きなように編集します.
  5. 3-4 を繰り返します(適宜ノードの追加先オブジェクトを選択し直します).
    "SourceTree"下のグラフ構造は、メッシュのビルド時にスケルトン情報へ反映されます.
  6. "Ctrl+Shift+R" または "Command+Shift+R" を入力し、メッシュをビルドします.
  7. エディタの実行ボタンを押した後"SkinnedSeed/BoneRoot"以下のノードを選択し,
    回転させてみてください(スキニングされている様子が確認できます).
  8. メニューコマンド"Metaball->SavePrefab"でグループ全体をPrefabとして、
    "Metaball->SaveMesh" でメッシュのみをセーブすることができます.

サンプル

3つのサンプルシーンがパッケージに含まれています.

それぞれシンプルに実装されていますが、このアセットの機能を知るために役立ちます.

 

1.Dungeon

www.youtube.com

"Dungeon" サンプルは実行中にメタボールメッシュを更新する方法を示しています.

洞窟の中を歩いたり、掘ったりすることができます.

 

操作方法:

A,W,S,D で移動

Space で「掘る」

マウスの移動で見回す 

 

2.Animations

f:id:nkdtr:20150603172052p:plain

"Animation" サンプルはスキニングされたモデルを動かす方法を紹介しています.

二つのオブジェクトを含んでいます:

-"Golem" : Unityのアニメーション

-"Tentacle" : 物理(Joint)

3.Models

色々なモデルのサンプルです.

 

 

技術情報

アルゴリズムを知ることはパラメーターの調節やカスタマイズの助けになります.

 

メタボール曲面の生成

 

1. メタボール情報(中心の座標、半径、濃度)を元にスカラー場(格子点にスカラー値を割り当てたもの)を計算します.

2. 「マーチングキューブス」アルゴリズムによりメッシュ情報に変換します( Marching cubes - Wikipedia, the free encyclopedia ).

 

 

 

制約、限界

  • 格子点や頂点の数にリミットを設けてあります (デフォルト値 1000000/300000).
    これはソースコードMetaballBuilder.csに定義されています.
    "_maxGridCellCount", "_maxVertexCount"で検索してください.
    注意 : 格子点や頂点数が大きすぎる場合、システムのフリーズを招く恐れがあります.
  • 格子点の数によっては、メッシュのビルドに長い時間がかかります.
    毎フレームのビルドには不向きです (低い解像度のメタボールを扱う場合や、ハイスペックマシンでの動作を前提とする場合は例外です).
  • メッシュに対して一つのマテリアルのみ割り当てられます.
  • テクスチャマッピングについてはシンプルな平行投影のみをサポートしています.