Java 3D API 為 Sun 定義的 3D 顯示標準介面,封裝 OpenGL 與 DirectX 底層技術,提供純 Java 的高層開發模型。特性:
Java 3D 為獨立可選組件,最新版 1.3.0 需 JDK 1.3.1+、OpenGL 1.1+ 顯卡驅動、Windows NT 4.0 SP3+/2000/XP。
Java 3D 採用有向無環圖(Scene Graph)樹狀結構管理 3D 場景:

為支援大尺度虛擬宇宙,Java 3D 採用 256 位定點數(第 128 位為小數點),單位 1.0 = 1 公尺,涵蓋從普朗克長度到百億光年範圍,解決單精度浮點數在遠距離或微小尺度下的精度問題。
// 使用工具類 SimpleUniverse 簡化建構
SimpleUniverse u = new SimpleUniverse(canvas3D);
ViewingPlatform vp = u.getViewingPlatform();
// 設定初始觀察點位置
Transform3D t = new Transform3D();
t.set(new Vector3d(0.0, 0.0, 2.41));
vp.getViewPlatformTransform().setTransform(t);
// 建立場景分支
BranchGroup scene = createSceneGraph();
u.addBranchGraph(scene);
Java 3D 引入全新觀察模型,實現「撰寫一次,隨處觀察」,支援標準螢幕、立體投影、頭戴追蹤裝置等多樣顯示設備,無需修改場景圖。
View 物件及其組件(Canvas3D, Screen3D, PhysicalBody, PhysicalEnvironment)建立兩者映射
ViewPlatform 為場景圖葉子節點,定義觀察者在虛擬世界的位置、方向、縮放。應用程式透過修改其上層 TransformGroup 實現漫遊。一個 View 僅能附加單一 ViewPlatform。

NOMINAL_HEAD:虛擬眼睛位置對應物理眼睛位置(預設)NOMINAL_FEET:虛擬雙腳貼地,自動調整眼睛高度NOMINAL_SCREEN:維持與「關注點」固定距離OrbitBehavior orbit = new OrbitBehavior(canvas3D, OrbitBehavior.REVERSE_ALL);
BoundingSphere bounds = new BoundingSphere(new Point3d(0,0,0), 100.0);
orbit.setSchedulingBounds(bounds);
viewingPlatform.setViewPlatformBehavior(orbit);

// HelloUniverse.java extends Applet
public void init() {
Canvas3D c = new Canvas3D(null);
add("Center", c);
SimpleUniverse u = new SimpleUniverse(c);
u.addBranchGraph(createSceneGraph());
}
<applet code="HelloUniverse.class" width=256 height=256></applet>
透過 JSP 動態產生 Applet 標籤屬性(如寬高),實現執行期調整 3D 物件大小:
<% float j = 300 * new java.util.Random().nextFloat(); %>
<applet code="HelloUniverse.class" width="<%=j%>" height="<%=j%>"></applet>

最佳實踐:JSP 呼叫 EJB 取得資料,以參數傳遞給 Applet:
<%
Context ctx = new InitialContext();
Object ref = ctx.lookup("Customer");
CustomerHome home = (CustomerHome) PortableRemoteObject.narrow(ref, CustomerHome.class);
Customer cust = home.findByPrimaryKey("1000000");
String data = cust.getData();
%>
<applet code="HelloUniverse.class" width=200 height=200>
<param name="Data" value="<%=data%>">
</applet>
架構優勢:Java 3D 豐富 J2EE 表現層;J2EE 提供強大伺服端運算支援複雜 3D 邏輯(如 GIS 地形轉換、衛星資料渲染)。
Java 3D + Java 平台,讓 3D 視覺化走出桌面,走向企業級與行動應用。