//myStick.java
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.event.*;
import java.awt.GraphicsConfiguration;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.behaviors.mouse.*;
import com.sun.j3d.utils.behaviors.picking.*;
public class myStick extends Applet {
Primitive box;
PositionPathInterpolator p3,p5,p6,p8,p9,p10;
RotationInterpolator r5,r6,r9;
Alpha aPos3,aPos5,aPos6,aPos8,aPos9,aPos10,aRot5,aRot6,aRot9;
Appearance ap0,ap1,ap2;
float knot[] = {0f, 1f};
Point3f pos[] = // used for g5,g6
{
new Point3f(0f, 0f, 0f),
new Point3f(-0.25f, -0.25f, 0f),
};
Point3f pos2[] = // used for g9,g10
{
new Point3f(0f, 0f, 0f),
new Point3f(0.25f, -0.25f, 0f),
};
Point3f pos3[] = // used for g3
{
new Point3f(0f, 0f, 0f),
new Point3f(0f, -0.5f, 0.5f),
};
Point3f pos4[] = // used for g10
{
new Point3f( 0f, 0f, 0f),
new Point3f( 0.5f, -0.5f, -0.5f),
};
Point3f pos5[] = // used for g8 to make it disappear
{
new Point3f(0f, 0f, 0f),
new Point3f(0f, -0.5f, -30f),
};
public BranchGroup createSceneGraph(Canvas3D c) {
BranchGroup objRoot = new BranchGroup();
BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
ap0 = new Appearance();
Material mat0 = new Material();
mat0.setDiffuseColor(new Color3f(1f,0f,0f));
ap0.setMaterial(mat0);
ap1 = new Appearance();
Material mat1 = new Material();
mat1.setDiffuseColor(new Color3f(1f,.6f,.4f));
ap1.setMaterial(mat1);
ap2 = new Appearance();
Material mat2 = new Material();
mat2.setDiffuseColor(new Color3f(1f,0.8f,0.6f));
ap2.setMaterial(mat2);
Color3f bgColor = new Color3f(1.0f, 1.0f, 1.0f);
Background bg = new Background(bgColor);
bg.setApplicationBounds(bounds);
objRoot.addChild(bg);
Color3f DirectionalColor = new Color3f(1.f, 1.f, 1.f);
Vector3f vec = new Vector3f( 0.f, 0.f, -1.0f );
DirectionalLight DirectionalLight= new DirectionalLight(DirectionalColor,vec);
DirectionalLight.setInfluencingBounds(bounds);
objRoot.addChild(DirectionalLight);
Transform3D t = new Transform3D();
t.setTranslation(new Vector3f(0f,-1f,0f));
TransformGroup g0 = new TransformGroup(t);
box = new Box(1.5f,0.1f,1.2f,ap0);
g0.addChild(box);
t = new Transform3D();
t.rotX(1.4);
TransformGroup objG = new TransformGroup(t);
objG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
objG.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
objRoot.addChild(objG);
SharedGroup shared = new SharedGroup();
shared.addChild(stick());
t = new Transform3D();
TransformGroup g1 = new TransformGroup(t);
g1.addChild(new Link(shared));
t = new Transform3D();
t.setTranslation(new Vector3f(0f,0f,0.5f));
TransformGroup g2 = new TransformGroup(t);
g2.addChild(new Link(shared));
t = new Transform3D();
t.setTranslation(new Vector3f(0f,0f,-0.5f));
TransformGroup g3 = new TransformGroup(t);
Transform3D tC = new Transform3D();
TransformGroup gC = new TransformGroup();
gC.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
aPos3 = new Alpha(0, Alpha.INCREASING_ENABLE, 0, 0,1000, 0, 0, 0,0, 0);
p3 = new PositionPathInterpolator(aPos3, gC, tC, knot, pos3);
p3.setSchedulingBounds(bounds);
p3.setEnable(false);
gC.addChild(p3);
gC.addChild(new Link(shared));
g3.addChild(gC);
t = new Transform3D();
t.setTranslation(new Vector3f(-0.25f,0f,0.25f));
Transform3D temp = new Transform3D();
temp.rotY(1.57);
t.mul(temp);
TransformGroup g4 = new TransformGroup(t);
g4.addChild(new Link(shared));
t = new Transform3D();
t.setTranslation(new Vector3f(-0.25f,0f,-0.25f));
temp = new Transform3D();
temp.rotY(1.57);
t.mul(temp);
TransformGroup g5 = new TransformGroup(t);
Transform3D tA = new Transform3D();
tA.rotX(-1.57);
TransformGroup gA = new TransformGroup();
gA.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
aRot5 = new Alpha(0, Alpha.INCREASING_ENABLE, 0, 0,1000, 0, 0, 0,0, 0);
r5 = new RotationInterpolator(aRot5, gA, tA, 0f, 1.57f);
r5.setSchedulingBounds(bounds);
r5.setEnable(false);
gA.addChild(r5);
gA.addChild(new Link(shared));
Transform3D tB = new Transform3D();
TransformGroup gB = new TransformGroup();
gB.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
aPos5 = new Alpha(0, Alpha.INCREASING_ENABLE, 0, 0,1000, 0, 0, 0,0, 0);
p5 = new PositionPathInterpolator(aPos5, gB, tB, knot, pos);
p5.setSchedulingBounds(bounds);
p5.setEnable(false);
gB.addChild(p5);
gB.addChild(gA);
g5.addChild(gB);
t = new Transform3D();
t.setTranslation(new Vector3f(0.25f,0f,-0.25f));
temp = new Transform3D();
temp.rotY(1.57);
t.mul(temp);
TransformGroup g6 = new TransformGroup(t);
tA = new Transform3D();
tA.rotX(-1.57);
gA = new TransformGroup();
gA.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
aRot6 = new Alpha(0, Alpha.INCREASING_ENABLE, 0, 0,1000, 0, 0, 0,0, 0);
r6 = new RotationInterpolator(aRot6, gA, tA, 0f, 1.57f);
r6.setSchedulingBounds(bounds);
r6.setEnable(false);
gA.addChild(r6);
gA.addChild(new Link(shared));
tB = new Transform3D();
gB = new TransformGroup();
gB.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
aPos6 = new Alpha(0, Alpha.INCREASING_ENABLE, 0, 0,1000, 0, 0, 0,0, 0);
p6 = new PositionPathInterpolator(aPos6, gB, tB, knot, pos);
p6.setSchedulingBounds(bounds);
p6.setEnable(false);
gB.addChild(p6);
gB.addChild(gA);
g6.addChild(gB);
t = new Transform3D();
t.setTranslation(new Vector3f(0.25f,0f,0.25f));
temp = new Transform3D();
temp.rotY(1.57);
t.mul(temp);
TransformGroup g7 = new TransformGroup(t);
g7.addChild(new Link(shared));
t = new Transform3D();
t.setTranslation(new Vector3f(0f,0f,1.0f));
TransformGroup g8 = new TransformGroup(t);
tC = new Transform3D();
gC = new TransformGroup();
gC.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
aPos8 = new Alpha(0, Alpha.INCREASING_ENABLE, 0, 0,1000, 0, 0, 0,0, 0);
p8 = new PositionPathInterpolator(aPos8, gC, tC, knot, pos5);
p8.setSchedulingBounds(bounds);
p8.setEnable(false);
gC.addChild(p8);
gC.addChild(new Link(shared));
g8.addChild(gC);
t = new Transform3D();
t.setTranslation(new Vector3f(-0.25f,0f, 0.75f));
temp = new Transform3D();
temp.rotY(1.57);
t.mul(temp);
TransformGroup g9 = new TransformGroup(t);
tA = new Transform3D();
tA.rotX(-1.57);
gA = new TransformGroup();
gA.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
aRot9 = new Alpha(0, Alpha.INCREASING_ENABLE, 0, 0,1000, 0, 0, 0,0, 0);
r9 = new RotationInterpolator(aRot9, gA, tA, 0f, 1.57f);
r9.setSchedulingBounds(bounds);
r9.setEnable(false);
gA.addChild(r9);
gA.addChild(new Link(shared));
tB = new Transform3D();
gB = new TransformGroup();
gB.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
aPos9 = new Alpha(0, Alpha.INCREASING_ENABLE, 0, 0,1000, 0, 0, 0,0, 0);
p9 = new PositionPathInterpolator(aPos9, gB, tB, knot, pos2);
p9.setSchedulingBounds(bounds);
p9.setEnable(false);
gB.addChild(p9);
gB.addChild(gA);
g9.addChild(gB);
没有合适的资源?快使用搜索试试~ 我知道了~
Java 3D交互式三维图形编程及源码
共77个文件
java:76个
pdf:1个
需积分: 14 21 下载量 60 浏览量
2014-11-07
14:19:45
上传
评论
收藏 7.96MB RAR 举报
温馨提示
Java 3D交互式三维图形编程 pdf的书,我找到的最清晰的了 还有附带的源码,本书基于j3d 1.1.2的,但是里面的概念具有参考价值,例子用最新的1.5.2 需要做稍许修改就可以运行了。最新的1.6版本 已经发布到预览11 了,它和gogl项目在一起维护着,jogl更适合游戏(包括android),如果读者刚入门最好建立起一整套概念,然后便可从基本功出发更加渗入的学习。
资源推荐
资源详情
资源评论
收起资源包目录
Java 3D交互式三维图形编程及源码.rar (77个子文件)
Java 3D交互式三维图形编程.pdf 8.02MB
Java 3D交互式三维图形编程-源码
05
mySwitch.java 3KB
Tra.java 2KB
Rot.java 2KB
Posrotpath.java 3KB
Pos.java 2KB
Rot2.java 3KB
Sca.java 3KB
quadShape2b.java 1KB
Color.java 3KB
Pospath.java 3KB
myShape.java 1KB
Scale.java 2KB
07
myText3D.java 3KB
Ambient.java 2KB
fog.java 2KB
Text3D2D.java 3KB
threeSound.java 6KB
myPointLight.java 4KB
Graph.java 5KB
06
mySwitch.java 3KB
clone.java 3KB
sixCube.java 3KB
Decal.java 4KB
switchBehavior.java 1KB
myShared.java 5KB
10
myBehavior.java 1KB
ChangeRGB.java 2KB
MyPick.java 988B
Delay.java 4KB
myInterpolator.java 675B
myCollision.java 4KB
delayBehavior.java 1KB
collisionBehavior.java 1KB
11
jump.java 11KB
myStick.java 11KB
ColorText.java 4KB
04
vrmlLoad.java 561B
NewCone.java 2KB
objLoad.java 902B
Vrml.java 2KB
Obj1.java 2KB
01
09
keyNavigator.java 2KB
splineMove.java 7KB
myBillborad.java 5KB
myLOD.java 3KB
pick.java 6KB
pickGraph.java 5KB
02
SimpleCone.java 2KB
SimpleCone1.java 2KB
08
ItemChange.java 5KB
MyAction.java 3KB
ScaleChange.java 2KB
MenuChange.java 5KB
03
quadShape2.java 1KB
lineShape2.java 1KB
quadShape1.java 869B
lineShape5.java 2KB
lineShape3.java 1KB
Mouse1.java 2KB
triShape7.java 2KB
triShape3.java 2KB
Point5.java 2KB
lineShape1.java 1004B
Point1.java 1KB
triShape6.java 2KB
Line1.java 1KB
pointShape.java 1KB
Point3.java 2KB
triShape1.java 947B
Point4.java 1KB
Point2.java 2KB
triShape5.java 2KB
lineShape4.java 1KB
triShape4.java 2KB
triShape2.java 1KB
Point6.java 2KB
共 77 条
- 1
资源评论
wsc830719
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功