
凸包でダイヤモンドを作ってみよう
- 「NeosモデリングClub」とは、VRで初めてモデリングやLogiXに触ってみる方向けの遊びながら仕組みを学ぶユーザーイベント
VRSNS NeosVRで開催していました(2023年に閉幕)
キーワード
BakeMesh
Convex hull(凸包)
CircleMesh
DualSideMetaric
Refract
ShadowCastMode
Convex hull(凸包)とは
Convex hull(凸包)とは与えられた点をすべて含んでいる最小の凸多角形
へこみのない袋に包んだような形状です

凸包のやり方
ObjectをBakeMesh
まず、結びたい頂点をひとつのMeshにまとめます
原点の位置を調整したい場合は、原点用のスロットを作り(親のスロット)Rotationをリセットした後に、Objectの位置を調整します
(グローバル軸を綺麗にすると軸のブレがなくなります)

GlueTipをMode:BakeMeshesに切り替え(コンテキストメニューから)
Bakeしたいスロットをグラブしてセカンダリーを押すとBakeされます



凸包する
Meshのインスペクターを開く
(ここでコライダーがなくなっている場合は、Objectの中心あたりでセカンダリーを押すとギズモが出ます
インスペクターが開けたらコライダーをアタッチしてください)

Convex hull(凸包)に変換 ボタンを押す
形状をはっきりさせたいときはフラットシェーディングにする ボタンを押す



ダイヤモンドを作る

CircleMeshを準備する
新規作成で空のオブジェクト(EmptyObject)を呼び出し、
Transform → ObjectRoot
Transform →Interaction → Grabbable
のコンポーネントをアタッチ
★で子のスロットを作成し、
Assets → Procedural Meshes → CircleMesh
Renderer → MeshRenderer (Meshの項目にCircleMeshを入れる)
Phisics → MeshCollider
のコンポーネントをアタッチ
CircleMeshの調整
1枚目
Segments 32 → 9
Radius 0.5 → 0.2
2枚目
Segments 17
Radius 0.3
3枚目
Segments そのまま
Radius 0
それぞれのMeshの高さをギズモで調整
余談ですが、8角形を作るときにSegmentsの数を8で作る場合は、
Arcの数値を8等分の45度引いた315にします
Arc360のままだと0番目と8番目の頂点が重なって7角形になるためです
(上記の場合は0番目と9番目の頂点を重ねて8角形にしています)
Bakeする
位置の調整が終わったら、GlueTipをMode:BakeMeshesに切り替え、
Bakeしたいスロットを掴んでセカンダリーを押します
凸包に変換
Meshのインスペクターを開き、Convex hull(凸包)に変換する ボタンを押します
一つ上の フラットシェーディングにする ボタンも押します

マテリアルを充てる
今回は二つのマテリアルを重ね掛けします
新規作成 → PBS → PBS DualSideMetaric
新規作成 → Filter → Refract
PBS DualSideMetaric
Albedo Color Aの値を0に近く
AlphaHandlingをAlpha Blendへ
Culling Back
Metaricを0~0.2
Smoothnessを1に近く
Refract
BlendMode Alpha
Sideness double

MeshRendererのMaterials(list)にAddでlistを作り
PBS DualSideMetaricのマテリアルオーブを掴んでレーザーでアタッチ
ShadowCastModeをOffにする
MeshRendererをDボタンで複製し、
PBS DualSideMetaricをRefractで上書き
ダイヤモンドの場合は反射が主なので、

ShadowCastModeをOffにすることによって影の描写を無くし、軽量化を狙います
動画 ダイジェスト
月曜日と木曜日 17時から1時間復習回を配信(凸OK)しています
応援よろしくお願いします!