java 字符串=后出现3d_我的java3d学习(一)——显示obj模型

packagecom.zzl.j3d.viewer;importjava.applet.Applet;importjava.awt.BorderLayout;importjava.awt.GraphicsConfiguration;importjava.net.URL;importjavax.media.j3d.Appearance;importjavax.media.j3d.BoundingSphere;importjavax.media.j3d.BranchGroup;importjavax.media.j3d.Canvas3D;importjavax.media.j3d.Group;importjavax.media.j3d.Texture;importjavax.media.j3d.TextureAttributes;importjavax.media.j3d.Transform3D;importjavax.media.j3d.TransformGroup;importjavax.vecmath.Point3d;importjavax.vecmath.Vector3d;importjavax.vecmath.Vector3f;importcom.sun.j3d.loaders.Scene;importcom.sun.j3d.utils.applet.MainFrame;importcom.sun.j3d.utils.behaviors.vp.OrbitBehavior;importcom.sun.j3d.utils.geometry.Box;importcom.sun.j3d.utils.geometry.Primitive;importcom.sun.j3d.utils.image.TextureLoader;importcom.sun.j3d.utils.universe.SimpleUniverse;importcom.sun.j3d.utils.universe.ViewingPlatform;importcom.zzl.j3d.loader.J3DLoader;publicclassMainextendsApplet{privateSimpleUniverse universe ;privateCanvas3D canvas;privateBoundingSphere bounds=newBoundingSphere(newPoint3d(0.0,0.0,0.0),1000.0);

TransformGroup objTransG=null;publicvoidMain()

{}publicvoidsetupView()

{/**Add some view related things to view branch side of scene graph*///add mouse interaction to the ViewingPlatformOrbitBehavior orbit=newOrbitBehavior(canvas, OrbitBehavior.REVERSE_ALL|OrbitBehavior.STOP_ZOOM);

orbit.setSchedulingBounds(bounds);

ViewingPlatform viewingPlatform=universe.getViewingPlatform();//This will move the ViewPlatform back a bit so the//objects in the scene can be viewed.viewingPlatform.setNominalViewingTransform();

viewingPlatform.setViewPlatformBehavior(orbit);

}publicvoidinit()

{

setLayout(newBorderLayout());

GraphicsConfiguration gc=SimpleUniverse.getPreferredConfiguration();

canvas=newCanvas3D(gc);

add("Center",canvas);//Create a simple scene and attach it to the virtual universeuniverse=newSimpleUniverse(canvas);//定义观察点,可用鼠标进行缩放、旋转setupView();

J3DLoader loader=newJ3DLoader();//定义场景的根结点BranchGroup objRoot=newBranchGroup();//载入人物模型Scene scene=loader.loadObj("Liit.obj");//定义载入位置Transform3D pos1=newTransform3D();

pos1.setTranslation(newVector3f(0f,0.0f,0f));//因为此处所采用的模型载入时是平行于y=0面的,所以要绕x轴旋转90度pos1.rotX(-1.57);

objTransG=newTransformGroup();

objTransG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

objTransG.setTransform(pos1);

objTransG.addChild(scene.getSceneGroup());

objRoot.addChild(objTransG);//载入纹理URL texImage=loader.loadTexture("resource/flooring.jpg");//画了一个大矩形,作为地板Group group=this.createSceneBackGround(texImage);

objRoot.addChild(group);

universe.addBranchGraph(objRoot);

}publicvoiddestroy()

{

universe.removeAllLocales();

}/***@paramargs*/publicstaticvoidmain(String[] args) {newMainFrame(newMain(),256,256);

}publicGroup createSceneBackGround(URL texImage)

{returncreateGeometry(Texture.MULTI_LEVEL_POINT ,-1.1f, texImage);

}publicGroup createGeometry(intfilter,floaty, URL texImage)

{

Group topNode=newGroup();

Appearance appearance=newAppearance();

TextureLoader tex=newTextureLoader(texImage, TextureLoader.GENERATE_MIPMAP ,this);

Texture texture=tex.getTexture();

texture.setMinFilter(filter);

appearance.setTexture(texture);

TextureAttributes texAttr=newTextureAttributes();

texAttr.setTextureMode(TextureAttributes.MODULATE);

appearance.setTextureAttributes(texAttr);//TODO lightTransform3D pos2=newTransform3D();

pos2.setTranslation(newVector3f(0f,y,0f));

objTransG=newTransformGroup();

objTransG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

objTransG.setTransform(pos2);

Box box=newBox(6f,0.1f,8f,Primitive.GENERATE_NORMALS|Primitive.GENERATE_TEXTURE_COORDS,appearance);

objTransG.addChild(box);

topNode.addChild(objTransG);returntopNode;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JAVA 3D开发工具包(3个版本),java3d-1_3、java3d-1_4、java3d-1_5,加一个例子。例子代码如下: 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.RotationInterpolator; import javax.media.j3d.Transform3D; import javax.media.j3d.TransformGroup; import javax.swing.JApplet; import javax.vecmath.Point3d; import com.sun.j3d.utils.geometry.ColorCube; import com.sun.j3d.utils.universe.SimpleUniverse; import com.sun.j3d.utils.universe.ViewingPlatform; public class HelloUniverse extends JApplet { public BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup(); //新建一个变形组结点,初始化它 //变形组结点指定一个单一的空间变形,通过一个Transform3D对象, //能对它的子结点定位,定向,定尺寸 TransformGroup objTrans = new TransformGroup(); //指定结点可以写入它的对象的变形信息。这样我们的行为代码就能在运行进修改它。 objTrans.setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE); //根节结中加入这个变形组结点 objRoot.addChild(objTrans); //新建一个例子Shape3D结点,并把它加入到场景图表中 objTrans.addChild(new ColorCube(0.4)); Transform3D yAxis = new Transform3D(); /* * 提供转换一个时间值到一个0到1之间的alpha值的方法 * 第一个参数loopCount:运行循环次数,-1表示无限循环 * 第二个参数increasingAlphaDuration:alpha值从0到1的时间周期 */ Alpha rotationAlpha = new Alpha(-1, 4000); //新建旋转者,它将执行变形操作 RotationInterpolator rotator = new RotationInterpolator( rotationAlpha, objTrans, yAxis, 0.0f, (float) Math.PI*2.0f); //用一个中心点和半径定义一个球状范围区域。 BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0); //设置旋转者的运行范围 rotator.setSchedulingBounds(bounds); //加它到根结点 objRoot.addChild(rotator); //执行优化 objRoot.compile(); return objRoot;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值