gpt4 book ai didi

ios - 如何定位一个SCNNode来覆盖整个SCNView?

转载 作者:行者123 更新时间:2023-11-30 12:58:08 25 4
gpt4 key购买 nike

我对 SceneKit 非常陌生,非常感谢您的帮助!
我的 UIView 中有一个 200x200 大小的 SCNView,它位于 super View 的中心。我想在里面放一个SCNCylinder,这样SCNCylinder就覆盖了整个SCNView。我读到,Scenekit 的所有这些 View 都是以米为单位定义的,那么我如何在屏幕尺寸和屏幕尺寸之间建立关系呢?SNC气缸。

我尝试过:

var coinNode = SCNNode()
let coinGeometry = SCNCylinder(radius: 100, height: 2)
coinNode = SCNNode(geometry: coinGeometry)
coinNode.position = SCNVector3Make(0, 0, 0)
coinScene.rootNode.addChildNode(coinNode)

let rotate90AboutZ = SCNAction.rotateByX(-CGFloat(M_PI_2), y: 0.0, z: CGFloat(M_PI_2), duration: 0.0)
coinNode.runAction(rotate90AboutZ)
ibOutletScene.scene = coinScene

但这在我的 coinScene 和 ibOutletScene 之间留下了余量。如何删除这个空格?

我还尝试添加相机:

let cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
cameraNode.position = SCNVector3Make(0, 0, 100)
coinScene.rootNode.addChildNode(cameraNode)

但是我看到了随机行为,并且 coinNode 被隐藏了!我应该如何放置相机?或者有没有其他方法可以从我的 ibOutletScene 中删除多余的空间?

编辑:这是如果我不添加相机的话它的样子。红色场景和绿色硬币之间有一个边距。我尝试了多种尺寸的硬币,但除非添加相机,否则我无法删除此边距。但是,如果我添加相机,我会遇到另一个问题,如下截图所示。 Red color is the scene and green coin, how can I remove the margin between the two

如果我不添加相机,硬币上的旋转动画效果很好,但如果我添加相机,旋转会放大,然后随着动画再次变小。如何在不增加尺寸的情况下绕其轴旋转它?我正在使用以下代码来旋转硬币:相同的代码在没有相机的情况下工作正常,但在添加相机后放大了硬币。查看快照。

let rotate = SCNAction.rotateByX(0, y: -2 * CGFloat(M_PI_2), z: 0,    duration: 2)
coinNode.runAction(rotate)

enter image description here

最佳答案

随机行为可能是由第一个代码片段中的最后一行引起的。您正在启动动画,然后将场景添加到 View 中。

相反,构建场景,将其附加到 View ,然后开始动画。为操作设置非零持续时间将为您提供更令人愉悦的过渡。

至于多余的空间,您把截图贴出来有助于我们理解。但你必须做一些三角学。

您似乎有一个场景想要用硬币挡住,然后硬币会旋转开?用真实的物体来模拟你自己。把你的眼睛放在 table 的边缘。将一枚硬币放在距离眼睛较远的地方。硬币必须距离多远才能挡住 table 上较远的特定物体?

在SceneKit中,可以查询SCNCamera的视野范围。你知道你的硬币有多大,也知道风景有多大。计算硬币的投影直径与视野宽度相等所需的距相机的距离。把硬币放在那里。

关于ios - 如何定位一个SCNNode来覆盖整个SCNView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40177574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com