// BPSGR Sample1 // @author reco // Copyrits 2009 reco // // BPSGRライブラリを使ったサンプルプログラム2 // // 主な内容 // ドミノ倒しシミュレーション // マウスクリックに応じて特定の物体に衝撃(impulse)を与える // // ソースは自由に使ってくださって結構です。 // import processing.opengl.*; import javax.media.opengl.*; import javax.media.opengl.glu.*; import javax.vecmath.Vector3f; import com.bulletphysics.dynamics.RigidBody; import BPSGR.*; PFont font; BPSGR demo; RigidBody rigid; void setup() { size(800, 600, OPENGL); font=createFont("FFScala", 32); PGraphicsOpenGL pgl = (PGraphicsOpenGL) g; // g may change GL gl = pgl.beginGL(); // always use the GL object returned by beginGL demo = new BPSGR(this, gl); pgl.endGL(); demo.initPhysics(); // 最初の1枚は、あとで衝撃を与えるので、RigidBodyクラスの変数に情報を保持しておく rigid = demo.AddBox(2f, new Vector3f(0, 5, 0), new Vector3f(0, 1, 0.5), 0, new Vector3f(10, 10, 1)); // ドミノ直線構成部分 for(int i=1; i<50; i++) { demo.AddBox(2f, new Vector3f(0, 5, i*-7), new Vector3f(0, 1, 0.5), 0, new Vector3f(10, 10, 1)); } // ドミノ曲線構成部分 for(int i=0; i<48; i++) { demo.AddBox(2f, new Vector3f(cos(radians(i*4))*-100+100, 5, sin(radians(i*4))*-100-350), new Vector3f(0, -1, 0), radians(i*5), new Vector3f(10, 10, 1)); } } float[] pms = new float[10]; int n_pms = 0; Vector3f cameraPosition = new Vector3f(0f, 100f, 250f); Vector3f cameraTargetPosition = new Vector3f(0f, 0f, 0f); // look at void draw() { background(208); GLU glu = new GLU(); float ms = millis(); if (demo.dynamicsWorld != null) { demo.dynamicsWorld.stepSimulation(ms / 1000f); // demo.dynamicsWorld.stepSimulation(ms / 1f); } PGraphicsOpenGL pgl = (PGraphicsOpenGL) g; // g may change GL gl = pgl.beginGL(); // always use the GL object returned by beginGL BPSGR.setPerspective(gl, width, height); glu.gluLookAt(cameraPosition.x,cameraPosition.y,cameraPosition.z , cameraTargetPosition.x, cameraTargetPosition.y, cameraTargetPosition.z , 0, 1, 0); gl.glPushMatrix(); demo.render(); gl.glPopMatrix(); pgl.endGL(); //--------------display fps --------- // println(millis()); textFont(font,30.0); stroke(1,0,0); fill(200,0,0); int i; if(n_pms==10) { for(i=0; i