⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 j3dapplet.java~139~

📁 利用Java 3D API来编写的一个Java三维动画的演示程序。这个程序将在中央显示一行3D的文字
💻 JAVA~139~
📖 第 1 页 / 共 2 页
字号:
    TransformGroup spinTg = new TransformGroup();
    spinTg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    // 旋转轴
    Transform3D rotAxis = new Transform3D();
    // 质材的相关参数
    Appearance ap=null;
    Color3f objColor=null;
    Material mm=null;
    // 根据传入的字符串创建不同的对象
    int Type = 0;
    //Primitive retObj = null;
    Node retObj=null;
    if (strType == "立方体")
      Type = 1;
    if (strType == "圆锥")
      Type = 2;
    if (strType == "棱锥")
      Type = 3;
    if (strType == "带纹理形体")
      Type = 4;
    switch (Type) {
      case 1:
        // 设置质材和渲染方式
        objColor = new Color3f(1.0f, 0.2f, 0.4f);
        ap = new Appearance();
        mm = new Material();
        mm.setLightingEnable(true);
        mm.setSpecularColor(objColor);
        ap.setMaterial(mm);

        retObj = new com.sun.j3d.utils.geometry.Box(0.2f, 0.2f, 0.2f, ap);
        break;
      case 2:
        rotAxis.rotX(cPi/4);
        // 设置质材和渲染方式
        objColor = new Color3f(0.0f, 0.2f, 0.4f);
        ap = new Appearance();
        mm = new Material();
        mm.setLightingEnable(true);
        mm.setSpecularColor(objColor);
        ap.setMaterial(mm);

        retObj= new Cone(0.2f,0.5f,ap);
        break;
      case 3:
        ap = new Appearance();
        // Set up the coloring properties
        objColor = new Color3f(0.5f, 0.0f, 0.2f);
        ColoringAttributes ca = new ColoringAttributes();
        ca.setColor(objColor);
        ap.setColoringAttributes(ca);

        // Set up the polygon attributes
        PolygonAttributes pa = new PolygonAttributes();
        pa.setPolygonMode(pa.POLYGON_LINE);
        pa.setCullFace(pa.CULL_NONE);
        ap.setPolygonAttributes(pa);

        retObj= new T3DGeometry(0.3f,ap);
        break;
      case 4:
      	String  texImage=null;
        ap=new Appearance();
        /*try {
         texImage = new java.net.URL(getCodeBase().toString() +
					    "wind.jpg").toString();
        }
        catch (java.net.MalformedURLException ex) {
          System.out.println(ex.getMessage());
          System.exit(1);
        }*/
        texImage="E:\\Java\\JProject\\J3DDemo\\classes\\j3ddemo\\wind.jpg";
        TextureLoader tex = new TextureLoader(texImage, this);
        ap.setTexture(tex.getTexture());

        TextureAttributes texAttr = new TextureAttributes();
        texAttr.setTextureMode(TextureAttributes.MODULATE);
        ap.setTextureAttributes(texAttr);

        objColor = new Color3f(0.0f, 0.0f, 0.0f);
        Color3f white= new Color3f(1.0f, 1.0f, 1.0f );
        mm = new Material();
        mm.setLightingEnable(true);
        mm.setSpecularColor(objColor);
        mm.setAmbientColor(white);
        mm.setDiffuseColor(white);
        mm.setShininess(1.0f);
        ap.setMaterial(mm);
        retObj= new T3DGeometry(0.5f,ap);
        break;
      default:
        return null;
    }
    // 增加
    spinTg.addChild(retObj);
    // 为形体创建一个行为,根据传入的角速度值创建
    Alpha rotationAlpha = new Alpha( -1, Alpha.INCREASING_ENABLE,
                                    0, 0,
                                    fD, 0, 0,
                                    0, 0, 0);

    RotationInterpolator rotator =
        new RotationInterpolator(rotationAlpha, spinTg, rotAxis,
                                 0.0f, (float) Math.PI * 2.0f);

    BoundingSphere bounds =
        new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);

    rotator.setSchedulingBounds(bounds);

    objTrans.addChild(rotator);
    objTrans.addChild(spinTg);

    bg.setCapability(bg.ALLOW_DETACH );
    bg.addChild(objTrans);
    return bg;
    //return objTrans;
  }

  public Group createText(double scale, int fD) {
    BranchGroup bg=new BranchGroup();
    Transform3D t = new Transform3D();
    t.set(scale, new Vector3d(0.0,0.0,0.0));
    TransformGroup objTrans = new TransformGroup(t);
    // 创建第二个变换节点。
    TransformGroup spinTg = new TransformGroup();
    spinTg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    // 旋转轴
    Transform3D rotAxis = new Transform3D();
    // 创建3D文字
    float sl= txtString.length();
    Font3D f3d= new Font3D(new Font("仿宋", Font.PLAIN, 2),
                           new FontExtrusion());
    Text3D txt = new Text3D(f3d, txtString,
                            new Point3f( -sl / 2.0f, -1.f, -1.f));
    Shape3D sh = new Shape3D();
    // 设置质材和渲染方式
    Appearance app = new Appearance();
    Material mm = new Material();
    mm.setLightingEnable(true);
    app.setMaterial(mm);
    sh.setAppearance(app);
    sh.setGeometry(txt);
    //objTrans.addChild(sh);

    // 增加
    spinTg.addChild(sh);
    // 为形体创建一个行为,根据传入的角速度值创建
    int nfD= (int)(fD/1.5f);
    Alpha rotationAlpha = new Alpha( -1, Alpha.INCREASING_ENABLE,
                                    0, 0,
                                    nfD, 0, 0,
                                    0, 0, 0);

    RotationInterpolator rotator =
        new RotationInterpolator(rotationAlpha, spinTg, rotAxis,
                                 0.0f, (float) Math.PI * 2.0f);

    BoundingSphere bounds =
        new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);

    rotator.setSchedulingBounds(bounds);

    objTrans.addChild(rotator);
    objTrans.addChild(spinTg);

    bg.addChild(objTrans);
    bg.setCapability(bg.ALLOW_DETACH);
    return bg;
    //return objTrans;
  }
  //Main method
  public static void main(String[] args) {
    J3DApplet applet = new J3DApplet();
    applet.isStandalone = true;
    Frame frame;
    frame = new Frame();
    frame.setTitle("Applet Frame");
    frame.add(applet, BorderLayout.CENTER);
    applet.init();
    applet.start();
    frame.setSize(800,620);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    frame.setLocation((d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2);
    frame.setVisible(true);
  }

  void jSlider2_mouseClicked(MouseEvent e) {
    int value = jSlider2.getValue();
    fD =(int) ( (1-(float)value /100 )* 8000.0);
    updataView();
  }

  void jSlider2_mouseDragged(MouseEvent e) {
    int value = jSlider2.getValue();
     fD =(int) ( (1-(float)value /100 )* 8000.0);
    updataView();
  }

  void jSlider2_keyPressed(KeyEvent e) {
    int value = jSlider2.getValue();
     fD =(int) ( (1-(float)value /100 )* 8000.0);
    updataView();
  }

  void jComboBox_TopLeft_itemStateChanged(ItemEvent e) {
    ibgType[0]=jComboBox_TopLeft.getSelectedIndex()+1;
    updataView();
  }

  void jComboBox_TopRight_itemStateChanged(ItemEvent e) {
    ibgType[1]=jComboBox_TopRight.getSelectedIndex()+1;
    updataView();
  }

  void jComboBox_ButtomLeft_itemStateChanged(ItemEvent e) {
    ibgType[2]=jComboBox_ButtomLeft.getSelectedIndex()+1;
    updataView();
  }

  void jComboBox_ButtomRight_itemStateChanged(ItemEvent e) {
    ibgType[3]=jComboBox_ButtomRight.getSelectedIndex()+1;
    updataView();
  }

  void jButton_ChangText_actionPerformed(ActionEvent e) {
    txtString= jTextField_txtString.getText();
    updataView();
  }


}

