Unity で MeshRenderer を使用してメッシュを表示します。
MeshRenderer でメッシュを表示する
Mesh Renderer コンポーネント
MeshRenderer は、Unity でメッシュを表示するために用意されているコンポーネントです。
![](https://docs.unity3d.com/ja/2022.3/uploads/Main/class-MeshRenderer-0.png)
Mesh Renderer コンポーネント - Unity マニュアル
Mesh Renderer コンポーネントはメッシュをレンダリングします。Mesh Renderer は同じゲームオブジェクト上の Mesh Filter コンポーネントと連動し、Mesh Filter が参照するメッシュを描画します。
準備
・新しいプロジェクト(Universal 3D)を作成します。
・ヒエラルキーに Create Empty で新しいゲームオブジェクト(名前は MyMeshTest)を作成します。
・プロジェクトビューで MyMeshTest スクリプトを新規作成します。
・MyMeshTest ゲームオブジェクトに MyMeshTest スクリプトを追加します。
![準備](https://papacoder.net/wp-content/uploads/2024/07/20240702_01.jpg)
スクリプトの作成
三角形を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 シェーダーを選択しました。
![マテリアルの作成](https://papacoder.net/wp-content/uploads/2024/07/20240702_02.jpg)
インスペクターで MyMeshTest コンポーネントにマテリアルを設定するのを忘れないようにしましょう。
![マテリアルの設定](https://papacoder.net/wp-content/uploads/2024/07/20240702_03.jpg)
動作確認
Unity エディターを再生して、動作確認しましょう。
カメラの位置を調整して、見えやすいようにしましょう。
![動作確認](https://papacoder.net/wp-content/uploads/2024/07/20240702_04.jpg)
まとめ
MeshRenderer を使用してメッシュを表示しました。
数値を変更したりして、動作がどう変わるかいろいろ試してみても面白いですね。
コメント