簡體   English   中英

Java 3D對象位置

[英]java 3d object position

我在Java 3D引擎中的對象定位幾乎沒有問題。 我試圖根據對象的中心將3d模型放置在坐標中心。 這就是說,對象的中心位於對象的底部,而不是像Java3d那樣位於其高度的中間。 這是java3d的工作方式:...
我沒有10的聲譽...我只能發布2個網址...所以這里有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);

我的問題出在錯誤的加載器中。 這就是我將對象加載到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]。

但是沒有辦法知道對象的當前大小,例如寬度或高度...好吧,或者我在Google中找不到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM