Unityでメッシュをスクリプトで生成

未分類

一番シンプルな三角形のメッシュをスクリプトで生成してみる。

C#コード

空のオブジェクトを作り、以下のコードをアタッチする。

//メッシュをレンダリングする際に必要なので、コードで強制アタッチ
[RequireComponent(typeof(MeshFilter))]
[RequireComponent(typeof(MeshRenderer))]
public class Sample3 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        //スクリプトからメッシュを作成または変更できるクラスを準備
        var mesh = new Mesh();

        //三角形頂点座標の配列を作成し、メッシュにセット
        var vertices = new List<Vector3> {
            new Vector3 (-1, 0, 0),
            new Vector3 (0, 1, 0),
            new Vector3 (1, 0, 0),
        };
        mesh.SetVertices(vertices);

        //頂点の順番をセット
        //面の表裏が決まる。頂点の順番が右回り順番で囲まれる面が表面
        var triangles = new List<int> { 0, 1, 2 };
        mesh.SetTriangles(triangles, 0);

        // MeshFilterでレンダリング
        var meshFilter = GetComponent<MeshFilter>();
        meshFilter.sharedMesh = mesh;
    }
}

コードの流れは、以下の通り

  • レンダリングする際に必要なコンポーネントをあらかじめ自動でアタッチ
  • スクリプトからメッシュを作成または変更できるクラスを準備
  • 頂点の順番をセット
  • MeshFilterでレンダリング

実行してみる

実行した結果がこちら

ちなみに三角形の裏側からみると

何も表示されません。つまり裏側からみると透明になってしまう。頂点の順番が右回り順番で囲まれる面が表面。

タイトルとURLをコピーしました