Not: Bu yaziyi baya uzun bir süre önce(1 sene önce) java.sun.com sitesindeki bir bu tutoriallı açıklamaya çalıştım. Java3D o günden bugüne baya yenilikler gerçekleşti. Ama dökümanın genel anlamını kaybetmedigi düşünerek yayınlıyorum. Tabiki çevirideki eksikliklerden ve anlam bozukluklarından dolayı affola
Kaynak Kod: HelloJava3Da.java , ConeYoyo.java
Java3D ile Grafik Programlama 9
Programı yazan Onur Dayıbaşı
Kod:
import java.applet.Applet; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.event.*; import com.sun.j3d.utils.applet.MainFrame; import com.sun.j3d.utils.universe.*; import com.sun.j3d.utils.geometry.Cone; import javax.media.j3d.*; import javax.vecmath.*; public class ConeYoyo{ private BranchGroup yoyoBG; public ConeYoyo() { //yoyoBG BranchGroup nesnesi oluşturulur. yoyoBG = new BranchGroup(); //translate ve rotate olmak üzere iki //tranform3D nesnesi oluşturulur. //apperance nesnesi oluşturulur. Transform3D rotate = new Transform3D(); Transform3D translate = new Transform3D(); Appearance yoyoAppear = new Appearance(); //rotate Tranform3D z ekseninde 90 derece döndürülür //ve yoyoTGR1 Transformgroup nesnesine eklenir. rotate.rotZ(Math.PI/2.0d); TransformGroup yoyoTGR1 = new TransformGroup(rotate); //translate Tranform3D x ekseninde 0.1 taşınır //ve yoyoTGR1 Transformgroup nesnesine eklenir. translate.set(new Vector3f(0.1f, 0.0f, 0.0f)); TransformGroup yoyoTGT1 = new TransformGroup(translate); //Cone nesnesi(width,height) olarak eklenir. Cone cone1 = new Cone(0.6f, 0.2f); cone1.setAppearance(yoyoAppear);//Appear görüntüsü verilir. yoyoBG.addChild(yoyoTGT1);//yoyoBranchGroup a TrasformGroup Translate1 eklenir yoyoTGT1.addChild(yoyoTGR1);//yoyoBrnachGroup a TrasformGroup Rotate1 eklenir yoyoTGR1.addChild(cone1);//TransformGroup Rotation cone1 nesnesi eklenir. //Aynı işlemler mirrorlamak için diğer tarafı içinde uygulanır. translate.set(new Vector3f(-0.1f, 0.0f, 0.0f)); TransformGroup yoyoTGT2 = new TransformGroup(translate); rotate.rotZ(-Math.PI/2.0d); TransformGroup yoyoTGR2 = new TransformGroup(rotate); Cone cone2 = new Cone(0.6f, 0.2f); cone2.setAppearance(yoyoAppear); yoyoBG.addChild(yoyoTGT2); yoyoTGT2.addChild(yoyoTGR2); yoyoTGR2.addChild(cone2); yoyoBG.compile(); } // end of ConeYoyo constructor public BranchGroup getBG(){ return yoyoBG; } } // end of class ConeYoyo
Kaynak Kod: HelloJava3Da.java , ConeYoyo.java
Java3D ile Grafik Programlama 9
Program com.sun.j3d.utils.geometry.*; içerisinde bulunan hazır geometrilerin nasıl kullanılacağını gösteriyor.
Kod:
import java.applet.Applet; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.event.*; import com.sun.j3d.utils.applet.MainFrame; import com.sun.j3d.utils.universe.*; import com.sun.j3d.utils.geometry.*; import javax.media.j3d.*; import javax.vecmath.*; public class HelloJava3Da extends Applet { public HelloJava3Da() { setLayout(new BorderLayout()); Canvas3D canvas3D = new Canvas3D(null); add("Center", canvas3D); BranchGroup scene = createSceneGraph(); scene.compile(); SimpleUniverse simpleU = new SimpleUniverse(canvas3D); simpleU.getViewingPlatform().setNominalViewingTransform(); simpleU.addBranchGraph(scene); } public BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup(); Transform3D T3Dcone = new Transform3D(); Transform3D T3DSphere = new Transform3D(); Transform3D T3DCylinder = new Transform3D(); T3Dcone.set(new Vector3f(0.7f, 0.0f, 0.0f)); T3DSphere.set(new Vector3f(0.0f, 0.0f, 0.0f)); T3DCylinder.set(new Vector3f(-0.7f, 0.0f, 0.0f)); TransformGroup TGcone = new TransformGroup(T3Dcone); TransformGroup TGSphere = new TransformGroup(T3DSphere); TransformGroup TGCylinder = new TransformGroup(T3DCylinder); //Cone nesnesi geometrisi ve appearence oluşturulur Appearance coneAppear = new Appearance(); Cone cone1 = new Cone(0.2f, 0.6f); cone1.setAppearance(coneAppear); //Sphere nesnesi geometrisi ve appearence oluşturulur Appearance sphereAppear = new Appearance(); Sphere sphere1 = new Sphere(0.3f); sphere1.setAppearance(sphereAppear); //Cylinder nesnesi geometrisi ve appearence oluşturulur Appearance cylinderAppear = new Appearance(); Cylinder cylinder1 = new Cylinder(0.2f, 0.6f); cylinder1.setAppearance(cylinderAppear); objRoot.addChild(TGcone); objRoot.addChild(TGSphere); objRoot.addChild(TGCylinder); TGcone.addChild(cone1); TGSphere.addChild(sphere1); TGCylinder.addChild(cylinder1); return objRoot; } public static **** main(String[] args) { Frame frame = new MainFrame(new HelloJava3Da(), 256, 256); } }