Java3D完整程序由三个主要部分组成。
(1)内容分支部分:即为拥有三维物体、背景、声音和灯光内容的分支。所有的内容都摆放在一个Branch Group的对象里。一般情况下,三维形体要摆放在空间的某一位置,所以需要在Branch Group里面生成一个Transform Group对象用于坐标变换,此时要将形体、材质和相关的其他对象放在Transform Group对象中作为Transform Group对象的组成部分。此外,在Branch Group对象里还需放置与背景和灯光有关的对象。最后将内容分支中的内容组装在一起,形成场景类的一个方法。
图7-11 Java3D的场景图结构
内容分支的建造非常灵活,场景的不同主要是内容分支的差异。以下为一段生成场景的样本(可当作场景类的一个方法)。
public Branch Group create Scence Graph|//构建内容分支部分的方法
Branch Group obj Root=new Bremch Group();
Transform Group obj Trans=new Transform Group();
Bounding Sphere bounds=new Bounding Sphere(new Point3d(0.,0.,0.),100.);
Color3f bg Color=new Color3f(1.0f,1.0f,1.0f);
Backgroud bg=new Backgroud(bg Color);
Bg.set Application Bounds(bounds);//设定声音的有效范围
obj Root.add Child(bg);
Color3f directional Color=new Color3f(l.f,l.f,l.f);
Vector3f vec=new Vector3f(0.f,0.f,-l.f);
Directional Light directional Light=new Directional Light(Directional Color,vec);
directional Light.set Influencing Bounds(bounds);//设定灯光的有效范围
obj Root.add Child(directional Light);
Appearance app=new Appearance();//构造CORE的外表形态
Material material=new Material();
Material.set Emissive Color(new Color3f(l.f,0.f,0.f));
App.set Material(material);
Cone cone=new Cone(.5f,1.f,1,app);
Obj Trans.add Child(cone);
obj Root.add Child(obj Trans);
Obj Root.compile();
Return obj Root;
}
(2)场景基准部分:首先设置一个Border Layout,并将一个Canvas3D对象放置在Border-Layout的相应位置;然后利用Canvas3D对象生成一个Simple Universe对象,并利用Simple-Universe对象的Get Viewing Platform().set Nominal Viewing Transform()方法设置Simple-Universe对象的观察点;最后利用Simple Universe对象的add Branch Graph()方法,将(1)中方法生成的场景加入到Virtual Universe中。
所有的Java3D应用程序的场景基准部分的构造方法是相同的或基本相同的。以下为一段样本程序(可当作场景类的一个方法)。
public Simple Cone O{//构造场景基准部分的方法
set Layout(new Border Layout());
Canvas3D c=new Canvas3D(null);
add("Center",c);
Branch Group scene=create Scene Group();//调用(1)中方法生成场景内容Simple-Universe u=new Simple Universe(c);//创建Virtual Universe u.
get Viewing Platform().set Norainal Viewing Transform();//设置视点
u.add Branch Graph(scene);
}
(3)程序的启动部分:按照Java程序的结构,既可以将整个程序组成applet的形式,也可以将之组装成application的形式[此时需要main()函数],这根据应用需求而定。对于Appli-cation形式,其样本程序如下。
public static void main(String[]args){
new Main Frame(new Simple Cone(),400,300);
}
总之,将以上前两部分或三部分当作一个类的方法,再加上若干个import语句部分,即可构成一个完整的Java Applet程序或Java Application程序。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。