00000012.htm
来自「水木清华BBS」· HTM 代码 · 共 398 行 · 第 1/3 页
HTM
398 行
0, 0, <BR> 4000, 0, 0, <BR> 0, 0, 0); <BR> RotationInterpolator rotator = <BR> new RotationInterpolator(rotationAlpha, objTrans, yAxis, <BR> 0.0f, (float) Math.PI*2.0f); <BR> <BR> rotator.setSchedulingBounds(bounds); <BR> objTrans.addChild(rotator); <BR> <BR> <BR> objRoot.compile(); <BR> return objRoot; <BR> } <BR> <BR> public Vrml1(String args[]) { <BR> filename = args[0]; <BR> setLayout(new BorderLayout()); <BR> Canvas3D c = new Canvas3D(null); <BR> add("Center", c); <BR> BranchGroup scene = createSceneGraph(args); <BR> SimpleUniverse u = new SimpleUniverse(c); <BR> u.getViewingPlatform().setNominalViewingTransform(); <BR> u.addBranchGraph(scene); <BR> } <BR> <BR> public static void main(String[] args) { <BR> new MainFrame(new Vrml1(args), 400,400); <BR> } <BR>} <BR>//end of Vrml.java <BR> 可以看出,Vrml1.java和前面介绍的Obj2.java非常相似。 <BR> <BR>2. 将Vrml.java分解成两个程序 <BR> 上面的程序中,用于处理调用问题的部分我们可以提取出来,这样 <BR>我们就可以多次重复使用。 <BR> 从下面的程序我们可以得知,Vrml2.java和前面介绍的Obj3.java <BR>除了Obj3改为Vrml2,objFile改为vrmlLoad之外,其余什么也没有改变。 <BR>vrmlLoad.java和objFile.java也非常相似。 <BR> <BR>//Vrml2.java <BR> <BR>import java.applet.Applet; <BR>import java.awt.BorderLayout; <BR>import com.sun.j3d.utils.applet.MainFrame; <BR>import com.sun.j3d.utils.universe.*; <BR>import javax.media.j3d.*; <BR>import javax.vecmath.*; <BR>import com.sun.j3d.loaders.Scene; <BR>import com.sun.j3d.loaders.objectfile.ObjectFile; <BR> <BR>public class Vrml2 extends Applet { <BR> public BranchGroup createSceneGraph() { <BR> BranchGroup objRoot = new BranchGroup(); <BR> TransformGroup objScale = new TransformGroup(); <BR> Transform3D t3d = new Transform3D(); <BR> t3d.setScale(0.3); <BR> objScale.setTransform(t3d); <BR> objRoot.addChild(objScale); <BR> <BR> BoundingSphere bounds = <BR> new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0); <BR> Color3f bgColor = new Color3f(0.05f, 0.05f, 0.2f); <BR> Background bg = new Background(bgColor); <BR> bg.setApplicationBounds(bounds); <BR> objRoot.addChild(bg); <BR> <BR> <BR> Color3f light1Color = new Color3f(1.0f, 1.0f, 0.9f); <BR> Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f); <BR> <BR> <BR> <BR> DirectionalLight light1 <BR> = new DirectionalLight(light1Color, light1Direction); <BR> light1.setInfluencingBounds(bounds); <BR> objRoot.addChild(light1); <BR> <BR> TransformGroup objTrans = new TransformGroup(); <BR> objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); <BR> objScale.addChild(objTrans); <BR> <BR> BranchGroup b1 = new vrmlLoad("7.wrl"); <BR> objTrans.addChild(b1); <BR> <BR> Transform3D yAxis = new Transform3D(); <BR> Alpha rotationAlpha = new Alpha(-1, Alpha.INCREASING_ENABLE, <BR> 0, 0, <BR> 4000, 0, 0, <BR> 0, 0, 0); <BR> RotationInterpolator rotator = <BR> new RotationInterpolator(rotationAlpha, objTrans, yAxis, <BR> 0.0f, (float) Math.PI*2.0f); <BR> <BR> rotator.setSchedulingBounds(bounds); <BR> objTrans.addChild(rotator); <BR> <BR> objRoot.compile(); <BR> return objRoot; <BR> } <BR> <BR> public Vrml2(String args[]) { <BR> setLayout(new BorderLayout()); <BR> Canvas3D c = new Canvas3D(null); <BR> add("Center", c); <BR> BranchGroup scene = createSceneGraph(); <BR> SimpleUniverse u = new SimpleUniverse(c); <BR> u.getViewingPlatform().setNominalViewingTransform(); <BR> u.addBranchGraph(scene); <BR> } <BR> <BR> public static void main(String[] args) { <BR> new MainFrame(new Vrml2(args), 400,400); <BR> } <BR>} <BR>//end of Vrml2.java <BR>----------------------------- <BR>//vrmlLoad.java <BR> <BR>import javax.media.j3d.*; <BR>import java.io.*; <BR>import com.sun.j3d.loaders.vrml97.VrmlLoader; <BR>import com.sun.j3d.loaders.Scene; <BR> <BR>public class vrmlLoad extends BranchGroup{ <BR> <BR> public vrmlLoad(String filename) { <BR> BranchGroup obj = new BranchGroup( ); <BR> <BR> VrmlLoader loader = new VrmlLoader(); <BR> Scene s = null; <BR> try { <BR> s = loader.load(filename); <BR>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?