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

[Java3Djp:01477] Re: ベンチマーク



------------------------------------------------------------------------
■■■■ 超大型514名様プレゼント実施中! ■■■■■■■■■■■■■■
■■┏━━━━━━━━━━━━━┓☆☆あなた好みの情報を厳選でお届け☆☆
■■┃ どーんと現金100万円!! ┃   ━━ NTT NaviSpace Presents ━━
■■┗━━━━━━━━━━━━━┛今なら2人に1人が当るデパート商品券♪
■■■■◎もちろん無料 http://myd.nttnavi.co.jp/camp33.html ■■■■■■
------------------------------------------------------------------------


From: yasuyuki@xxxxxxxxxxxx
Subject: [Java3Djp:01476] Re: ベンチマーク
Date: Thu, 6 Jul 2000 11:21:21 +0900 (JST)

> 
> のドキュメントにあったような気がするので調べてみます。
> ちょっとお時間ください。
> 
> > ちなみにこの方法で HelloUniverse を修正して
> > 表示させると、700 フレーム/秒 前後なのですが、
> > こんなものでしょうか?
> 
> こんな速く動きますか? ちょっとスゲーと思いました。
> 

いえ、もしかして間違ったものを測っているのでは
ないかと思い質問したのですが。
ソースコードは以下の通りです。
                                             江本


import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.event.*;
import java.awt.GraphicsConfiguration;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;

public class HelloUniverse extends Applet {
    class MyCanvas3D extends Canvas3D implements Runnable{
	
	J3DGraphics2D g = null;
	int count = 0;
	int last = 0;
	long curr = 0;
	long prev = System.currentTimeMillis();
	
	public void run(){
	    try {
		while ( true ){
		    curr = System.currentTimeMillis();
		    double d = (double )(count - last ) / (curr - prev) * 1000.0;
		    System.out.println("" + d + " Frames / sec");
		    prev = curr;
		    last = count;
		    Thread.sleep(1000);
		}
	    }catch(InterruptedException ex){
	    }
					    
	}
	
	MyCanvas3D(java.awt.GraphicsConfiguration conf){
	    super(conf);
	    Thread t = new Thread(this);
	    t.start();
	}
	public void postRender(){
	    ++count;
	}
    };
    
    public BranchGroup createSceneGraph() {
	// Create the root of the branch graph
	BranchGroup objRoot = new BranchGroup();

	// Create the TransformGroup node and initialize it to the
	// identity. Enable the TRANSFORM_WRITE capability so that
	// our behavior code can modify it at run time. Add it to
	// the root of the subgraph.
	TransformGroup objTrans = new TransformGroup();
	objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
	objRoot.addChild(objTrans);

	// Create a simple Shape3D node; add it to the scene graph.
	objTrans.addChild(new ColorCube(0.4));

	// Create a new Behavior object that will perform the
	// desired operation on the specified transform and add
	// it into the scene graph.
	Transform3D yAxis = new Transform3D();
	Alpha rotationAlpha = new Alpha(-1, 4000);

	RotationInterpolator rotator =
	    new RotationInterpolator(rotationAlpha, objTrans, yAxis,
				     0.0f, (float) Math.PI*2.0f);
	BoundingSphere bounds =
	    new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
	rotator.setSchedulingBounds(bounds);
	objRoot.addChild(rotator);

        // Have Java 3D perform optimizations on this scene graph.
        objRoot.compile();

	return objRoot;
    }

    public HelloUniverse() {
	setLayout(new BorderLayout());
        GraphicsConfiguration config =
           SimpleUniverse.getPreferredConfiguration();

	MyCanvas3D c = new MyCanvas3D(config);
	add("Center", c);

	// Create a simple scene and attach it to the virtual universe
	BranchGroup scene = createSceneGraph();
	SimpleUniverse u = new SimpleUniverse(c);

        // This will move the ViewPlatform back a bit so the
        // objects in the scene can be viewed.
        u.getViewingPlatform().setNominalViewingTransform();

	u.addBranchGraph(scene);
    }

    //
    // The following allows HelloUniverse to be run as an application
    // as well as an applet
    //
    public static void main(String[] args) {
	new MainFrame(new HelloUniverse(), 256, 256);
    }
}