0

我对 java 3d 引擎中的对象定位问题不大。我试图根据对象的中心将我的 3d 模型放置在坐标中心。这意味着,对象的中心位于对象的底部,而不是在其高度的中间,就像在 java3d 中所做的那样。以下是 java3d 的做法:...
我没有声誉 10...我只能发布 2 个 url...所以有 url水平视图 我需要的是:...
对象放置在 0 中, 0,0 由它的基地的中心

我怎样才能做到这一点?

我使用这段代码:

 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);
4

1 回答 1

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);

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

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

于 2013-06-17T07:13:20.147 回答