问题标签 [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.
ios - 改进 ARKit iOS Swift 中的平面检测
有什么方法可以改善 ARKit 平面检测并减少检测它所消耗的时间吗?在这里,我们正在检测水平面,如果我们保持相机稳定,则需要时间来检测并且它在地板上不起作用。
对于桌子和其他类似表面,大约需要 5 到 6 秒。但是对于地板,它超过 20 或半分钟,如果我们不移动相机,它根本不起作用。
这是我的代码:-
ios - ARKit 在 ARWorldTrackingConfiguration 和 ARFaceTrackingConfiguration 之间切换 - 后置和前置摄像头
ARWorldTrackingConfiguration
在我的项目中,我想在和之间切换ARFaceTrackingConfiguration
。
我使用两种不同类型的视图 aARSCNView
使用后置摄像头和 aARView
进行面部跟踪。首先我启动ARSCNView
之后,如果用户愿意,他可以切换到人脸跟踪
我以这种模式启动我的视图控制器:
我加载我的对象(.scn)
当我想切换到前置摄像头并传递给 ARView 时,我会这样做:
而不是我加载我的.rcproject
所以我的问题从这里开始,当我尝试返回后置摄像头并再次传递给 ARWorldTracking 时。
这是我的方法:
当我切换到后置摄像头时,传感器无法正确跟踪飞机。
我该如何解决这个问题,那么如何在 ARWorldTrackingConfiguration 和 ARFaceTrackingConfiguration 之间正确切换?
提前致谢
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
ios - 更改 ARSCNView 背景
iPad Pro 上的 iOS 13.1.3
似乎以前的 iOS 版本也存在同样的问题。 使用 AVCaptureDevice 作为 SCNScene 背景内容
我的应用程序使用前置摄像头在 iOS 中创建 AR 面部。在第一次游览时,我的应用程序使用带有相机输入的默认 SCNView。第一次游览后,我将 ARSCNView 背景设置为 UIImage。scnview.scene.background
设置后,我无法通过设置为nil
or回到以前的状态inputdevice
。
如何将其恢复到显示相机输入的先前状态?首先,我设置如下,显示成功。
然后在 15 秒后,我用下面的代码设置它,但我得到的是稳定的图像而不是视频预览层。
我在输出中收到此错误:
ios - 防止 SCNText 的轴心点移动到其左对齐角
我需要从我最初设置的场景视图中的位置旋转一个 SCNText 对象。当我创建 SCNText 时,我会调整它的枢轴点,以便它在它的中心上旋转。问题是在我这样做之后它会自行移动到它的 leftAlignment 角。我用一个红点来创建这个点
如果没有下面的代码,它会错误地旋转(从左对齐角),如图 1 所示。使用此代码,它确实从中心正确旋转,但它的原始位置现在是错误的,如图 2 所示。
我在找第三张图。我怎样才能做到这一点?
代码:
当我第一次创建 textNode 时,我还尝试不添加“使用其中心的代码”,而是在旋转发生在内部时添加代码,respondToSwipeGesture
但是一旦旋转完成,它就会结束/移动到与相同的 leftAlignment 角如图2所示。
ios - 将 ARSCNView 背景内容重置为其原始来源
我正在捕获 ARFrame 并应用过滤器,效果很好,但我想关闭过滤器并返回原始相机源,但我遇到了问题。此代码正在应用过滤器:
设置sceneView.scene.background.contents
后,我无法将其设置回原始来源。原始来源是一个名为:SCNCaptureDeviceOutputConsumerSource的对象,它不在文档中。我尝试保存该对象并再次使用它设置背景内容,但它只会显示它所持有的最后一帧(因此会有静止图像)。它不会持续更新。我不知道如何sceneView.scene.background.contents
从与替换之前相同的来源提取数据。
我尝试了设置sceneView.session.delegate = nil
,但是没有用,它只是停止更新,并且屏幕看起来像冻结了一样。
有没有办法将 ARSCNView 背景内容重置为其获取数据的原始来源?
如果我重新加载 ARSCNView,它可以工作,但重新加载至少需要一秒半:
感谢您提供的任何帮助。
scenekit - ARSCNPlaneGeometry 更新并重新计算纹理坐标,而不是拉伸它们
我在 ARKit 更新的平面几何图形的纹理坐标上遇到问题。纹理图像被拉伸,我想避免这种情况。
现在我正在检测水平和垂直墙壁并向它们应用纹理。它的工作就像一个魅力......
但是当几何体因为扩大了墙壁/地板的检测范围而更新时,纹理坐标被拉伸而不是重新映射,导致纹理看起来像下图一样被拉伸。
您还可以看到发生问题的未经编辑的视频:https ://www.youtube.com/watch?v=wfwYPwzND74
这是更新几何的代码:
我已经看到您可以通过将其定义为如下源来定义纹理坐标:
但我不知道如何填充textCords
数组以使其正确适应更新planeGeometry
编辑:
重新定义方法:
深入思考这个问题,我想到我需要修改纹理的变换来修复拉伸部分,但是如果我这样做,我有两个选择:
- 要么保持纹理足够大以填充整个几何体,但保持 1:1 的比例以避免拉伸
- 或者保持纹理的原始大小但具有 1:1 的纵横比,并多次重复纹理以适应整个几何体。
这些方法中的任何一种我仍然不知道如何去做。你有什么建议?