问题标签 [scncamera]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
854 浏览

ios - 在 SceneKit 中更改“视野”

我有一些带有透视投影的相机和(0,0,0)中的对象。我根据这个相机计算了这个对象的“边界框”(屏幕上的像素大小)并缩放它以适应屏幕大小。现在它在屏幕中间。

scnView 的框架等于屏幕大小,并且我在此视图上方有一些 UI 组件(例如导航栏和视图底部的一些大透明视图)。scnView 有一些全屏背景,这个对象可以缩放/移动/......因此我需要 scnview 全屏。

那样的

然后我将这个对象移动到“透明区域”(没有 UIComponents 的区域)的中间,并看到这个对象的底部(好像它在我的上方),因为我的投影是透视的。

我想把这个物体移动到清晰区域的中心,让它看起来像在我面前,没有任何扭曲。我怎样才能做到这一点?

在此处输入图像描述

我看到了 2 个解决方案。1)在纹理中将我的对象绘制到屏幕外,然后在屏幕上所需位置绘制此纹理。2)创建 scnView 高一点。例如将帧大小设置为 = (0, (bottomHeight - topHeight) / 2, width, height + (bottomHeight - topHeight) / 2) 以将 scnView 的中心移动到所需位置。

但是我不喜欢第一个解决方案,因为添加了绘制调用,而第二个解决方案甚至听起来很糟糕。

PS对不起那张照片

更新:基本上我想使用透视投影并像 SceneKit 中的 2D 图像一样移动 3D 对象。

0 投票
0 回答
781 浏览

ios - Swift、SceneKit 和相机位置

我正在开发一个显示 3D 人体的应用程序 - 在 SceneKit 编辑器中,我已将相机设置为指向模型。

正如我设置的sceneView.allowsCameraControl = true,用户可以通过简单的手势在对象周围移动、放大和缩小。

为了垂直移动,我实现了一个 UISlider - 我不希望用户用两个手指手势垂直平移。

在滑块操作中,我执行以下操作:

当我在加载 ViewController 后更改滑块位置时,这可以正常工作。但是一旦我通过手势旋转或缩放模型,滑块就不再显示效果 - 因此我不能再以编程方式更改相机节点的位置。

有谁知道我该如何解决这个问题?

0 投票
2 回答
487 浏览

swift - iOS – ARKit 节点在 100m 后消失

我目前正在开发 ARKit (SpriteKit) 应用程序。我注意到如果我在100m 处放置一个节点,该节点会显示得很好,但如果我将其设置为101m 或更远,它将不会显示。

这是距离限制吗?

有没有办法增加这个范围?

0 投票
1 回答
943 浏览

ios - SCNCamera 以编程方式制作的位置不正确

我正在尝试以编程方式为我的MainScene.scn文件创建一个相机。

我需要在代码中创建相机,因为我想做一个相机轨道节点,这是我能想到的唯一方法。我也想继续使用我的场景文件。

这是我的视图控制器中的代码(简化):

可以轻松粘贴此代码以替换默认视图控制器代码。您需要做的就是添加MainScene.scn并拖动类似框的东西。

如果您尝试代码,则相机位于错误的位置。如果我对场景中的相机使用相同的属性,它可以工作,但这不是我想要的。

根据我的阅读,SceneKit 可能正在创建一个默认相机,如此此处所述。但是,正如他们在这些答案中所说的那样,我正在设置pointOfView属性,但它仍然不起作用。

如何以编程方式将相机放置在场景中的正确位置?

0 投票
1 回答
140 浏览

swift - 如何计算两点之间关于 3-D 空间中相机方向的角度

我目前面临的问题是我想计算从相机位置到目标位置的弧度角度。但是,此计算还需要考虑相机的航向。

例如,当相机背对对象时,该函数应返回 π。到目前为止,我编写的函数大部分时间都有效。但是,当用户靠近 X 和 Z 轴时,箭头不再指向目标,而是稍微指向左侧或右侧,具体取决于您处于正或负 X 和 Z 空间。

目前,我不确定为什么我的功能不起作用。我对这种行为的唯一解释是万向节锁。但是我不太确定如何使用四元数来实现相同的功能。

我还在这篇文章中附上了一些照片,让这个问题更加清晰。

这是我现在正在使用的功能:

以下图为例。右上角的箭头应该笔直向上,以沿着线指向中心对象,但它略微指向左侧。当我与 z 轴对齐时,与 x 轴对齐时会发生相同的行为。

在此处输入图像描述

0 投票
2 回答
1449 浏览

swift - ARKit – 如何显示来自放置在 SCNPlane 上的虚拟 SCNCamera 的提要?

我使用 ARKit 和 SceneKit 在 AR 空间中放置了一些对象。效果很好。现在我想添加一个额外的相机(SCNCamera),它放置在场景中的其他位置,由一个常见的 SCNNode 连接和定位。它旨在从另一个(固定)角度向我展示当前场景。

现在我想在 i.Ex 上展示这个额外的 SCNCamera 提要。一个 SCNPlane (作为第一个漫反射材质) - 就像一个电视屏幕。当然,我知道它只会显示保持在相机焦点中的 SceneKit 内容,而不是 ARKit 图像的其余部分(当然,这只能由主相机实现)。一个简单的彩色背景就可以了。

我已经看过描述如何在 ARSpace 中的虚拟显示器上播放视频文件的教程,但我需要来自我自己当前场景的实时摄像头馈送。

我定义了这个对象:

然后在 viewDidLoad 我这样做:

然后我调用我的设置函数将虚拟显示器放置在我所有的 AR 东西旁边,同时定位 cameraNode(指向对象在场景中停留的方向)

一切都编译并加载......显示显示在给定的位置,但它完全保持灰色。我放在场景中的 SCNCamera 根本没有显示任何内容。AR 场景中的其他一切都运行良好,只是我没有从该相机获得任何信息。

灰色平面而不是相机馈送

有没有人想办法让这种情况发挥作用?

为了更好地可视化,我添加了更多的打印屏幕。

下面显示了根据 ARGeo 的输入通过 SCNCamera 的图像。但它需要整个屏幕,而不是像我需要的那样在 SCNPlane 上显示其内容。

从 SCNCamera 观看

下一个打印屏幕实际上显示了我使用发布的代码获得的当前 ARView 结果。如您所见,灰色的 Display-Plane 仍然是灰色的 - 它什么也不显示。

当前的 AR 视图

最后一个打印屏幕是蒙太奇照片,显示了我想要的预期结果。

预期或期望的 AR 视图

这怎么可能实现?我在这里错过了一些基本的东西吗?

0 投票
1 回答
97 浏览

swift - 正确旋转相机以查看场景的侧面

我曾经 SceneKit像 Uber 一样使用 3d 汽车在谷歌地图中使用。我设法使用它并旋转它,但相机在顶部,一旦位置管理器标题更改以查看汽车边缘,我想旋转它。

我尝试更改欧拉角,但效果不佳。我尝试使用默认相机,但我没有找到如何将它放在顶部或左侧或右侧......我只能从 .scn 文件中更改它,但不能在代码中更改。

https://github.com/HilalAH/Uber3dModel

0 投票
1 回答
370 浏览

swift - 如何平滑更改不会动画的 SCNCamera 的 FoV?

我有一个 SCNCamera 在 iOS 上的 3D SceneKit 视图中工作。

当我改变屏幕的方向时,为了保持世界对象的大小和相对位置相同,我需要改变 SCNCamera 的 FoV。

但是,我无法为这种变化设置动画,因此当 FoV 从一种设置更改为另一种设置时,世界会“闪烁”或“脉冲”。

有没有一种方法可以平滑地做到这一点,以使 FoV 的变化不会那么突然以至于导致世界上的物体“脉动”?

当设备改变方向时,将执行以下代码:

我尝试将 FoV 更改包装在 UIView 动画块中,但这不起作用。

我尝试在线程上延迟运行它,但随着 FoV 的变化,这仍然会导致视觉“脉冲”。

有什么方法可以使这种过渡顺利进行吗?

0 投票
1 回答
711 浏览

ios - 将 SCNPlane 大小调整为特定的屏幕大小

在我的应用程序中,用户使用 Core Graphics 在屏幕上绘制了一个 2D 矩形。一旦他们释放鼠标,我需要创建一个 SCNPlane 并将其放置到我的 SceneKit 场景中,并具有相同的屏幕尺寸和位置。我计划将平面的 z 位置设置为远离相机的恒定值(假设距离相机 10 个单位)。

我遇到的问题是如何定位和缩放平面,使其看起来与他们在 Core Graphics 中绘制的完全一样。顺便说一句,Core Graphics 视图位于相同大小的 SceneKit 视图之上。

我计划使用广告牌约束,使飞机正确面对相机。

我确信使用相机的属性可以完成一些数学运算,但我不知道如何做到这一点。

0 投票
2 回答
346 浏览

ios - Swift - 什么是 SCNCamera 的定义和用途

我找不到一个很好的解释 aSCNCamera是什么以及它的目的。这是苹果的定义

一组相机属性,可以附加到节点以提供用于显示场景的视点。

这个定义不清楚,因为我设置了场景并添加了 aSCNNode而没有附加 a SCNCamera。设备摄像头的视角显示SCNNode我将其放置在的位置没有问题,并且场景显示良好。

设备的相机和相机有什么区别SCNCamera

SCNCamera将 a 附加到 aSCNNode与不使用a 有什么好处?

如果我有多个SCNNodes(彼此之间都没有层次结构)每个节点都需要它自己的SCNCamera吗?

如果我SCNNodes在一个hierarchy(带有子节点的父节点)中有多个节点,每个节点都需要它自己的SCNCamera还是只需要父节点?