版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Java 3D網(wǎng)絡(luò)上的三維動畫劉鵬 pengliu@ieee.org,第一回,起,初識Java 3D,What is Java 3D?,Internet的交互式三維圖形應(yīng)用編程接口(API)。 讓用戶能夠像瀏覽網(wǎng)頁一樣觀看并操作三維動態(tài)圖形一次編程,到處運行適應(yīng)各種不同的軟硬件平臺,Java 3D=Java + 3D,提高了編寫三維圖形程序的層次是Java的嫡系高效的三維圖形語言,更大的優(yōu)點,它是網(wǎng)絡(luò)語言,代碼可以自由傳
2、輸,從產(chǎn)品設(shè)計、網(wǎng)上購物到各種游戲,“三維”將改變?nèi)藗冊谄聊簧汐@取信息的習(xí)慣。,Examples: Scientific Visualization,,,,Examples: Scientific Visualization,,,,Examples: Scientific Visualization,,,,,,,Examples: Education,,Examples: Abstract Data (Financial),,,
3、,,Examples: Medical Education,,,,Geographical information systems (GIS),,Examples: CAD,,,,Examples: Analysis,,,,Examples: 3D Logos,,,,Examples: Astronomy,,,,,Examples: Animations,,,,如何用Java 3D編程,安裝Java 3D,Java 2 SDK/JRE
4、http://java.sun.com Java 3D SDK/RThttp://java.sun.com/products/java-media/3D/download.html OpenGLDirect3D,Java 3D的編程空間,,Java 3D的座標(biāo)系,,第一個Java 3D程序,Hello.java,Hello.java,Importspublic class Hello {public Hello()
5、{ Contents }public static void main(String[] args) { new Hello(); }},import com.sun.j3d.utils.geometry.*;import com.sun.j3d.utils.universe.*;import javax.media.j3d.*;import javax.vecma
6、th.*;,Imports,Contents:空間和小球,// 創(chuàng)建一個虛擬空間 SimpleUniverse universe = new SimpleUniverse(); // 創(chuàng)建一個用來包含對象的數(shù)據(jù)結(jié)構(gòu) BranchGroup group = new BranchGroup(); // 創(chuàng)建一個球并把它加入到group中 Sphe
7、re sphere = new Sphere(0.5f); // 小球的半徑為0.5米 group.addChild(sphere);,Contents: 燈光構(gòu)件,Color3f light1Color = new Color3f(1.8f, 0.1f, 0.1f); // 設(shè)置光線的顏色BoundingSphere bounds = new BoundingSph
8、ere( new Point3d(0.0,0.0,0.0), 100.0);// 設(shè)置光線的作用范圍Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);// 設(shè)置光線的方向,Contents:燈光形成,DirectionalLight light1= new DirectionalLight (light1Color
9、, light1Direction);// 指定顏色和方向,產(chǎn)生單向光源light1.setInfluencingBounds(bounds); // 把光線的作用范圍加入光源中g(shù)roup.addChild(light1); // 將光源加入group組,Contents:觀察者,// 安放觀察點universe.getViewingPlatform(). s
10、etNominalViewingTransform();// 把group加入到虛擬空間中universe.addBranchGraph(group);,程序的邏輯結(jié)構(gòu),,編譯,javac Hello.java,運行,java Hello,在網(wǎng)上發(fā)布Java 3D程序,第一步:編寫Hello.html,If you were using a Java-capable browser,you would see Hello U
11、niverse! instead of this paragraph.,第二步:轉(zhuǎn)換HTML,運行 HTMLConverter.BAThttp://java.sun.com/products/plugin/1.2/converter.html,HelloIf you were using a Java-capable browser,you would see Hello Universe!
12、instead of this paragraph.,執(zhí)行流程,,里程碑,什么是Java 3D優(yōu)點、用處用Java 3D編程安裝、程序、邏輯結(jié)構(gòu)、編譯、運行在網(wǎng)上發(fā)布Java 3D Applet編HTML、轉(zhuǎn)換、自動安裝運行環(huán)境,第二回,進(jìn),基本形體的生成,Cone cone=new Cone(.5f,1.0f,1,app),錐體,Sphere sphere=new Sphere(.5f,app);,球體,Cyl
13、inder cylinder=new Cylinder(.5f,1.0f);,圓柱體,直線,直線的生成 (1),public class lineShape extends Shape3D {// 直線的定點坐標(biāo) private float vert[ ]={.5f,0.5f,0.0f, -0.5f,0.5f,0.0f,0.3f,0.0f,0.0f, -0.3f,0.0f,0.0f,-0.5f,-0.5f,0.0f,
14、 0.5f,-0.5f,0.0f};// 各定點的顏色 private float color[ ]={ 0.0f,0.5f,1.0f, 0.0f,0.5f,1.0f, 0.0f,0.8f,2.0f, 1.0f,0.0f,0.3f, 0.0f,1.0f,0.3f, 0.3f,0.8f,0.0f};,直線的生成 (2),pub
15、lic lineShape( ) {// 創(chuàng)建直線數(shù)組對象 LineArray line=new LineArray(6,LineArray.COORDINATES |LineArray.COLOR_3); // 設(shè)置直線對象的坐標(biāo)數(shù)組 line.setCoordinate
16、s(0,vert); // 設(shè)置直線對象的顏色數(shù)組 line.setColors(0,color);,直線的生成 (3),// 創(chuàng)建直線屬性對象 LineAttributes linea=new LineAttributes( ); // 設(shè)置線寬 linea.s
17、etLineWidth(10.0f); // 設(shè)置直線的渲染效果 linea.setLineAntialiasingEnable(true); Appearance app=new Appearance( ); app.setLineAttributes(linea);
18、 this.setGeometry(line); this.setAppearance(app); }},直線的使用,BranchGroup group=new BranchGroup();Shape3D shape=new lineShape();group.addChild(shape);,二維文字,Shape3D text2D=new Text2D("清華大學(xué)&
19、quot;, new Color3f(1f,1f,0f),"宋體",100,Font.BOLD);,三維文字,String text="清華大學(xué)";FontExtrusion fe0=new FontExtrusion( );QuadCurve2D.Double curve=new QuadCurve2D.Double( );curve.setCurve(0,0,0.2,0.05,0.4
20、,0);FontExtrusion fe1=new FontExtrusion( );fe1.setExtrusionShape(curve);Font3D f3d=new Font3D(new Font("",Font.PLAIN,1),fe0);Text3D txt=new Text3D(f3d,text,new Point3f(0.0f,-1.f,-1.f),Text3D.ALIGN_CENTER,T
21、ext3D.PATH_RIGHT);Shape3D sh=new Shape3D ( );,真實形體的生成,用幾何變換構(gòu)造真實的物體,Stool.html,BranchGroup objRoot=new BranchGroup();TransformGroup trans=new TransformGroup();objRoot.addChild(trans);TransformGroup g1=new TransformGr
22、oup( );g1.addChild(new ColorCube(0.2));,較簡單的例子,Transform3D t=new Transform3D( );t.setScale(0.5);t.setTranslation(new Vector3f(0.0f,0.6f,0.0f));t.setRotation(new Quat4f(0.78f,0.78f,0.78f,0.0f)); TransformGroup g2
23、=new TransformGroup(t);g2.addChild(new ColorCube(0.2));,運行結(jié)果,MyCube1.html,// 創(chuàng)建ObjectFile對象,指明屬性int flags = ObjectFile.RESIZE;ObjectFile f = new ObjectFile(flags, (float)(49.0 * Math.PI / 180.0));// 創(chuàng)建場景葉節(jié)點,導(dǎo)
24、入.obj文件Scene s = null;try { s = f.load(galleon.obj");} // 將場景葉節(jié)點添加到3D模型所在的變換組分支節(jié)點objTG.addChild(s.getSceneGroup());,導(dǎo)入外界文件,當(dāng)前可導(dǎo)入的格式,本課程未涉及內(nèi)容,光照 材質(zhì)紋理映射背景 霧效 聲音交互式編程,chapter9\SimpleBillboard.html更多…,Jav
25、a 3D作品欣賞會,里程碑,基本形體的生成球 圓柱 圓錐 (長方體)直線 (平面) 二維文字 三維文字真實形體的生成幾何變換是構(gòu)成真實形體的基礎(chǔ)導(dǎo)入外界文件其他功能作品欣賞,第三回,升,實例:跨地域高性能計算的可視化,,ACI (Advanced Computing Infrastructure),可視化支撐環(huán)境,,分子鏈的構(gòu)成過程,,,,復(fù)合幾何變換,double r = Math.sqrt(x*x+y*y+z*z)
26、;double alpha1 = Math.atan(x/z);double alpha2 = Math.acos(y/r);Transform3D rot1 = new Transform3D();Transform3D rot2 = new Transform3D(); rot1.rotY(alpha1);// 繞Y旋轉(zhuǎn)α1度 rot2.rotX(alpha2);// 繞X旋轉(zhuǎn)α2度Transform3
27、D newTransform = new Transform3D(); // 疊加兩次旋轉(zhuǎn)的效果 newTransform.mul(rot1); newTransform.mul(rot2);,定義與服務(wù)器的數(shù)據(jù)傳輸格式,客戶端獲取數(shù)據(jù)的代碼,String address = “http://192.168.166.253/servlet/” + “ t
28、emplate.TAP.RequestData?” + “TaskName=test&Step=501&nLink=3&” + “Link1=3&Link2=7&Link3=49”;URL u=new URL(address);// 形成一個URL(傳入地址和參數(shù))URLConnection con=u.openConnection();// 與服務(wù)
29、器的Servlet建立連接,InputStream istream=con.getInputStream();// 獲取數(shù)據(jù)BufferedReader br=new BufferedReader(new InputStreamReader(istream)); // 讀取數(shù)據(jù)StringTokenizer st = newStringTokenizer(br.readLine(),",
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論