Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

java3Dでのindicesの使い方

java3Dを使用して点の座標、点の配列を指定して(外部テキストファイルから読み込んで)立方体を表示するプログラムを作成しております。

点の座標部分はうまく作れたのですが
四点を指定して面を作る部分で詰まってしまいました。

お力添えお願い致します。 

プログラムの内容としてはjava3DのIndexedQuadArrayを使用して

 int[] indices = { vertex[0][0],vertex[0[1],vertex[0][2],vertex[0][3],
          vertex[1][0],vertex[1][1],vertex[1][2],vertex[1][3],
          : : : : };

と具体的に四点にひとつずつ座標を入れて表示する所までは作れました。
vertexにはint型の頂点番号が入ります。
 int[] indices = { 1, 2, 3, 4,
 1, 2, 5, 6]}; など

ですが、この内容を
 int[] indices = {vertex[i][0],vertex[i][1],vertex[i][2],vertex[i][3]};
としたいのですがなかなか思い至りません。

a個の面があるとして
for(int i = 0; i < a; i++)
{
 surface[i] = ○○○(vertex[i][0] , vertex[i][1] , vertex[i][2] , vertex[i][3]); 
}

int[] indices = surface[];

現在はこのようにfor文で別の配列に変換してからindicesに格納するのが適当かと考えてはいるのですが、
○○○をどうしたらいいか(Point3dのような)悩んでおります。


この作り方、考え方でいいかも含めてぜひご意見お聞かせ願います。 

3

回答

2990

閲覧

3件の回答

評価

0

java3Dを使用したことがないので
よくわからないのですが

int[] indices = new int[vertex.length * 4];
for(int i=0;i<indices.length;i++){
   indices[4*i+0] = vertex[i][0];
   indices[4*i+1] = vertex[i][1];
                .
                .
}

こういうことでしょうか。
的外れでしたら流してください。

評価

0

>for(int i=0;i<indices.length;i++){
 for(int i=0;i<vertex.length;i++){

間違えました。

評価

0

お返事ありがとうございます。
的外れじゃありません。

自分はIndexedQuadArrayの特徴でもある4点で面を作ることにこだわってしまいvertex[0][0]〜vertex[0][3]までの一行として取り込む事しか考えておりませんでした。

なので一点ずつ入れていくのを基本ながら思い至りませんでした。

非常に参考になりました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。