java 3d对象的位置

时间:2013-06-07 11:35:24

标签: java position java-3d

我对java 3d引擎中的对象定位没什么问题。 我试图根据物体的中心将我的三维模型放在坐标中心。这意味着,对象的中心位于对象的底部,但不在其高度的中间,就像在java3d中一样。 这是java3d如何做到的:...
我没有声望10 ...我只能发布2个网址...所以有网址horizont view 那就是我需要的:...... object placed in 0,0,0 by the center of it's base

我该怎么做?

我使用此代码:

 TransformGroup tg = this.olib.get_model(model); // Taking my model from lib
 Transform3D transform = new Transform3D();
//p.x =0; p.y=0; p.z=0; (center)
 Vector3d vector = new Vector3d(p.x, p.y, p.z); // p is a class x,y,z,yAxis(rotation), scale
 transform.setScale(p.scale);
 Transform3D rotate1 = new Transform3D();
 rotate1.rotY(p.yAxis);
 transform.mul(rotate1);
 transform.setTranslation(vector);
 tg.setTransform(transform);
 objRoot.addChild(tg);

1 个答案:

答案 0 :(得分:0)

我的问题是装载程序不正确。 这就是我将对象加载到3d场景的方式:

TransformGroup obj = new TransformGroup();
Scene s = null;
ObjectFile f = new ObjectFile ();
f.setFlags (ObjectFile.RESIZE | ObjectFile.TRIANGULATE | ObjectFile.STRIPIFY);
try{ s = f.load (obj_path+model+"\\"+model+".obj"); }catch(Exception ex) { ex.printStackTrace(); }
obj.addChild(s.getSceneGroup());
obj.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

问题在于那一行:

f.setFlags (ObjectFile.RESIZE | ObjectFile.TRIANGULATE | ObjectFile.STRIPIFY);

Flag ObjectFile.RESIZE表示从文件中加载的对象位于其坐标中心的高度中间,并将对象的大小从原始位置减小或增大到范围x:[ - 1,1]; Y:[ - 1,1]。 Z:[ - 1,1]

但是没有办法知道对象的当前大小,比如宽度或高度......好吧,或者我在google中找不到。