[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Java3Djp:00784] Re: Multi View



-----------------------------------------------------------
  【地球にやさしく】  【資源再利用】  【リサイクル】
 ・パソコンプリンターのトナーカートリッジのリサイクル品
        『新品に比べて格安、ほぼ半額。o(^-^)o』
 ・価格の確認→ http://www.ecotec.co.jp/cosmos/serv01.htm
------ 環境ネットワーク--->> http://www.ecotec.co.jp/ -----

えんどうです。

>>1つのシーングラフに複数の視点を設定して、
>>それぞれの視点を個別のCanvas3Dに割り当てるには
>>どのようにすればよいのでしょうか?
>
>試したことがないのですが、View側のツリーを複数 add すれば可能だと思います。

あまり良いサンプルとは言えないかもしれませんが、いちおう書きましたので投稿します。

      1 // Java 3D Test Program
      2 // SmallUniverse.java
      3 // Copyright(c) 1999 ENDO Yasuyuki <yasuyuki@xxxxxxxxxx>
      4 
      5 import javax.media.j3d.*;
      6 
      7 public class SmallUniverse {
      8   protected VirtualUniverse universe_ = null;
      9   protected Locale locale_ = null;
     10   protected BranchGroup root_ = null;
     11   protected TransformGroup trans_ = null;
     12   protected ViewPlatform vp_ = null;
     13   protected View view_ = null;
     14   protected PhysicalBody body_ = null;
     15   protected PhysicalEnvironment env_ = null;
     16   protected Canvas3D canvas_ = null;
     17   
     18   public SmallUniverse() {
     19     this( new Locale( new VirtualUniverse() ) );
     20   }
     21   
     22   public SmallUniverse(Locale locale) {
     23     universe_ = locale.getVirtualUniverse();
     24 
     25     locale_ = locale;
     26 
     27     root_ = new BranchGroup();
     28 
     29     trans_ = new TransformGroup();
     30     trans_.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
     31     trans_.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
     32     root_.addChild(trans_);
     33 
     34     vp_ = new ViewPlatform();
     35     trans_.addChild(vp_);
     36 
     37     view_ = new View();
     38     view_.attachViewPlatform(vp_);
     39 
     40     canvas_ = new Canvas3D(null);
     41     view_.addCanvas3D(canvas_);
     42 
     43     body_ = new PhysicalBody();
     44     view_.setPhysicalBody(body_);
     45 
     46     env_ = new PhysicalEnvironment();
     47     view_.setPhysicalEnvironment(env_);
     48     
     49     locale_.addBranchGraph(root_);
     50   }
     51   
     52   public Locale getLocale() { return locale_; }
     53   public void setLocale(Locale locale) { locale_ = locale; }
     54   
     55   public void getTransform(Transform3D t3d) { trans_.getTransform(t3d); }
     56   public void setTransform(Transform3D t3d) { trans_.setTransform(t3d); }
     57   
     58   public Canvas3D getCanvas() { return canvas_; }
     59   public void setCanvas3D(Canvas3D canvas) { canvas_ = canvas; }
     60   
     61 }


      1 // Java 3D Test Program
      2 // MultiViewTest.java
      3 // Copyright(c) 1999 ENDO Yasuyuki <yasuyuki@xxxxxxxxxx>
      4 
      5 import javax.media.j3d.*;
      6 import javax.vecmath.*;
      7 import com.sun.j3d.utils.geometry.ColorCube;
      8 import java.awt.*;
      9 
     10 public class MultiViewTest {
     11   public MultiViewTest() {
     12     SmallUniverse u1 = new SmallUniverse();
     13     Locale locale = u1.getLocale();
     14     SmallUniverse u2 = new SmallUniverse(locale);
     15     
     16     BranchGroup scene = new BranchGroup();
     17     scene.addChild( new ColorCube(0.4) );
     18     locale.addBranchGraph(scene);
     19     
     20     Transform3D t3d1 = new Transform3D();
     21     t3d1.set( new Vector3d(0.0, 0.0, 2.0) );
     22     u1.setTransform(t3d1);
     23     
     24     Transform3D t3d2 = new Transform3D();
     25     t3d2.lookAt( new Point3d(2.0, 2.0, 2.0),         // eye
     26                  new Point3d(0.0, 0.0, 0.0),         // center
     27                  new Vector3d(-0.57, 0.57, -0.57) ); // up
     28     t3d2.invert(); // 必須
     29     u2.setTransform(t3d2);
     30     
     31     Frame f1 = new Frame();
     32     f1.setLayout( new BorderLayout() );
     33     f1.add(u1.getCanvas(), "Center");
     34     f1.pack();
     35     f1.setSize(200, 200);
     36     f1.show();
     37     
     38     Frame f2 = new Frame();
     39     f2.setLayout( new BorderLayout() );
     40     f2.add(u2.getCanvas(), "Center");
     41     f2.pack();
     42     f2.setSize(200, 200);
     43     f2.show();
     44   }
     45   
     46   public static void main(String[] args) {
     47     MultiViewTest MultiViewTest = new MultiViewTest();
     48   }
     49 }
     50 


-- 
ENDO Yasuyuki <yasuyuki@xxxxxxxxxx>
http://www.javaopen.org/jfriends/ (Japanese Only)