質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

1回答

3419閲覧

Unityで格子状のMeshを作りたいのですが...

seri

総合スコア422

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2016/07/21 00:51

編集2022/01/12 10:55

どうやら、頂点数、Triangleが限度数を超えているらしく、エラーを吐き出します
特定の数の頂点を持ったMeshを並べて描画する方法もあるかと思いますが、今回の実装では、それぞれの頂点をつないで、連鎖運動をさせたいので、理想とちがってきてしまいます。。

頂点数に限度がある場合、どのような実装をすればたくさんの頂点を出力できるのでしょうか。

C#

1using UnityEngine; 2using System.Collections; 3 4[RequireComponent(typeof(MeshRenderer))] 5[RequireComponent(typeof(MeshFilter))] 6 7public class NewBehaviourScript : MonoBehaviour { 8 9 private void Start(){ 10 Mesh mesh = new Mesh (); 11 mesh.vertices = vecs (); 12 13 mesh.triangles =ints(); 14 15 var filter = GetComponent<MeshFilter> (); 16 filter.sharedMesh = mesh; 17 18 } 19 20 private Vector3[] vecs(){ 21 22 Vector3[] vec= new Vector3[1000]; 23 int x = 0; int y = 0; 24 25 for (int i = 0; i < 1000; i++) { 26 if (i % 100 == 0) { 27 y += 10; 28 x = 0; } 29 vec[i] = new Vector3 (x, y,0); 30 x+=10; 31 } 32 return vec; 33 34 } 35 36 private int[] ints(){ 37 int[] _ints = new int[((99 * 99) * 2)*6]; 38 int Id = 0; 39 40 for (int i = 0; i < 1000; i++) { 41 //if (i % 100 == 0 &&i!=0) { 42 // i += 100; 43 // } 44 _ints[Id] = i; 45 Id += 1; 46 _ints [Id] = i + 1; 47 Id += 1; 48 _ints[Id]=i+100; 49 Id += 1; 50 _ints[Id]=i+1; 51 Id += 1; 52 _ints[Id]=i+100; 53 Id += 1; 54 _ints[Id]=i+101; 55 Id += 1; 56 } 57 58 59 return _ints ; 60 } 61 62 63}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

頂点数云々よりも、intsメソッドの内容がおかしいと思うのですが。
頂点インデックスを作成するメソッドだと思いますが。

c#

1 int[] _ints = new int[((99 * 99) * 2)*6];

確保している数は、「99×99×2×6」。

c#

1 2 for (int i = 0; i < 600; i++) { 3 //if (i % 100 == 0 &&i!=0) { 4 // i += 100; 5 // } 6 _ints[Id] = i; 7 Id += 1; 8 _ints [Id] = i + 1; 9 Id += 1; 10 _ints[Id]=i+100; 11 Id += 1; 12 _ints[Id]=i+1; 13 Id += 1; 14 _ints[Id]=i+100; 15 Id += 1; 16 _ints[Id]=i+101; 17 Id += 1; 18 }

値を代入している数は、6回の代入を600回ループさせているので、「6×600」。
全然数があっていませんよね?

そもそも、複数の矩形を表示するための三角形の頂点であれば、「3頂点」×「2三角形」×「矩形数」になるはずですが、vecsメソッドを見る限り「9×99」の格子状の矩形を並べようとしているのだから、どちらも間違っているのではないですか?

投稿2016/07/21 13:52

katsuko

総合スコア3462

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問