[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Java3Djp:00046] Re: はじめまして



えんどうさん、iforさん、読んでくださった方、
わかりずらい聞き方をしてしまってすみません。
コンソールから受け取った文字列から
("x=150 y=100 z=200"というかんじで。)
それぞれの数値を抜き出して物体の位置座標を変更したいのです。
なにを目的でやっているのかと言うと、カメラから受け取った人の
動作をリアルタイムで3次元表示をするためで、研究室の先輩が作った
c言語で書かれたプログラムがカメラの映像から特定の色の中心座標を
0.2〜0.04sおきにコンソールに表示してくれるので、人間の関節に色のついた
シールをはって、各関節の座標を受け取りそこから人の動きを
3次元で表示しようと考えているのです。
これによって運動学習支援システムを作ろうとしています。
とりあえずある1点の座標が一定の時間間隔おきに
コンソールに表示されるようにして、それを受け取ってCubeの位置座標が
かわるものを作ろうとしています。そのプログラムがしたに書かれたもの
なんですが、見苦しいプログラムですみません。

public class Sample3D {
public static void main(String args[]) {
//SimpleFrameはコンストラクタに初期設定をしただけのFrameです。
	SimpleFrame sf new SimpleFrame();

	try{
		BufferedReader in = new BufferedReader(new InputStreamReader(
				System.in));
		String str = "";
	   while(true){
	           str = in.readLine();

		〜この間抜きだした文字列からx,y,zを抜きだしdouble型に直す
			db1=x,db2=y,db3=z〜
		
		   Canvas3D canvas3D =  new Canvas3D(SimpleUniverse.getPreferredConfiguration());                      
		   SimpleUniverse su = new SimpleUniverse(canvas3D);
		   su.getViewingPlatform().setNomalViewingTransform();
		   BranchGroup objRoot = new BranchGroup();
		   TransformGroup tg = new TransformGroup();
		   ColorCube cc = new ColoCube(0.1);
		   Transform3D t3 = new Transform3D();
		   Vector3d v3 = new Vector3d(db1,db2,db3);
                   t3.setTranslation(v3);
		   tg.setTransform(t3);
		   tg.addChild(cc);
		   objRoot.addChild(tg);
		   su.addBranchGraph(objRoot);
		   canvas3D.repaint();
		   sf.add(canvas3D);
		   sf.show();  
	   }
	}
	catch(IOException e){
		System.err.println("IO ERROR:" + e);
	}
}
}

canvas3D.repaint();でいけるかなって
浅はかな考えで書いてはみたものの、うまく行きません。
コンソールに一行目が出ると、これを受け取って
一番最初は表示されるのですが、二行目を受け取っても
再描画されません。長々と書いてしまいました。読んでくださって
ありがとうございます。