问题标签 [arscnview]

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 投票
1 回答
174 浏览

ios - 使用 ARSCNPlaneGeometry 获得 SCNPhysicsShape 会生成球体形状而不是平面

在使用 的应用程序中ARKit,我使用ARSCNPlaneGeometryupdate方法SCNGeometryARPlaneGeometry. 我SCNPhysicsShape从该几何中获得 a 以用作SCNPhysicsBody平面节点:

我遇到的问题是,即使显示的平面节点是平面,生成的物理形状也不是平面,而是粗糙球体。我知道这一点是因为我使用的是场景视图调试选项.showPhysicsShapes

我还在使用 的renderer(_:didUpdate:for:)方法不断更新几何和物理形状,ARSCNViewDelegate并且形状保持不变。

以前有人遇到过这个问题吗?

0 投票
1 回答
208 浏览

ios - 当我回到包含 ARSCNView 的视图控制器时,相机冻结。如何在没有 ARSCNView 停止工作的情况下在这个视图控制器中来来去去?

我如何初始化 ARSCNView

当关闭此视图控制器并尝试重新启动会话时,相机停止出现。有人知道如何帮助我吗?谢谢

0 投票
1 回答
117 浏览

swift - 获取在 scn 文件中创建的球体的位置

我使用 Xcode 创建了一个 scn 文件(如下所示),其中有两个节点(一个球体和一个平台)。我设置了球体的位置:

显示球体的 SCN 编辑器窗口 球体位置读数 0.074 0.391 0.392

我使用了一个创建节点平台的类,您可以调整它的大小和移动它:

截屏

按下按钮后,它会放置我的 scn 文件而不是那个平台(具有相同的比例、位置和方向)问题是我不知道如何从场景视图中获取球体的位置。

使用该代码,它总是打印我在 scn 文件中设置的位置(如上所示),但我想要它在视图中的真实位置。

截屏

0 投票
1 回答
186 浏览

ios - 根据 SCNView 大小或手机屏幕大小缩小 SCNNode

我有一个很大的 SCNNode,我想按比例缩小它。目前节点是根据幻数缩小的。但是,节点应根据手机的屏幕尺寸或节点的 SCNView 尺寸缩小。

为了让事情变得更容易,我想为节点的 SCNView/电话屏幕设置一定的填充。

因此,给定一个 SCNNode 和手机屏幕/SCNView 中的一定量的填充,我希望您计算 SCNNode 的比例因子。

有关视觉解释,请参见附图。你能帮我计算比例因子吗?

视觉解释

0 投票
1 回答
91 浏览

ios - 多层scn文件需要时间来渲染arkit

当用户点击屏幕时使用 ARKit 2 放置 .scn 文件时,单层模型会立即在屏幕上渲染,但是当多层(2 到 3 层).scn 文件需要大约 1 到 3 秒来渲染时,就会出现问题,有点卡住 UI 而渲染?一旦 ARConfiguration 会话被重置,它就适用于所有模型。我已经在苹果提供的用于处理交互应用程序的演示中检查了这些模型,并且它们也发生了同样的情况。谁能帮我解决为什么多层对象第一次没有立即渲染?

0 投票
1 回答
78 浏览

ios - 从 ARWorldTrackingConfiguration 获取当前帧作为 uiimage?

我需要在配置 ARWorldTrackingConfiguration 时提取物理相机看到的帧(未添加 SCNScene)。我是 ios 新手,所以也许我遗漏了一些东西,但我无法做到这一点。任何有关如何执行此操作的帮助表示赞赏。

我尝试使用提取

其中 sceneView 是我的 ARSCNView,我认为它会给我 YCbCr 中的图像

然后我尝试使用转换为 RGB

但是在调用 pixelBufferToUIImage() 后得到 nil 错误

0 投票
0 回答
532 浏览

ios - iOS ARKit 应用程序:如何在不旋转内部相机视图的情况下旋转 UI(屏幕)?

我正在尝试使用 ARKit 制作一个具有一些 AR 体验的 iOS 应用程序。该应用程序现在有一个带有“开始”按钮的启动视图(在应用程序刚刚启动后首先显示)和一个 AR 视图(在我点击启动视图中的“开始”按钮后显示),并且我也有每个视图控制器。AR 视图本质上是一个全屏 ARSCNView,它显示来自相机的实时图像,以及一些 UIButton。

在我想在每个阶段指定方向之前,所有的事情似乎都运作良好。需要将启动视图设置为纵向,AR 视图设置为横向。为了自动更改屏幕的方向,我尝试viewDidLoad()为 AR ViewController 添加以下代码:

并设置

但是,效果并不好 --- 虽然 UI 的方向已正确更改,但相机预览也“旋转”了 90 度(因此您从应用中看到的所有图像都将旋转 90 度):

image1 (设备现在物理上是纵向的,相机视图在某种程度上是垂直的)

image2 (设备现在物理上是横向的,但相机视图仍然是垂直的)

我还尝试了另一种方法:

但它最终以同样的方式结束。

我希望它如下所示,用户界面固定为横向,但相机始终处于正常方向(重力向下):

image3 (这是在允许自动旋转的情况下捕获的,但我希望它在切换到此视图时自动旋转!)

任何帮助或提示将不胜感激!

0 投票
0 回答
1123 浏览

swift - 方法 renderer(_:didAdd node:, for anchor:) 未调用

我尝试在我的 AR 体验中实现平面检测。我有一个ARSCNView带有ARSCNViewDelegate扩展名的子类。

我的cameraDidChangeTrackingState委托方法被调用。但是,我从来没有见过我的renderer(_:didAdd node:, for anchor:)方法被调用。任何想法?

编辑:我可以找到 ARPlaneAnchors session(_ session: ARSession, didAdd anchors: [ARAnchor]),但我不确定是否应该使用这个,因为在大多数(也是苹果)示例中,它们会将对象添加到锚节点,如我上面的代码所示。还是我必须自己触发那个 didAdd node:, for anchor方法?

0 投票
0 回答
101 浏览

swift - 如何从 .scn 计算 ARSCNView 区域的 SCNNode 的变换和位置

我不明白如何使用 Vision 对象计算 ARSCNView 上的 SCNNode 位置。我在 ARSCNView 中检测到人脸 (VNFaceObservation),从 .scn 文件加载节点。我希望那个节点随着面部位置移动。

我用方法计算人脸边界框的二维位置:

并将 UIView 显示为带有返回矩形的场景视图子视图。它与面部位置相匹配。

从文件加载节点后,将节点添加到场景。

我尝试在场景会话委托的方法中计算节点的新位置:

但我不明白我应该如何修改 SCNNode 位置并创建新的 SCNVector3。我认为,当设备移动或检测到人脸移动时,我应该使用 sceneView.pointOfView?.simdWorld* 属性来计算偏移量。但我不确定这是真的方式

这个计算的任何想法或算法?

0 投票
1 回答
235 浏览

swift - ARSCNView 角半径未显示

我的圆角半径ARSCNView如下;

但是,它仅在您在后台进入应用程序时显示,如下图所示;

应用程序在后台的图像

只要应用程序处于前台,角半径就会回到 0。

我试过加入ViewDidLoadViewWillAppear没有成功