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

📄 point5.java

📁 这个就是目前我收集,以及自己写的一些java3d的原码,大部分都可以运行,适合和我一样,刚刚开始对java3D心动的菜鸟
💻 JAVA
字号:
package com.java3d.test;

import java.applet.Applet;  //可作为小程序应用
import java.awt.BorderLayout;  //窗体布局管理器
import com.sun.j3d.utils.applet.MainFrame; //建立主窗体用
import com.sun.j3d.utils.universe.*; //Java3D空间类
import com.sun.j3d.utils.geometry.*; //可直接调用的形状
import javax.vecmath.*; //矢量运算引用
import javax.media.j3d.*; //Java3D核心引用@SuppressWarnings("serial")
public class Point5 extends Applet {

private BranchGroup createSceneGraph(){
  
     BranchGroup objRoot = new BranchGroup();
  //建立子图根节点
  
     objRoot.addChild(createObject());
  //将createObject子程序建立的Group作为字节点
  
     objRoot.compile();
     //编译3D场景
  
     return objRoot;
     //返回该节点
}

private Group createObject(){
  
     Transform3D t = new Transform3D();
     TransformGroup objTrans = new TransformGroup(t);
     //创建变换组,并用Transform3D三维变换组来初始化
  
     objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);  //设置变换组为可改变状态
  
     Shape3D shape = new pointShape();  
     //pointShape是外部函数,内容为建立六个位置颜色各不同的点
     //pointShape我就不写了,不用六个点也可以,只要是Shape3D的形状就行
  
     objTrans.addChild(shape);
     //将这组点放入变换组中 
     //这里的shape可以换成别的已经建立好的形状如com.sun.j3d.utils.geometry.ColorCube
  
     Transform3D yAxis = new Transform3D();
//三维变换组,这里打算让点围绕Y轴转动
  
     Alpha rotationAlpha = new Alpha(-1,Alpha.INCREASING_ENABLE,0,0,4000,0,0,0,0,0);
       /*
       * Alpha类对象用于创建随时间变化的功能。
       * Alpha(int loopCount, long increasingAlphaDuration)
       * 这个构造函数仅仅把loopCount和increasingAlphaDuration作为其参数,
       * 而对所有其它的参数则赋以默认值。这导致了Alpha对象产生从0递增到1之间的值。
       * loopCount参数提供了循环次数。如果loopCount是–1, alpha对象则无限循环下去。
       * 从0增长到1的时间则在第二个参数中以毫秒的形式指定。 
       * 参数:
       * loopCount – 运行这个alpha对象的次数。值为 -1时则作无限循环。 
       * increasingAlphaDuration – alpha从0增长到1的时间,以毫秒形式指定。 
       */
  
     RotationInterpolator rotator = new RotationInterpolator(rotationAlpha,objTrans,yAxis,0.0f,(float)Math.PI*2.0f);
       /*
       * RotationInterpolator(Alpha alpha, TransformGroup target)
       * 这个类定义了一个行为,能在一对角度(指定的Alpha对象所产生的值)之间线性地插入修改其目标TransoformGroup的旋转组件。
       * 这个插入的角度就用于生成一个变换。
       * 参数:
       * alpha –根据函数的引用的不同而时间也不同。 
       * target – 要修改的TransformGroup对象 
       */
  
  
     BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0),50.0);
     //定义可视范围
  
      rotator.setSchedulingBounds(bounds);
     //将旋转器为设定可视范围
   
      objTrans.addChild(rotator);
      //将行为添加到变化组中
   
     return objTrans;
     //返回该变化组
}

       public Point5(){
     //构造函数,建立对象时执行
  
     setLayout(new BorderLayout());
  //设置布局器为java.awt.BorderLayout
  
     Canvas3D c =new Canvas3D(SimpleUniverse.getPreferredConfiguration());
  //创建3D画布,并应用显卡环境获取参数
  
     add("Center",c);
     //将画布添加到主窗体
  
     BranchGroup scene = createSceneGraph();
  //将Group根节点获取到scene
  
     SimpleUniverse u = new SimpleUniverse(c);
     //用画布创建空间模型
  
     u.getViewingPlatform().setNominalViewingTransform();
////切换模型到位图模式迫使我们能看得到3D场景
  
     u.addBranchGraph(scene);
//将scene场景放入空间中
}

       public static void main(String[] args){
     
        new MainFrame(new Point5(),400,400);
     //用主程序创建基本窗体,建立对象,自动运行构造函数进行各项生成
    
       }}

⌨️ 快捷键说明

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