class J3DApplet_jSlider2_mouseAdapter extends java.awt.event.MouseAdapter {
  J3DApplet adaptee;

  J3DApplet_jSlider2_mouseAdapter(J3DApplet adaptee) {
    this.adaptee = adaptee;
  }
  public void mouseClicked(MouseEvent e) {
    adaptee.jSlider2_mouseClicked(e);
  }
}

class J3DApplet_jSlider2_mouseMotionAdapter extends java.awt.event.MouseMotionAdapter {
  J3DApplet adaptee;

  J3DApplet_jSlider2_mouseMotionAdapter(J3DApplet adaptee) {
    this.adaptee = adaptee;
  }
  public void mouseDragged(MouseEvent e) {
    adaptee.jSlider2_mouseDragged(e);
  }
}

class J3DApplet_jSlider2_keyAdapter extends java.awt.event.KeyAdapter {
  J3DApplet adaptee;

  J3DApplet_jSlider2_keyAdapter(J3DApplet adaptee) {
    this.adaptee = adaptee;
  }
  public void keyPressed(KeyEvent e) {
    adaptee.jSlider2_keyPressed(e);
  }
}

class J3DApplet_jComboBox_TopLeft_itemAdapter implements java.awt.event.ItemListener {
  J3DApplet adaptee;

  J3DApplet_jComboBox_TopLeft_itemAdapter(J3DApplet adaptee) {
    this.adaptee = adaptee;
  }
  public void itemStateChanged(ItemEvent e) {
    adaptee.jComboBox_TopLeft_itemStateChanged(e);
  }
}

class J3DApplet_jComboBox_TopRight_itemAdapter implements java.awt.event.ItemListener {
  J3DApplet adaptee;

  J3DApplet_jComboBox_TopRight_itemAdapter(J3DApplet adaptee) {
    this.adaptee = adaptee;
  }
  public void itemStateChanged(ItemEvent e) {
    adaptee.jComboBox_TopRight_itemStateChanged(e);
  }
}

class J3DApplet_jComboBox_ButtomLeft_itemAdapter implements java.awt.event.ItemListener {
  J3DApplet adaptee;

  J3DApplet_jComboBox_ButtomLeft_itemAdapter(J3DApplet adaptee) {
    this.adaptee = adaptee;
  }
  public void itemStateChanged(ItemEvent e) {
    adaptee.jComboBox_ButtomLeft_itemStateChanged(e);
  }
}

class J3DApplet_jComboBox_ButtomRight_itemAdapter implements java.awt.event.ItemListener {
  J3DApplet adaptee;

  J3DApplet_jComboBox_ButtomRight_itemAdapter(J3DApplet adaptee) {
    this.adaptee = adaptee;
  }
  public void itemStateChanged(ItemEvent e) {
    adaptee.jComboBox_ButtomRight_itemStateChanged(e);
  }
}

class J3DApplet_jButton_ChangText_actionAdapter implements java.awt.event.ActionListener {
  J3DApplet adaptee;

  J3DApplet_jButton_ChangText_actionAdapter(J3DApplet adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jButton_ChangText_actionPerformed(e);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -