Ios 在ARKit中,屏幕空间是什么意思?
当我看了805课时的视频,创造了很棒的AR体验,他们提到在AR中显示文本时使用屏幕空间文本。他们使用了他们的测量应用程序的例子,效果非常好Ios 在ARKit中,屏幕空间是什么意思?,ios,augmented-reality,arkit,wwdc,Ios,Augmented Reality,Arkit,Wwdc,当我看了805课时的视频,创造了很棒的AR体验,他们提到在AR中显示文本时使用屏幕空间文本。他们使用了他们的测量应用程序的例子,效果非常好 我想实现类似的功能。但是,我无法理解 默认情况下,由于iPhone的运动传感器,ARKit中的世界(或绝对)坐标系。ARKit中的世界坐标(在3D空间中)是固定的,iPhone的前后摄像头在这些坐标内移动。因此,如果您需要相对于iPhone的当前位置进行任何操作,您首先需要转换到相机空间(也在3D空间中) 但是屏幕空间(又称投影空间)是iPhone屏幕的2D
我想实现类似的功能。但是,我无法理解 默认情况下,由于iPhone的运动传感器,ARKit中的世界(或绝对)坐标系。ARKit中的
世界坐标
(在3D空间中)是固定的,iPhone的前后摄像头在这些坐标内移动。因此,如果您需要相对于iPhone的当前位置进行任何操作,您首先需要转换到相机空间
(也在3D空间中)
但是屏幕空间
(又称投影空间
)是iPhone屏幕的2D空间。在显示器上的屏幕空间
中,一个小的3D对象(例如离相机100米)可能会被视为一个红色像素
我相信WWDC'18演示者告诉我们,在iPhone屏幕上文本的强大可视性背景下,屏幕空间是如何的。就这样
阅读这篇优秀的文章,了解更多详细信息。屏幕空间是显示器的二维像素坐标系。在这里,您通常会在屏幕空间中布置UIKit小部件等
屏幕空间的替代是一个3D坐标空间,它涉及到3D世界跟踪ARKIT或3D渲染引擎,用于在AR中显示虚拟3D内容(在这种情况下,有多个3D空间需要考虑,如“绝对的”世界空间相对于相机的相对定位)。 正如WWDC18演讲中提到的,屏幕空间是一种很好的方式,可以以一种可读的方式显示本质上是2D(如文本)的内容,而不管与内容相关联的真实世界功能的距离或方向如何。(如果你把这个文本标签放在世界空间中,当你远离它时,它会变得很小而且不可读。)
ARKit并没有提供任何让2D屏幕空间内容跟随3D世界空间位置的自动方式,但让自己实现这一点并不特别困难。下面是一个覆盖UIView
s的常规方法,它遵循3D位置:
ARAnchor
ARSCNView
一起使用,如果您正在构建自己的渲染器),以获取该锚点的当前三维位置ARSCNView
,ARCamera
)以获得屏幕上显示该三维位置的二维点ui视图的位置设置为与该点匹配
对于更高级的情况,如Measure应用程序如何使其屏幕空间标签平行于两个3D点之间的直线,您需要投影两个端点,并使用类似于
atan2
的函数来获取旋转标签的角度。投影3D位置(ARSCNView projectPoint,ARCamera projectPoint)获取屏幕上显示该三维位置的二维点。还有Z。我需要做什么,我也不能理解XZ平面和XY平面。由ARKIt检测到的地板是XZ平面正确!!还有一点是ARSCNView projectPoint,它根据屏幕方向给出位置。就像我把手机向右倾斜30度。使用UIBezierPath时,投影点提供旋转的形状。有什么帮助吗?