package Obj;
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import javax.media.j3d.Alpha;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.RotationInterpolator;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class Obj1 extends Applet {
public BranchGroup createScenceGroup() {
BranchGroup branchGroup = new BranchGroup();
TransformGroup objscale = new TransformGroup();
//改变比例的坐标系,是任何大小的obj形体都以0.8倍的比例显示,所以不管多大的形体都可以在屏幕显示
Transform3D transform3d = new Transform3D();
transform3d.setScale(0.8);
objscale.setTransform(transform3d);
branchGroup.addChild(objscale);
BoundingSphere boSphere = new BoundingSphere(
new Point3d(0.0, 0.0, 0.0), 100);
Color3f lightColor3f = new Color3f(1.0f, 1.0f, 0.9f);
Vector3f lightDirection = new Vector3f(4.0f, -0.7f, -12f);
DirectionalLight light = new DirectionalLight(lightColor3f,
lightDirection);
light.setInfluencingBounds(boSphere);
branchGroup.addChild(light);
TransformGroup objTrans = new TransformGroup();
objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
objscale.addChild(objTrans);
BranchGroup b = new objLoad("data/castle.obj");
objTrans.addChild(b);
Transform3D yAxins = new Transform3D();
Alpha rotationAlpha = new Alpha(-1, Alpha.INCREASING_ENABLE, 0, 0,
4000, 0, 0, 0, 0, 0);
RotationInterpolator rotator = new RotationInterpolator(rotationAlpha,
objTrans, yAxins, 0.0f, (float) Math.PI * 2.0f);
rotator.setSchedulingBounds(boSphere);
objTrans.addChild(rotator);
branchGroup.compile();
return branchGroup;
}
public Obj1() {
setLayout(new BorderLayout());
GraphicsConfiguration configuration = SimpleUniverse
.getPreferredConfiguration();
Canvas3D canvas3d = null;
try {
canvas3d = new Canvas3D(configuration);
} catch (Exception e) {
System.out.println(e.getMessage());
}
add("Center", canvas3d);
BranchGroup sceGroup = createScenceGroup();
SimpleUniverse universe = new SimpleUniverse(canvas3d);
universe.getViewingPlatform().setNominalViewingTransform();
universe.addBranchGraph(sceGroup);
}
public static void main(String[] args) {
new MainFrame(new Obj1(), 400, 400);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Obj.rar_java obj
共2个文件
java:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 68 浏览量
2022-09-23
13:02:40
上传
评论
收藏 2KB RAR 举报
温馨提示
实现的是java3D调用OBJ图形文件的示例。
资源推荐
资源详情
资源评论
收起资源包目录
Obj.rar (2个子文件)
Obj
objLoad.java 938B
Obj1.java 3KB
共 2 条
- 1
资源评论
御道御小黑
- 粉丝: 58
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功