一番シンプルな三角形のメッシュをスクリプトで生成してみる。
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でレンダリング
実行してみる
実行した結果がこちら

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

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


