1)红色圆锥体
这个示例注释写的非常清楚,比较适合入门的人去学习,运行结果如下图:
package com.quik.java3d;
import java.applet.Applet; //表示程序是Applet程序
import java.awt.BorderLayout; //表示窗口环境采用BorderLayout方式进行布局
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.Cone; //表示调用生成Cone的一个Utility,该包提供基本形体
import com.sun.j3d.utils.universe.*; //表示调用一些设置基本的观测位置所用的类
import javax.media.j3d.*; //表示调用程序所需的Java3d核心类,所有的Java3d程序必须带有这一条
import javax.vecmath.*; //表示调用程序所需的定义矢量计算所用的数学类
//import com.sun.j3d.utils.applet.MainFrame;//可以使程序既为application也为applet
import java.awt.GraphicsConfiguration; //
public class SimpleCoin extends Applet{
public BranchGroup createSceneGraph(){
BranchGroup objRoot =new BranchGroup(); //objRoot对象用于向程序的构造方法提供整个createSceneGraph方法里的内容
TransformGroup objTrans=new TransformGroup(); //新建objTrans对象用于存放坐标系
objRoot.addChild(objTrans); //缺省状况下Java3d的观察点位于(0,0,2.41),所以这里objTrans两句不要也可运行成功
BoundingSphere bounds=new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0); //新建球形限制框,以坐标原点为中心,半径100
Color3f bgColor=new Color3f(1.0f,1.0f,1.0f); //设置背景色为白色
Background bg=new Background(bgColor); //设置背景对象bg的颜色为bgColor
bg.setApplicationBounds(bounds); //设置背景应用范围为bounds
objRoot.addChild(bg); //将背景对象bg添加到objRoot对象中
Color3f directionalColor=new Color3f(1.f,0.f,0.f);//设置光源为绿色
Vector3f vec=new Vector3f(-1.f,0.f,-1.f); //设置光源为-Z方向
DirectionalLight directionalLight=new DirectionalLight(directionalColor,vec);//使用直接光照
directionalLight.setInfluencingBounds(bounds); //设置光照影响范围为bounds
objRoot.addChild(directionalLight); //将光照对象添加到objRoot中
Appearance app=new Appearance();
Material material=new Material();