Skinned Metaball Builder マニュアル -リファレンス-

Skinned Metaball Builder マニュアル -リファレンス-

 

0. メニューコマンド

 

f:id:nkdtr:20150604194340p:plain

 

Save Prefab :

 "MetaballSeed"下に属するGameObjectを選択時のみ有効です.

 選択されているメタボール構造をPrefabとして保存します.

 (Projectビューへのドラッグ&ドロップ (通常のPrefab生成手順)を行った場合, 生成されたPrefabにはメッシュデータが設定されていない状態になります(該当のメッシュデータがAssetではなくシーンに属しているため)).

Save Mesh :

 "MetaballSeed"下に属するGameObjectを選択時のみ有効です.

 メッシュのみをAssetとして保存します.

 メッシュデータはUnityに組み込まれているMeshFilterやMeshColliderにセットして使用できます.

RebuildMesh :

 "MetaballSeed"下に属するGameObjectを選択時のみ有効です.

 メッシュをビルドします.

CreateChild :

 "MetaballNode"コンポーネントの付いたGameObjectを選択時のみ有効です.

選択されたGameObjectの子としてMetaballNodeコンポーネント付きのGameObjectを新たに生成します.

 

1. SkinnedMetaballSeed / StaticMetaballSeed コンポーネント

 メタボールメッシュの生成単位を示すコンポーネントです.

Skinned と Static 二種類の MetaballSeed コンポーネントがあります.

Skinned は Static を兼ねますが、メッシュのビルドにかかるコストが多少大きいです (メモリ使用量及び計算時間).

 

プロパティ

 Prefabを用いた場合 ("Metaball/Prefabs"下に二つのPrefabがあります), メタボールメッシュを生成するには事足りるだけのプロパティがあらかじめ設定されています.

このドキュメントは、プロパティをどう調整すればよいのか知る手掛かりになります.

f:id:nkdtr:20150604160409p:plain

Bone Root :

 ここで設定したGameObjectの下に「スケルトン」データが生成されます.

SkinnedMeshRendererの "RootBone"としても使用されます.

Source Root :

 このGameObjectの下にメタボール情報を定義します.

この下に存在するGameObjectは "MetaballNode"コンポーネントを持つことが想定されています.

 このGameObject以下のいずれかを選択しているとき、ショートカットコマンド "Ctrl(Command) + Shift + C" (create child metaball node)が有効になります.

Cell Obj Prefab :

 メッシュのビルド時に構築される「スケルトン」のノードとして使用されるPrefabです.

 これを差し替えることでオブジェクトの挙動をカスタマイズできます。

 このPrefabには"MetaballCellObject"コンポーネント(またはその拡張)が付加されている必要があります.

 メタボールについて特殊なコントロールが不要な場合は、ここにnullを設定しても問題ありません。

Grid Size :

 格子1マスのサイズ(refer http://en.wikipedia.org/wiki/Marching_cubes for details)です.

 小さい値にすることで「解像度の高い」メッシュが生成されますがコストが上がります。大きい値ではその逆です。

Auto Grid Size (Ver1.02~)

 Grid Size を無視し、Auto Grid Qualityの値に従って自動的に格子サイズを決定します。

Auto Grid Quality (Ver1.02~)

 格子サイズを自動決定するためのパラメータです。

この値が大きいほど解像度の高いメッシュを生成することになります。

UV Project Node :

 テクスチャ座標を決めるためのガイドとなるオブジェクトです.

 どのような形でテクスチャが貼られるかを示す直方体のGizmoが表示されます.

 繰り返さない ("wrap mode"=clamp) テクスチャを使用するとこの挙動がよく分かるはずです.

Power Threshold :

 どの程度の「濃度」で「内部」と見なすかを決める閾値です.

この値が小さいほどより大きな領域が内部と見なされます ( メッシュの見た目が大きくなります ).

Base Radius :

 エディタのためにあります.

MetaballNodeを追加した時、半径のデフォルト値がこの値になります.

B Reverse :

 Trueのとき、メッシュが裏返しで生成されます.

洞窟のようなものを作る時に便利です ("Dungeon" サンプルを参照).

B Use Fixed Bounds :

 Trueのとき、次のプロパティ"FixedBounds"が有効になり,

メタボール計算のための格子が固定されます.

 Falseのとき、格子の境界はメタボール情報に応じて自動計算されます.

 このオプションは、メッシュに「安定性」を求める場合に有効です (用いない場合、格子の境界が変化することでメッシュの頂点座標が小さな影響を受けます).

 ただし、固定された境界の外側にはメッシュが生成されず切り落とされてしまいます.

Fixed Bounds :

 上の"B Use Fixed Bounds"を参照してください.

SkinnedMesh (SkinnedMetaballSeed) :

 生成されたメッシュを受け取るSkinnedMeshRenderer.

MeshFilter (StaticMetaballSeed) :

 生成されたメッシュを受け取るMeshFilter.

 

 

API

void CreateMesh();

 メタボール情報からメッシュを再生成します.

メニューコマンド "Rebuild Mesh"と同等です.

 

Mesh Mesh { get; set; } 

 現在のメッシュデータを取得/設定します.

 

2. Metaball Node コンポーネント

 

 

f:id:nkdtr:20150604203818p:plain

Properties

Base Radius 

 メタボールの半径です.

メタボールの半径はtransformのscaleの影響を受けないことに注意してください.

 

B Subtract

 trueのとき、メタボールの濃度が負になります(メッシュに穴を開ける方向に働きます).