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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1202閲覧

Unityでの三角形ポリゴンによる曲面描画

abc_oxox

総合スコア27

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2017/12/22 10:17

Unityにて三角形ポリゴンで曲面を描きたく,MeshTopology.Triangleを用いて描こうとしているのですが,なかなかうまくいきません.

実装コードは以下のような感じになります.

C#

1#define NUM xxx //三角形の頂点の数 2 3int main() 4{ 5 var mesh = new Mesh(); 6 Vector3[] verts = new Vector3[NUM]; 7 int[] indices = new int[NUM]; 8 9 verts[0].x = 1; 10 verts[0].y = 2; 11 verts[0].z = 1; 12 13 verts[1].x = 3; 14 verts[1].y = 3; 15 verts[1].z = 4; 16 17 ...... 18 //頂点を代入 19 20 for(int i = 0; i<NUM; i++){ 21 indices[i] = i; 22 } 23 24 mesh.vertices = verts; 25 mesh.subMeshCount = 1; 26 mesh.SetIndices(indices, MeshTopology.Triangles, 0); 27 28 GetComponent<MeshFilter>().mesh = mesh; 29 30 return 0; 31} 32

mesh.SetIndices(indices, MeshTopology.Triangles, 0);

mesh.SetIndices(indices, MeshTopology.Lines, 0);
とすると,線で三角形がいくつも表示されるため,基本的には合っていると思うのですが,Trianglesにするとうまくいきません.
mesh.SetIndicesの第一引数が,LinesとTrianglesでは違うものにしなければならないのでしょうか?

色々なサイトを参考に書いたもので,いまいちコードの意味を理解していない部分もありますが,ご教授よろしくお願いします.

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

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

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

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

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

guest

回答1

0

ベストアンサー

座標データがどうなってるかわからないのでアドバイスになりますが、
Cullingのせいな気もしますので、とりあえず最低限である3頂点(1ポリゴン)で表示できるところから確認されてはいかがでしょうか。

表示できるサンプル作ってみました

using System.Collections; using System.Collections.Generic; using UnityEngine; [RequireComponent(typeof(MeshRenderer))] [RequireComponent(typeof(MeshFilter))] public class MeshTest : MonoBehaviour { protected Mesh mesh; // Use this for initialization void Start() { this.mesh = new Mesh(); this.GetComponent<MeshFilter>().mesh = this.mesh; // メッシュ作成 this.mesh.vertices = new Vector3[3] { new Vector3(-10, 0, 0), new Vector3(0, 10, 0), new Vector3(10, 0, 0), }; this.mesh.SetIndices(new int[3] { 0, 1, 2 }, MeshTopology.Triangles, 0); // 頂点データより法線を再計算する this.mesh.RecalculateNormals(); } // Update is called once per frame void Update() { } }

このスクリプトを原点にあるGameObjectにでも登録して
カメラを(0, 1, -10)から原点映るようにして表示までは出来るかと

投稿2017/12/22 11:41

編集2017/12/22 12:11
rururu3

総合スコア5545

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

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

abc_oxox

2017/12/25 08:17

一度rururu3さんのコードで表示させ,そこからいじっていくことで無事自分の思い通りに描画できました. ありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問