// BPSGR Sample1 // @author reco // Copyrits 2009 reco // // BPSGRライブラリを使ったサンプルプログラム1 // // 主な内容 // 物理空間に複数オブジェクトの配置 // マウスクリックに応じて物体のthrowing // // ソースは自由に使ってくださって結構です。 // 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; int n_viewpoint = 1; BPSGR demo; RigidBody rigid = null; 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(); loadMQOData(); initWorld(); } void loadMQOData() { demo.LoadMQONewZipData( 0, "http://www.hyde-ysd.com/reco-memo/MQOData/miku01_BONE7.zip","miku01_BONE7.mqo", 0.5f); demo.LoadMQOData( 1, "http://www.hyde-ysd.com/reco-memo/MQOData/heartmark.mqo.txt", 0.1f); demo.LoadMQONewZipData( 2, "http://www.hyde-ysd.com/reco-memo/MQOData/RR_with_rin.zip","RR_with_rin.mqo", 0.3f); } void initWorld() { demo.initPhysics(); demo.AddMqo( 42f, new Vector3f(0, 0, 0), new Vector3f(0, 1, 0),0f, 0); } float[] pms = new float[10]; int n_pms = 0; Vector3f cameraPosition = new Vector3f(0f, 100f, 450f); 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 / 1000000f); // 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); if(rigid!=null) { Transform m = new Transform();; Transform m2 = new Transform();; switch(n_viewpoint) { case 0: break; case 1: rigid.getMotionState().getWorldTransform(m); cameraTargetPosition = m.origin; break; } } 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