我正试图创建这个由较小的3D对象合并而成的3D瓦片系统世界--为了创建这些,我们使用另一个在Unity中制作的应用程序,它单独加载所有小的3D资产,并可能用于创建你的新模型。保存这些模型文件后,会创建一个JSON文件,其中包含所有使用的3D模型的所有比例、位置、旋转等。
我们决定使用这个 "北、东、南、西 "的系统,以确保在生产中一切都会看起来很好。然而现在当我们试图在ThreeJS中渲染这些相同的JSON文件时,我们注意到与我们使用的Unity应用程序相比,X轴是反向的。
我们想要的是这样的。
目前的情况是这样的 错的 在ThreeJS。
我们已经尝试过的是这样的。
但是以上的方法都没有达到预期的效果。当涉及到小于或大于1x1x1尺寸的缩放、旋转对象时,用代码反转坐标会带来其他问题。理想的情况是,我们不必改变坐标,而且仍然可以通过改变X轴的方向,从左侧到右侧的0,0,0来作为实体参考。
目前ThreeJS使用的是 "右手坐标系",而我们希望的是左手坐标系。这是否可以在ThreeJS中进行配置?
除了翻转所有的X坐标,有谁知道我可以尝试什么?
这不是你可以在three.js或Unity中配置的东西。不同的文件格式通常有一个内置的名义坐标系统。例如,GLTF,是用一个 右手坐标系. 格式导入器和导出器有责任处理转换--这就是内置的three.js导入器的工作。
我建议使用现有的格式,比如GLTF来表示你的场景(有一个现有的 Unity出口商 和一个导入器可用于three.js)。)
或者如果你想保留对自己文件格式的控制,你可以在从Unity导出时自己进行左手到右手坐标系的转换。或 导入到three.js中。从你的图片来看,似乎你要将所有的X值都用 -1.0
以使它们看起来一样。你会希望将旋转保存为四元数,以避免旋转顺序的差异。
当然,您也可以通过以下方式来调整整个场景的比例 -1.0
但这可能会使其难以与three.js的其他部分配合使用。