问题标签 [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 回答
601 浏览

ios - 改进 ARKit iOS Swift 中的平面检测

有什么方法可以改善 ARKit 平面检测并减少检测它所消耗的时间吗?在这里,我们正在检测水平面,如果我们保持相机稳定,则需要时间来检测并且它在地板上不起作用。

对于桌子和其他类似表面,大约需要 5 到 6 秒。但是对于地板,它超过 20 或半分钟,如果我们不移动相机,它根本不起作用。

这是我的代码:-

0 投票
1 回答
1291 浏览

ios - ARKit 在 ARWorldTrackingConfiguration 和 ARFaceTrackingConfiguration 之间切换 - 后置和前置摄像头

ARWorldTrackingConfiguration在我的项目中,我想在和之间切换ARFaceTrackingConfiguration

我使用两种不同类型的视图 aARSCNView使用后置摄像头和 aARView进行面部跟踪。首先我启动ARSCNView之后,如果用户愿意,他可以切换到人脸跟踪

我以这种模式启动我的视图控制器:

我加载我的对象(.scn)

当我想切换到前置摄像头并传递给 ARView 时,我会这样做:

而不是我加载我的.rcproject

所以我的问题从这里开始,当我尝试返回后置摄像头并再次传递给 ARWorldTracking 时。

这是我的方法:

当我切换到后置摄像头时,传感器无法正确跟踪飞机。

我该如何解决这个问题,那么如何在 ARWorldTrackingConfiguration 和 ARFaceTrackingConfiguration 之间正确切换?

提前致谢

0 投票
0 回答
326 浏览

swift - 是否可以同时运行 2 个独立的 ARSession?

从 ARKit3 开始,可以运行同时支持后置和前置摄像头的 ARSession()。

例如,这会为支持 Worldtracking 的前置摄像头创建一个 ARConfiguration。

此示例为启用人脸跟踪的后置摄像头会话创建配置:

我想创建 2 个同时运行的独立 ARConfigurations 和 ARSessions。像这样:

在此处输入图像描述

到目前为止,我尝试了这段代码:

当前置摄像头正常工作时,后置摄像头会停止视频输入。有没有机会解决这个问题?

在另一台相机上运行一个 ARSession 和一个低级视频捕获会话也是一种解决方案,但我遇到了同样的问题。

0 投票
1 回答
1072 浏览

ios - iOS ARKit - Calculate the degree of rotation of device in all three direction

I want to get the degree of Rotation of all three axis. I am trying to achieve with landscape mode. When rotate device from left to right (Y-rotation), I want the degree covered once user set a left end and rotatae to right. So we need the degree 360 when it reached the starting point. So for the y-rotation, using the following calculation and it is fine.

Ref: Getting the rotation of device around the world origin's y axis in ARKit

Similarly, want the Z-rotation, for Z-rotation , no need for 360 degree rotation. But need accurate value when rotate about upto 90 degree This is fine if we use the

But this will be wrong* if we rotate the device on left to right (Y-direction ) some degree and then check the Z rotation, we will get the Z-rotation values as near to 180 degree rather than near to 0

So tried a bad way to get the Z rotation like:

But this is not accurate, we can see a jumb the Z-rotation value when subtracting 180.

Could you suggest a proper method..

X-rotation value is simialr to Z-rotation, getting values near to 180 when check after rotate left to right (Y-rotation) some degree.

Thanks

Edited: Sep 3, 2109 For x and y, Now I am using

0 投票
0 回答
530 浏览

ios - 更改 ARSCNView 背景

iPad Pro 上的 iOS 13.1.3

似乎以前的 iOS 版本也存在同样的问题。 使用 AVCaptureDevice 作为 SCNScene 背景内容

我的应用程序使用前置摄像头在 iOS 中创建 AR 面部。在第一次游览时,我的应用程序使用带有相机输入的默认 SCNView。第一次游览后,我将 ARSCNView 背景设置为 UIImage。scnview.scene.background设置后,我无法通过设置为nilor回到以前的状态inputdevice

如何将其恢复到显示相机输入的先前状态?首先,我设置如下,显示成功。

然后在 15 秒后,我用下面的代码设置它,但我得到的是稳定的图像而不是视频预览层。

我在输出中收到此错误:

0 投票
1 回答
41 浏览

swift - 图像识别Swift时不同位置的SCNNode位置

识别图像后,我在 didAddNode 中有此代码。图像以 X 模式相互叠加显示。我需要它们彼此相邻。我已经尝试过 SCNNode x、y 和 z,但图像没有在中间点内移动。我之前已经将锚点作为参考图像,但这也没有让我达到目标。我尝试了 SCNVector3(0,0,-0.2) 图像从屏幕上消失了

这里显示了什么:

在此处输入图像描述

这是我的目标:

在此处输入图像描述

0 投票
0 回答
68 浏览

ios - 防止 SCNText 的轴心点移动到其左对齐角

我需要从我最初设置的场景视图中的位置旋转一个 SCNText 对象。当我创建 SCNText 时,我会调整它的枢轴点,以便它在它的中心上旋转。问题是在我这样做之后它会自行移动到它的 leftAlignment 角。我用一个红点来创建这个点

在此处输入图像描述

如果没有下面的代码,它会错误地旋转(从左对齐角),如图 1 所示。使用此代码,它确实从中心正确旋转,但它的原始位置现在是错误的,如图 2 所示。

我在找第三张图。我怎样才能做到这一点?

代码:

当我第一次创建 textNode 时,我还尝试不添加“使用其中心的代码”,而是在旋转发生在内部时添加代码,respondToSwipeGesture但是一旦旋转完成,它就会结束/移动到与相同的 leftAlignment 角如图2所示。

0 投票
0 回答
85 浏览

ios - 将 UIImageView 添加到 ARSCNView 场景背景会导致饱和度/色调关闭

这会导致图像看起来像这样:

在此处输入图像描述

原图:

在此处输入图像描述

我不想要那种红色。我该如何防止这种情况发生?

0 投票
1 回答
160 浏览

ios - 将 ARSCNView 背景内容重置为其原始来源

我正在捕获 ARFrame 并应用过滤器,效果很好,但我想关闭过滤器并返回原始相机源,但我遇到了问题。此代码正在应用过滤器:

设置sceneView.scene.background.contents后,我无法将其设置回原始来源。原始来源是一个名为:SCNCaptureDeviceOutputConsumerSource的对象,它不在文档中。我尝试保存该对象并再次使用它设置背景内容,但它只会显示它所持有的最后一帧(因此会有静止图像)。它不会持续更新。我不知道如何sceneView.scene.background.contents从与替换之前相同的来源提取数据。

我尝试了设置sceneView.session.delegate = nil,但是没有用,它只是停止更新,并且屏幕看起来像冻结了一样。

有没有办法将 ARSCNView 背景内容重置为其获取数据的原始来源?

如果我重新加载 ARSCNView,它可以工作,但重新加载至少需要一秒半:

感谢您提供的任何帮助。

0 投票
0 回答
118 浏览

scenekit - ARSCNPlaneGeometry 更新并重新计算纹理坐标,而不是拉伸它们

我在 ARKit 更新的平面几何图形的纹理坐标上遇到问题。纹理图像被拉伸,我想避免这种情况。

现在我正在检测水平垂直墙壁并向它们应用纹理。它的工作就像一个魅力......

但是当几何体因为扩大了墙壁/地板的检测范围而更新时,纹理坐标被拉伸而不是重新映射,导致纹理看起来像下图一样被拉伸。

您还可以看到发生问题的未经编辑的视频:https ://www.youtube.com/watch?v=wfwYPwzND74

墙

这是更新几何的代码:

我已经看到您可以通过将其定义为如下源来定义纹理坐标:

但我不知道如何填充textCords数组以使其正确适应更新planeGeometry

编辑:

重新定义方法:

深入思考这个问题,我想到我需要修改纹理的变换来修复拉伸部分,但是如果我这样做,我有两个选择:

  • 要么保持纹理足够大以填充整个几何体,但保持 1:1 的比例以避免拉伸
  • 或者保持纹理的原始大小但具有 1:1 的纵横比,并多次重复纹理以适应整个几何体。

这些方法中的任何一种我仍然不知道如何去做。你有什么建议?