Java3D ile Grafik Programlama 6

Oğuz~#>

Kıdemli Üye
5 Tem 2009
4,772
16
Bursa
Not: Bu yazıyı 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

Bu tutorialda behaviorların nasıl çalıştığını ve programımıza nasıl ekleneceğini göreceksiniz. Behaviorlar programda bir interactionlar ve animasyonlar için kullanılır. Aşağıda behaviour' un nasıl uygulanacağına dair adımları görebilirsiniz.

1. Create a target TransformGroup Set the ALLOW_TRANSFORM_WRITE capability

2. Create an Alpha5 object Specify the time parameters for the alpha

3. Create the interpolator object Have it reference the Alpha and TransformGroup objects Customize the behavior parameters

4. Specify a scheduling region Set the scheduling region for the behavior

5. Make the behavior a child of the TransformGroup

Animasyon için behaviour kullanımlarında Interpolatorlar işinizi büyük ölçüde kolaylaştıracaktır. Interpolatorlar belli iki durum(state) arasındaki değişimlere zamana bölerek yavaş yavaş ilk durumdan son duruma geçişini sağlar.

Interpolator

******** (PositionInterpolator),
Orientation (RotationInterpolator)
Size (ScaleInterpolator),
Color (ColorInterpolator),
Transparency (TransparencyInterpolator)

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.ColorCube; 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(); //Content kısmı compile edilir. scene.compile(); SimpleUniverse simpleU = new SimpleUniverse(canvas3D); simpleU.getViewingPlatform().setNominalViewingTransform(); simpleU.addBranchGraph(scene); }     public BranchGroup createSceneGraph() {  //SceneGraph() için bir BranchGroup tipinde bir kök nesnesi oluşturulur.   BranchGroup objRoot = new BranchGroup();   //Bir tane TransformGroup olu;turulur   //Uzerinde program .ali;tiktan sonra değişiklik yapılacağı için  //ALLOW_TRANSFORM_WRITE aktif hael getirilir   //Kök branchgroup eklenir.  TransformGroup objSpin = new TransformGroup();  objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);  objRoot.addChild(objSpin);   //Bir tane küp nesnesi oluşturulur ve TransformGroup eklenir  objSpin.addChild(new ColorCube(0.4));   // Zaman değişkeni oluşturulur.4000= 4 saniyede bir dönecek  // -1  program sona erdirilinceye kadar dönmeye devam edecek  Alpha rotationAlpha = new Alpha(-1, 4000);  //Transform gurup üzerinde etkili olacak bir behavior nesnesi oluşturuluyor //Bu interpolator nesnesine(alpha,tg) paremetre olarak geçilir   RotationInterpolator rotator =  new RotationInterpolator(rotationAlpha, objSpin);   // a bounding sphere nesnesi oluşturularak behaviorun nekadarlık   // bir alanda etkili olabileceği belirtiliyor  BoundingSphere bounds = new BoundingSphere(); //eğerbu sınırları vermezseniz bu davranışları sınırların dışında algılayıp //döndürme işlemini gerçekleştirmez   rotator.setSchedulingBounds(bounds);  objSpin.addChild(rotator); return objRoot; }  public static **** main(String[] args) {  Frame frame = new MainFrame(new HelloJava3Da(), 256, 256);  } }
java3d_6_1.gif


java3d_6_2.gif


Kaynak Kod: HelloJava3Dc.java
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.