Unity MeshとColliderについて
Written By Norl_self
目次
1. Meshとは
2. Meshの設定
3. Colliderとは
4. Colliderの設定
5. まとめ
1.Meshとは
Mesh?
メッシュは原義で「網の目」や「織物」
←こんな感じ
Meshの定義
Unityでは、Meshは
「3Dに適用されたオブジェクト」
で、基本的に
「三角形の集まりでできている」
のです。
Meshの中身
Meshの中はUnityでは、
• Vertices
• UV
• Triangles
で出来ている。
また、他にもMeshは
Edge/faces/polygon/surfaces等がある。
その前に
Meshなどの座標には「ベクトル」というの
が有ります。ベクトルは
「向きと大きさを兼ね備えた線」
であり、このようになります。
Vertices
Verticesは、Meshの
頂点で、
「色、座標、法線ベ
クトル(座標から垂
直なベクトル)」
が分かります。つま
り、位置情報を伝え
ます。
Edge
EdgeはMeshの辺
で、
「2つの頂点の
間のベクトル」
Edge1はVer_1と
Ver_2の間の線で
す。
Faces
FacesはMeshの面
で、
「閉じられた辺の
集まり」
Face_1はEdge_1
とEdge_4とそのあ
いだの線の集まり
基本的に三角形
Polygon
Polygonは面の集
まりで、
「複数の面を合
わせた形」
Polygon_1は
Face_1とFace_2
の組み合わせ
Surface
Surfaceは面の組
み合わせで、
「面を複数のグ
ループに分け
る」
Surface_2は立体
の側面
Model
ModelはMeshの
最終的な形で、
「Meshの構造を
3次元的に表し
たもの」
MeshにTextureを
合わせたらModel
UVとは
「UV」
というのは(紫外線のことではなく)
座標のことで、「U」と「V」がテクスチャの
軸です。
モデルの「X」「Y」「Z」と同じ感じです。
テクスチャはメッシュに貼る画像のことで、そ
の貼りつけ方をUVで決めます。
また、UVでテクスチャを貼るのを「UV Mapping」とか言います。
UVの形
• 基本的にUVの座標は右図
• のようになっています。
• 座標は(u,v)と表します。
• 原点は(0,0)です。
(絵下手とか言わない)
UV展開
UVのテクスチャをMeshに貼るには
「UV展開」
します。
UV展開はMeshを展開(広げる)してUとV
の座標に変えることです。
つまり、
「3DのMeshを2Dの画像に押し潰す」
ということです。
Meshを潰すと…
元のMesh 押しつぶしたMesh(例)
<モデル> <展開図>
Triangleって?
UnityのMeshにはTriangleというのもありま
す。
これはMeshを構成する三角形の設定ができ
ます。
Triangleは三角形なので、Verticesを3つ指
定します。
Triangleを見る
Triangleは下図のように定義しています。
2.Meshの設定
UnityのMesh 1
Unity内でMeshは、
このように表示します。
(これはStandard Assetの
Character Controllerのサンプル
です)
UnityのMesh 2
また、Model(Meshも)
を選択すると、
Inspectorに右図
のようなビューが
出ます。
これで確認できます。
Meshの作成法
Meshの作成にはいくつかの方法が有ります。
• 有限要素法
• 有限体積法
• 有限差分法
• 境界要素法
などなど。
基本的に有限要素法のものでいいと思います。
モデリングソフト
Meshを作るときは3Dモデリングソフトを使
います。
ソフトの例:
• Maya
• Salome
• Blender
• Metasequoia
• Mesh Lab
などが有ります。
UnityでのMesh設定1
UnityでMeshを作るには前に言った
・Vartices ・uv ・Triangles
を設定する。
Unityではそれぞれのクラスで定義する。
1.Vartices
VarticesはVector3(x,y,z)で定義する。座標
の位置を指定。
UnityでのMesh設定2
2.uv
UVはVector2(x,y)で定義。X,YをU,Vに変え
ています。
3.Triangles
Triangles(Tris)はInt[]で定義。
中ではVerticesの番号を指定。
そして、これをMeshにそれぞれ代入。
Verticesの設定
<例>
public ArrayList ver = {new Vector(0,0,0)};
ver.Add (new Vector3(1,1,1));
~~~~~~~~
Mesh mesh = new Mesh ();
mesh.vertices = ver.ToArray;
これでmeshのVerticesに2つ頂点が追加されます。
UVのこと
UVはテクスチャの貼り方を変えるもの。
その指定は次のようになる。
UVの設定
<例>
public ArrayList uvs ={new Vector2(0.0F,0.0F)};
uvs.Add(new Vector2(0.5F,0.5F));
~~~~~~~~
Mesh mesh = new Mesh();
mesh.uv = uvs.ToArray;
と言った感じ。
Triangleの設定
<例>
public ArrayList tris = {0,1,2};
tris.Add(2,3,0);
~~~~~~~~
Mesh mesh = new Mesh();
mesh.triangle = tris;
Trianglesは3つずつ数を入れます。三角形なので
Meshの保存
MeshをUnityで保存するには
AssetDatabase.CreateAsset
&
AssetDatabase.SaveAsset
をします。
また、保存するときは拡張子を「.asset」
にします。
3.Colliderとは
Collider = ?
Colliderは「加速器」という意味です。しか
しUnityでは加速器と言うより
衝突時の物体の形(当たり判定)
的なものを表しています。
Colliderはそれを適用するObjectの形によっ
て変えられます。
xxCollider
Colliderの種類は、
1. Primitive
–Box Collider
–Capsule Collider
etc...
2. Mesh
–Mesh Collider
4.Colliderの設定
Collider Component
Unityのコライダーコン
ポーネントは右図。
Box ColliderはPrimitive
の編集
Mesh ColliderはMeshの
編集
Terrain Colliderは
Terrain Dataの編集
Box Colliderの編集
• Edit ColliderはSceneのColliderの緑色の
点を動かすことで手動で変更できます。
• Is TriggerはそのObjectがすり抜けるかを
設定します。(当たり判定なし)
• Materialはコライダーに物理的な材質を設
定します。
• Center/Sizeはコライダーの場所の指定に
使います。
Mesh Colliderの設定
• Smooth Sphere Collisionは、例えば地面
を転がすようにしたいときに滑らかに動
くようにするかを設定します。
• Convexは他のMesh Colliderと衝突する処
理をするか設定します。
• Meshは当たり判定にするMeshを選択しま
す。
5.まとめ
• Mesh
• Meshは物体の形を表すもの。
Vertices,uv,Triangleの3つでできる。
• VerticesはVector3,uvはVector2,Triangle
はIntで設定する。
• MeshにTexture(Material)を足せばモデル
になる
• Collider
• Colliderは当たり判定のこと
• PrimitiveとMeshなどの種類に分けられる。
• 基本的にそのままでも構わない。Scriptで
いじることは少ない(はず)
参考
Wikipedia :
– Polygon mesh
http://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%AA%E3%82%B4%E3%83%B3%E3%
83%A1%E3%83%83%E3%82%B7%E3%83%A5
Unity :
– Unity Document (Manual/ScriptingAPI)
http://docs.unity3d.com/ja/current/Manual/
– Unity Forum and Answer
http://forum.unity3d.com/
http://answers.unity3d.com/
などなど
Unity MeshとColliderについて

Unity MeshとColliderについて