繁体   English   中英

3D(iOS SceneKit),切换相机和其他对象的变换

[英]3D (iOS SceneKit), switch transforms of camera and another object

我有一个带有照相机和另一个对象的场景:3D角色模型。

使用姿势估计算法中的方向信息(用于翻译的vec3和用于旋转的vec4四元数),对我的相机的变换进行平移和旋转以聚焦于此字符,该字符处于(0,0,0)且旋转0 这可以正确正确地工作,但是我想“反转”这些值,以便使用输入影响角色对象,而将摄影机放置在0、0、0且旋转0的位置。

我觉得我应该围绕原点旋转提供的摄影机转换矩阵以创建myObjectTransform ,然后将摄影机值清零,然后简单地将myObjectTransform用作角色对象的转换。 但是,如果执行此操作,我的输入平移和旋转值将不会像我希望的那样影响场景-旋转似乎朝错误的方向前进,甚至平移位置也似乎不正确。

听起来应该很容易,但是我显然缺少了一些东西。 有人可以帮忙吗?

我使用SCNMatrix4Invert解决了这个问题-相机矩阵的逆正是我想要的。 但是,我忘记了在最初给定的平移和旋转方向上施加了180度的额外X旋转。

因此,尽管看起来有些凌乱,但我的过程是:

  1. 创建一个SCNMatrix4,并从姿势估计输入中设置其位置和旋转
  2. 将矩阵在X轴上旋转180度(我的自定义步骤)
  3. 反转矩阵
  4. 我也可以任意缩放角色对象,因此请注意其缩放向量。
  5. 将矩阵作为角色对象的SCNNode的“ transform”属性应用
  6. 设置在#4中获得的SCNNode的比例。 我有很多方法可以做到这一点,例如将相同的比例尺应用于SCNMatrix4-可能会更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM