ios - 对节点组应用旋转有时会翻转节点
问题描述
我试图通过将旋转应用于每个节点来旋转场景中的一组对象。代码的旋转部分很简单:
for node in sceneView.scene.rootNode.childNodes {
node.localRotate(by: SCNVector4(0,1,0, Double.pi/180))
}
预期的结果是每次触发生成的节点都会旋转 1 度。但是,我注意到有时生成的图像会反转 y 值(例如,旋转向量在前一帧中为 -1,但下一帧突然变为 +1),导致看起来像错觉。频率看起来每隔一帧左右发生一次。我尝试了不同的轴,但同样的事情也会发生。我尝试了localRotate和Rotate,问题仍然存在。这假设会发生吗?
这是演示问题的视频链接: https ://res.cloudinary.com/df7kpyhrg/video/upload/v1616634641/RPReplay_Final1616634008_ohvg1k.mp4
解决方案
我仍然不是 100% 确定,但我认为问题是我需要使用 ar 修改的 simd 版本。我需要使用 simdRotate 而不是旋转。我相信视频中当前的翻转是天使的变化,看起来像反射。举个更清楚的例子,假设当前角度为 0,并且以 0.1 弧度为单位递增,值将是 0、-0.1、0.1、-0.2、0.2 等等。因此翻转结果是要执行的中间结果。这个堆栈溢出帖子很好地解释了 simd 和非 simd 方法之间的区别 SIMD 是什么意思?
推荐阅读
- scala - 在类型函数中使用匹配类型时证明类型相等的问题
- html - 为什么我不能只更改最后一个 h3 的字体大小
- huawei-mobile-services - 我已经成功集成了HUAWEI Location Kit。但现在得到错误权限被拒绝
- python - 在 15*8-2**x=x 中求解 x 的公式求解器未完成计算
- airflow - 使用 .net 控制台批处理应用程序进行气流编排
- javascript - Snowpack 无法从 node_modules 导入 JavaScript
- arrays - 如何将一个随机预制件限制为仅使用一次,但将一大堆预制件随机放置在其他对象之上?
- javascript - 如何解决:安装 PDF 而不是用 react-pdf 打开?
- rabbitmq - RabbitMQ:Publisher Confirm 中的奇怪行为
- java - Java LinkedList实现插入方法第0次索引插入处理