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

[Java3Djp:01133] Re: [Q] SimpleUniverse==Builder pattern?



=== 眠っているあなたの「資格」を活かして、「情報教育」の現場へ!===
デジタルクリエイターカレッジWAO!は、来年4月に高校で始まる「情報」科目
の指導者養成コースを開設します! 教員免許、MOT、MOUS、MCP、マルチメディア
検定…。頑張って取得したあなたの「資格」を今こそ活かしましょう。
受講お申し込み受付中!今すぐWAO!までご連絡下さい。
========= 詳しくは>>http://www.dcc-wao.co.jp/ ========

えんどうです。

> [Q] SimpleUniverse は Builder パターンなのでしょうか?

予想通り(?)反響が無いようですね。^^;

きのう「Java 3D API 仕様」を読み直していたら、
Java 3D 1.1 Alpha の頃は SimpleUniverse ではなく
UniverseBuilder クラスが提供されていたのを思い出しました。
このクラス名は Builder パターンとの関連を匂わせますね。

今手元にこの本が無いのですが、たしか UniverseBuilder というのは
こんなクラスだったと思います。

import javax.media.j3d.VirtualUniverse;
import javax.media.j3d.Locale;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Transform3D;
import javax.vecmath.Vector3d;
import javax.media.j3d.TransformGroup;
import javax.media.j3d.ViewPlatform;
import javax.media.j3d.View;
import javax.media.j3d.PhysicalBody;
import javax.media.j3d.PhysicalEnvironment;
import javax.media.j3d.Canvas3D;

public class UniverseBuilder {
  VirtualUniverse universe = null;
  Locale locale = null;
  BranchGroup root = null;
  Transform3D t3d = null;
  TransformGroup trans = null;
  ViewPlatform vp = null;
  View view = null;
  PhysicalBody body = null;
  PhysicalEnvironment env = null;
  Canvas3D canvas = null;
  
  public UniverseBuilder(Canvas3D aCanvas) {
    canvas = aCanvas;
    
    universe = new VirtualUniverse();
    locale = new Locale(universe);
    
    root = new BranchGroup();
    
    t3d = new Transform3D();
    t3d.setTranslation(new Vector3d(0.0, 0.0, 2.0));
    trans = new TransformGroup(t3d);
    root.addChild(trans);
    
    vp = new ViewPlatform();
    trans.addChild(vp);
    
    view = new View();
    view.attachViewPlatform(vp);
    
    body = new PhysicalBody();
    view.setPhysicalBody(body);
    
    env = new PhysicalEnvironment();
    view.setPhysicalEnvironment(env);
    
    if (canvas == null) canvas = new Canvas3D(null);
    view.addCanvas3D(canvas);
    
    locale.addBranchGraph(root);
  }
  
  public void addBranchGraph(BranchGroup aBranchGroup) {
    locale.addBranchGraph(aBranchGroup);
  }
}

図にすると、

  (////) VirtualUniverse
    |
    ▼
    ◇   Locale
      \
        ▲
         (BG) BranchGroup
          |
          ▼
         (TG) TransformGroup
          |
          ▼         
         /\  ←……┌──┐←……┌────┐
       / VP \……→│View│……→│Canvas3D│
        ̄ ̄ ̄ ̄      └──┘      └────┘
     ViewPaltform     :  :
                      ↓  ↓
                      □  □
                Physical  Physical
                Body      Environment

このようなかたちが Builder パターンに適合しているという理解で
よろしいでしょうか。

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