43
Unity Mesh と Collider とと とと Written By Norl_self

Unity MeshとColliderについて

Embed Size (px)

Citation preview

Unity Meshと Colliderについて

Written By Norl_self

目次

1. Meshとは2. Meshの設定3. Colliderとは4. Colliderの設定5. まとめ

1.Meshとは

Mesh?

メッシュは原義で「網の目」や「織物」

←こんな感じ

Meshの定義

Unityでは、Meshは「3 Dに適用されたオブジェクト」

で、基本的に「三角形の集まりでできている」

のです。

Meshの中身

Meshの中は Unityでは、• Vertices• UV

• Trianglesで出来ている。

また、他にもMeshは Edge/faces/polygon/surfaces等がある。

その前に

Meshなどの座標には「ベクトル」というのが有ります。ベクトルは

「向きと大きさを兼ね備えた線」であり、このようになります。

VerticesVerticesは、Meshの頂点で、「色、座標、法線ベクトル(座標から垂直なベクトル)」

が分かります。つまり、位置情報を伝えます。

EdgeEdgeはMeshの辺で、「2つの頂点の間のベクトル」

Edge1は Ver_1と Ver_2の間の線です。

FacesFacesはMeshの面で、「閉じられた辺の集まり」

Face_1は Edge_1と Edge_4とそのあいだの線の集まり

基本的に三角形

PolygonPolygonは面の集まりで、「複数の面を合わせた形」

Polygon_1はFace_1とFace_2の組み合わせ

SurfaceSurfaceは面の組み合わせで、「面を複数のグループに分ける」

Surface_2は立体の側面

ModelModelは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の座標に変えることです。つまり、「3 DのMeshを2 Dの画像に押し潰す」

ということです。

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.VarticesVarticesは Vector3(x,y,z)で定義する。座標の位置を指定。

UnityでのMesh設定2

2.uvUVは Vector2(x,y)で定義。 X,Yを U,Vに変えています。3.TrianglesTriangles(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 Collideretc...

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でいじることは少ない(はず)

ご視聴ありがとうございました。