00000012.htm
来自「水木清华BBS」· HTM 代码 · 共 398 行 · 第 1/3 页
HTM
398 行
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: vrml (3d), 信区: Java <BR>标 题: JAVA3D学习系列(12)--3DS,AUTOCAD,VRML97图形的应用 <BR>发信站: BBS 水木清华站 (Wed Apr 14 22:29:57 1999) <BR> <BR> JAVA3D学习系列(12)---AUTOCAD的DWG、VRML的WRL及3DS MAX图形的调用 <BR> <BR> <BR> <BR> <BR> 汕头大学机电系 张杰(<A HREF="mailto:jzhang@mailserv.stu.edu.cn)">jzhang@mailserv.stu.edu.cn)</A> <BR> <BR>****************VRML2.0交互式三维图形编程**************** <BR>JAVA3D学习系列中的例题将有非常多的书中的VRML程序与之相比较, <BR>欢迎购买VRML2.0新书。 <BR>特殊购书方式: <BR>1。作者售书 <BR>1。网上订购(email address: <A HREF="mailto:jzhang@mailserv.stu.edu.cn)">jzhang@mailserv.stu.edu.cn)</A> <BR>2。可以先获书,后汇款(不满意可退书), <BR> 只需将通信地址及邮编告知作者,即可在最短的时间内得到书。 <BR>3。书价为25元/本,免收邮购费用。 <BR>4。书为16开本,正文161页。 <BR>5. 购书可获盖有出版社财务章的收据。 <BR>6. 如果需要书中所有的源程序,我可以email一个打包程序 <BR>******************VRML2.0交互式三维图形编程************* <BR> <BR> <BR>一. VRML2.0(VRML97)图形文件在JAVA3D中的应用简介 <BR> SUN公司为我们提供了一个VRML97的LOADER,利用它我们可以 <BR>在JAVA3D程序中方便地调用VRML图形。不过由于这个LOADER目前 <BR>还不是很完善,因而没有放入JAVA3D之中,不过随着它的完善, <BR>最终它会成为JAVA3D的一个组成部分,调用VRML97程序就象调用 <BR>Wavefront的OBJ一样简单。 <BR> 我们可以从以下的网址下载(VRML97.ZIP)并安装,下载的网址为: <BR> <A HREF="http://www.vrml.org/WorkingGroups/vrml-java3d/">http://www.vrml.org/WorkingGroups/vrml-java3d/</A> <BR> 从这个网页上我们需要下载目前大小为283KB的一个ZIP文件, <BR>VRML97.ZIP,利用解压程序将其解成VRML97.JAR,大小目前为310KB, <BR>版本为0.90.2版,利用它可以让我们在JAVA3D程序中调用 <BR>VRML97(VRML2.0)图形。 <BR> <BR>*********好消息****************** <BR> 为了使国内的JAVA3D爱好者能够节省时间及开支,本人愿意 <BR>向国内的JAVA3D爱好者提供最新的VRML97.JAR,咨询请发EMAIL。 <BR>收到EMAIL后一分钟内就可将VRML97.JAR发出。 <BR>*********好消息****************** <BR> <BR> <BR> <BR>二. VRML97.JAR的安装 <BR> 获得VRML97.JAR后,假设我们的JDK1.2摆放的位置为目录JDK1.2, <BR>我们应将其放在下面的子目录中: <BR> C:\jdk1.2\lib <BR> 并在WINDOWS的AUTOEXEC.BAT文件中写入下面一行: <BR> SET CLASSPATH=%CLASSPATH%;C:\JDK1.2\LIB\vrml97.jar <BR> 重新启动计算机,这样我们就可以利用它了。 <BR> 当然,我们可以将VRML97.JAR放在一个目录中,利用下面的方法 <BR>将其解开,不过所获得的全为CLASS文件。 <BR> <BR> <BR> <BR>三. VRML97.JAR的应用 <BR>1. 利用VRML971.JAR调用一个VRML文件,使VRML文件中的形体不停地 <BR>旋转,程序如下。 <BR> 程序的编译方法: <BR> javac Vrml1.java <BR> 程序的运行方法(假设图形在同一目录): <BR> java Vrml1 myShape.wrl <BR> 当然,如果所调用的形体非常大或非常小时,需要修改: <BR> t3d.setScale(0.3); <BR> 中的数值。 <BR>//Vrml.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.vrml97.VrmlLoader; <BR>import com.sun.j3d.loaders.Scene; <BR> <BR>public class Vrml1 extends Applet { <BR> <BR> private String filename = null; <BR> <BR> public BranchGroup createSceneGraph(String args[]) { <BR> BranchGroup objRoot = new BranchGroup(); <BR> <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> <BR> Color3f light1Color = new Color3f(1.0f, 1.0f, 0.9f); <BR> Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f); <BR> <BR> BoundingSphere bounds = <BR> new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0); <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> VrmlLoader loader = new VrmlLoader(); <BR> Scene s = null; <BR> try { <BR> s = loader.load(filename); <BR> } catch (Exception e) { <BR> System.err.println(e); <BR> System.exit(1); <BR> } <BR> <BR> <BR> objTrans.addChild(s.getSceneGroup()); <BR> <BR> Transform3D yAxis = new Transform3D(); <BR> Alpha rotationAlpha = new Alpha(-1, Alpha.INCREASING_ENABLE, <BR>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?