【Unity】MeshRenderer でメッシュを表示する

動作確認 Unity
動作確認

Unity で MeshRenderer を使用してメッシュを表示します。

MeshRenderer でメッシュを表示する

Mesh Renderer コンポーネント

MeshRenderer は、Unity でメッシュを表示するために用意されているコンポーネントです。

Mesh Renderer コンポーネント - Unity マニュアル
Mesh Renderer コンポーネントはメッシュをレンダリングします。Mesh Renderer は同じゲームオブジェクト上の Mesh Filter コンポーネントと連動し、Mesh Filter が参照するメッシュを描画します。

準備

・新しいプロジェクト(Universal 3D)を作成します。
・ヒエラルキーに Create Empty で新しいゲームオブジェクト(名前は MyMeshTest)を作成します。
・プロジェクトビューで MyMeshTest スクリプトを新規作成します。
・MyMeshTest ゲームオブジェクトに MyMeshTest スクリプトを追加します。

準備
準備

スクリプトの作成

三角形を2つ合わせて、四角いメッシュを作成します。
テクスチャを表示するために UVデータも設定します。

public class MyMeshTest : MonoBehaviour {
    private MeshRenderer m_rMeshRenderer = null;
    private MeshFilter m_rMeshFilter = null;
    private Mesh m_rMesh = null;
    [SerializeField] private Material m_rMaterial = null;

    void Start() {
        Init();
    }

    private void Init() {
        m_rMeshRenderer = gameObject.AddComponent<MeshRenderer>();
        m_rMeshFilter = gameObject.AddComponent<MeshFilter>();
        m_rMesh = CreateMesh();
        m_rMeshRenderer.material = m_rMaterial;
        m_rMeshFilter.sharedMesh = m_rMesh;
    }

    private Mesh CreateMesh() {
        // 頂点データ.
        List<Vector3> arVertices = new List<Vector3>(4);
        arVertices.Add(new Vector3(-1f, -1f, 0f));
        arVertices.Add(new Vector3(1f, -1f, 0f));
        arVertices.Add(new Vector3(-1f, 1f, 0f));
        arVertices.Add(new Vector3(1f, 1f, 0f));
        // インデックスデータ.
        List<int> anIndices = new List<int>(6);
        anIndices.Add(0);
        anIndices.Add(2);
        anIndices.Add(1);
        anIndices.Add(1);
        anIndices.Add(2);
        anIndices.Add(3);
        // UVデータ.
        List<Vector2> arUVs = new List<Vector2>(4);
        arUVs.Add(new Vector2(0f, 0f));
        arUVs.Add(new Vector2(1f, 0f));
        arUVs.Add(new Vector2(0f, 1f));
        arUVs.Add(new Vector2(1f, 1f));
        // メッシュの作成.
        Mesh rMesh = new Mesh();
        rMesh.SetVertices(arVertices);
        rMesh.SetIndices(anIndices, MeshTopology.Triangles, 0);
        rMesh.SetUVs(0, arUVs);
        return rMesh;
    }
}

マテリアルの作成

MyMeshTest マテリアルを新規作成します。
今回はライトの影響を受けない Unlit シェーダーを選択しました。

マテリアルの作成
マテリアルの作成

インスペクターで MyMeshTest コンポーネントにマテリアルを設定するのを忘れないようにしましょう。

マテリアルの設定
マテリアルの設定

動作確認

Unity エディターを再生して、動作確認しましょう。
カメラの位置を調整して、見えやすいようにしましょう。

動作確認
動作確認

まとめ

MeshRenderer を使用してメッシュを表示しました。
数値を変更したりして、動作がどう変わるかいろいろ試してみても面白いですね。

コメント

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