Unity transform.position始终为(0,0,0)对象形成obj导入

时间:2017-11-22 22:24:06

标签: unity3d

我最近一直在使用导入的obj文件。

导入编辑器时,所有对象看起来都在正确的位置,但位置为(0,0,0)。

每当我遍历对象并将transform.position写入文件时,每个对象都被设置为(0,0,0)。

只是为了检查我使用了返回相同结果的父对象transformPosition。

任何想法都会受到赞赏。

感谢。

编辑:刚被问到。问题在于他们不应该为所有事情返回0,他们遍布全世界。

rangeObjs = GameObject.Find("firing_range").GetComponentsInChildren<MeshFilter>();
for(int i = 0; i < rangeObjs.Length; i++){
    Debug.Log(rangeObjs[i].transform.position.ToString());
}

2 个答案:

答案 0 :(得分:1)

好的,似乎您的模型枢轴转换为根变换的中心。

这是你的模型有错误的枢轴或这是团结中的错误,将每个枢轴转换为根(0,0,0)

请在blender等其他3d建模软件中打开你的obj,看看枢轴是否处于零位。

请在3D建模软件中修复枢轴。

如果没有,那么您可以尝试将其导出为不同的格式,例如FBX(推荐)并尝试将其导回到统一。

但是,如果你想要这个棘手的方式。 您可以使MeshFilter GameObject成为具有正确枢轴位置的某个父级的子级,您可以使空GameObject为此创建新的轴。

修改

同时检查统一编辑器,选择包含MeshFilter的子对象,并在检查器中查看对象的位置。

不同的绑定位置并不意味着枢轴在那里,网格可能在其他地方,但它不能保证枢轴位于网格的相同位置

答案 1 :(得分:0)

您是否尝试过检查对象的 localPosition ? (与对象的位置相对)?

即。而不是;

foreach(Transform t in group){
  print(t.position)
}

使用;

foreach(Transform t in group){
  print(t.localPosition)
}