鼓捣了半天,终于成功了,j3d是sun的官方扩充包,主要用于3d显示,调用的是本地库,所以速度算不上慢,但是编写起来也是有一定的复杂度的,如果有一个好一点的框架就好了,只能给爱好者玩玩了,java做企业web还是更靠点谱,不过我对企业什么的很没兴趣,而且还发现了一个IBM的IFRAME包,不是html里的<iframe></iframe>里的标签的意思,是一个基于swing的UI框架,可以设计出比较复杂的UI,效果还不错,透明框架什么的,还有不规则框架都可以做,不过也相当难写,这是我的亲身体会,额!
重新购买了域名和空间,希望别再和谐我的博客了,我一个悲剧程序员容易吗我,我真的什么也不知道,什么也不知道阿!
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- import javax.media.j3d.*;
- import javax.vecmath.*;
- import com.sun.j3d.utils.universe.*;
- import com.sun.j3d.utils.geometry.*;
- public class Titles {
- public static void main(String[] args) {
- Titles t = new Titles();
- t.setUp();
- }
- public void setUp() {
- JFrame jf = new JFrame("Welcome");
- // kill the window on close
- jf.addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent winEvent) {
- System.exit(0);
- }
- });
- JPanel panel = new JPanel();
- panel.setLayout(new GridLayout(1, 1, 2, 2));
- GraphicsConfiguration config = SimpleUniverse
- .getPreferredConfiguration();
- Canvas3D canvas3D = new Canvas3D(config);
- canvas3D.setSize(360, 160);
- SimpleUniverse universe = new SimpleUniverse(canvas3D);
- BranchGroup group = new BranchGroup();
- addObjects(group);
- addLights(group);
- universe.getViewingPlatform().setNominalViewingTransform();
- universe.addBranchGraph(group);
- panel.add(canvas3D);
- jf.getContentPane().add(panel, BorderLayout.CENTER);
- jf.pack();
- jf.setVisible(true);
- }
- public void addLights(BranchGroup group) {
- BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0),
- 1000.0);
- Color3f light1Color = new Color3f(1.0f, 1.0f, 1.0f);
- Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);
- DirectionalLight light1 = new DirectionalLight(light1Color,
- light1Direction);
- light1.setInfluencingBounds(bounds);
- group.addChild(light1);
- // Set up the ambient light
- Color3f ambientColor = new Color3f(.1f, .1f, .1f);
- AmbientLight ambientLightNode = new AmbientLight(ambientColor);
- ambientLightNode.setInfluencingBounds(bounds);
- group.addChild(ambientLightNode);
- }
- private void addObjects(BranchGroup group) {
- Font3D f3d = new Font3D(new Font("TestFont", Font.PLAIN, 2),
- new FontExtrusion());
- Text3D text = new Text3D(f3d, new String("Java3D.org"), new Point3f(-3.5f,
- -.5f, -4.5f));
- text.setString("Java3D.org");
- Color3f white = new Color3f(1.0f, 1.0f, 1.0f);
- Color3f blue = new Color3f(.2f, 0.2f, 0.6f);
- Appearance a = new Appearance();
- Material m = new Material(blue, blue, blue, white, 80.0f);
- m.setLightingEnable(true);
- a.setMaterial(m);
- Shape3D sh = new Shape3D();
- sh.setGeometry(text);
- sh.setAppearance(a);
- TransformGroup tg = new TransformGroup();
- Transform3D t3d = new Transform3D();
- Transform3D tDown = new Transform3D();
- Transform3D rot = new Transform3D();
- Vector3f v3f = new Vector3f(-1.6f, -1.35f, -6.5f);
- t3d.setTranslation(v3f);
- rot.rotX(Math.PI / 5);
- t3d.mul(rot);
- v3f = new Vector3f(0, -1.4f, 0f);
- tDown.setTranslation(v3f);
- t3d.mul(tDown);
- tg.setTransform(t3d);
- tg.addChild(sh);
- group.addChild(tg);
- }
- }