【问题标题】:How do I add a 2D view inside a 3D SCNNode in Scene Kit如何在 Scene Kit 中的 3D SCNNode 内添加 2D 视图
【发布时间】:2015-03-01 23:05:18
【问题描述】:

我正在尝试在跟随它的 3D 视图上方添加一种“通知”,如果相机旋转或 SCNNode 旋转该视图始终保持向前看,那么进行计算和制作平面是“昂贵的” 3D 并在每次父母旋转或相机旋转时旋转它,我不想在 3D xyz 之后的所有内容上添加 UIView,因为我希望它与 3D 世界深度排序进行交互。

这是我想要实现的示例:

这是一个不随其父母旋转的视图,我该如何实现它?

提前谢谢你!

【问题讨论】:

  • 所以基本上你将横幅旋转到其父级的相反方向(始终面向相机),完成。为什么会太贵?
  • @LearnCocos2D 这是一款涉及大量节点的游戏,为了旋转横幅会发生很多事情,而且您无需旋转相机,因此会有很多计算.
  • 您可以使用着色器修改器来做到这一点,如果您在视图空间(相机的坐标系)中工作,一切都会变得简单。您可以在网络上查找“广告牌着色器”。
  • 这是一个游戏,会有很多计算。不要因为害怕它可能会很慢而不做某事。让它发挥作用,当您发现性能问题时,您就可以进行分析和优化。
  • 另外,我敢打赌,如果你有大量的节点,旋转计算可能根本没有贡献,大多数游戏完全受 gpu 限制,即绘制 3d 模型比绘制 3d 模型需要更多时间一些微不足道的偏移计算。

标签: ios objective-c 3d scenekit scnnode


【解决方案1】:

我找到了一种方法,真的很简单:

SCNLookAtConstraint *constraint = [SCNLookAtConstraint lookAtConstraintWithTarget:cameraNode];
constraint.gimbalLockEnabled = YES;
nodeA.constraints = @[constraint];

这将使 nodeA 始终看着相机,我设置了 gimbalLockEnabled = YES 使其不会奇怪地旋转。

希望它对那里的人有所帮助,它拯救了我的游戏:-)

【讨论】:

  • SCNLookAtConstraint 的创意使用很好!
  • 看起来像是面向而不是向前:(
猜你喜欢
  • 2012-08-14
  • 1970-01-01
  • 2015-03-04
  • 2015-09-20
  • 1970-01-01
  • 2015-07-31
  • 2019-05-19
  • 2018-01-06
  • 2015-10-08
相关资源
最近更新 更多