草庐IT

swift - ARKit 3 People Occlusion 是否仅限于 iPhone X 和更新版本?

coder 2024-01-22 原文

我开始研究 iOS 13 上新的 People Occlusion 效果,所以我下载了 sample project并尝试在我的设备上编译。

在 iOS 13 iPhone 7 Plus 上运行,出现如下错误:

2019-09-11 13:49:41.257236-0300 ARMatteExampleSwift[7298:1369425] Metal GPU Frame Capture Enabled

2019-09-11 13:49:41.257845-0300 ARMatteExampleSwift[7298:1369425] Metal API Validation Enabled

2019-09-11 13:49:41.589383-0300 ARMatteExampleSwift[7298:1369425] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'This set of frame semantics is not supported on this configuration' * First throw call stack: (0x19712c97c 0x196e550a4 0x1b20783d4 0x100552aac 0x100552e0c 0x19ab2fc08 0x19ab3029c 0x19aa4e24c 0x19aa53dc8 0x19aa4da94 0x19aa4aed4 0x19b16d954 0x19b16cf84 0x19b16def8 0x19b17ed44 0x19b12ed50 0x19b134cec 0x19a9112ec 0x19ada1d48 0x19a911dd4 0x19a91182c 0x19a911c00 0x19a9114bc 0x19a9159d8 0x19acd49ac 0x19adbaf08 0x19a915710 0x19adbae04 0x19a91557c 0x19a78aa8c 0x19a7895f4 0x19a78a7c4 0x19b13306c 0x19acf5390 0x19c1c1994 0x19c1e6960 0x19c1cc0f8 0x19c1e661c 0x100cf2c04 0x100cf6028 0x19c20b540 0x19c20b20c 0x19c20b734 0x1970aa7d0 0x1970aa728 0x1970a9ec0 0x1970a500c 0x1970a48ac 0x1a0eff328 0x19b136f00 0x100555a80 0x196f2f460) libc++abi.dylib: terminating with uncaught exception of type NSException

尝试调试时,我在示例项目自述文件中找到了这个:

Note: To run the app, use an iOS device with A12 chip or later.

为什么? Metal 2 是否仅限于 A12 芯片?

最佳答案

ARKit 3.0 People Occlusion 功能仅限于采用 A12 仿生(7 纳米)和 A13 仿生(7 纳米)处理器的设备。 iPhone X 不支持人物遮挡,因为它有 A11 CPU(10 纳米技术)。

这是为什么?

那是因为People Occlusion 功能的计算量非常大。要打开此功能,您只需要使用类型属性,允许根据其深度遮挡虚拟内容:

static var personSegmentationWithDepth: ARConfiguration.FrameSemantics { get }

由于 RGB 的实时合成技术,它的计算量很大, Alpha ZDepth 背景、3D 模型和前景 channel 在 60 fps跟踪和 60 fps渲染。因此,只有 A12A13 芯片组可以做到这一点而不会出现延迟和过热(它们功率更大,能效更高)。

和Metal 2 framework同理:

The Apple A12 Bionic and A13 Bionic graphics card is the second generation of integrated GPUs that was designed by Apple and not licensed by PowerVR. It can be found in the Apple iPhone Xs, iPhone Xr and iPhone 11 include 4 cores and supports Metal 2.

此外,您还可以阅读 THIS POST 了解更多信息。

关于swift - ARKit 3 People Occlusion 是否仅限于 iPhone X 和更新版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57893809/

有关swift - ARKit 3 People Occlusion 是否仅限于 iPhone X 和更新版本?的更多相关文章

  1. sql - 通过关联的 Rails 查询仅限于最近的记录? - 2

    classUserhas_many:books我需要一个返回的查询:最近一本书具有:complete=>true的用户。即,如果用户最近的书有:complete=>false,我不希望它们出现在我的结果中。到目前为止我有什么User.joins(:books).merge(Book.where(:complete=>true))这是一个很有希望的开始,但没有给我需要的结果。我试过添加.order("created_ondesc").limit(1)到上述查询的末尾,但是当我期待很多结果时,我最终只得到一个结果。谢谢! 最佳答案 如果

  2. javascript - linkedin javascript api 域仅限于本地主机 - 2

    我正在尝试使用linkedinjavascriptapi,但是当我运行脚本时出现错误“javascriptapi域被限制为本地主机”。有谁知道那是什么?请帮忙! 最佳答案 转到https://www.linkedin.com/secure/developer点击您正在使用的应用名称。将您的域添加到JavaScriptAPI域:保存更改。这应该可以解决您的问题。 关于javascript-linkedinjavascriptapi域仅限于本地主机,我们在StackOverflow上找到一个

  3. javascript - 按住 'ctrl+enter' 会为按键事件提供与直接 'enter' 不同的键码 - 但仅限于 Windows - 2

    我有以下Javascript:$(function(){$("#foo").keypress(function(event){if(event.keyCode==13){console.log(event.ctrlKey?"Ctrl+Enter(13)":"Enter(13)");}elseif(event.keyCode==10){console.log(event.ctrlKey?"Ctrl+Enter(10)":"Enter(10)");}});});本例中的Foo是一个输入框。在Windows下,并且仅限于Windows-按住CTRL修饰符可将keyCode从13更改为10。因

  4. javascript - 将 Firebase 读/写访问权限仅限于我自己 - 2

    我有一个运行的静态网站:config=apiKey:"HIDDEN"authDomain:"HIDDEN"databaseURL:"HIDDEN"storageBucket:""firebase.initializeApp(config)在浏览器中(它被编译为javacript)以通过Firebase的服务器进行身份验证。我在这里很困惑吗?这是从浏览器使用Firebase进行身份验证的有效方法吗?我从他们的“网络”教程中获得了代码,所以我认为它是。现在,我需要配置我的Firebase数据库规则,以便我并且只有我可以读取和写入它。我怎样才能做到这一点?这个例子是否足够?这是仅允许经过身份

  5. JavaScript 原型(prototype)仅限于函数? - 2

    o.prototype={...}只有当o是一个函数时才有效。假设我有以下代码conf={a:2,b:4};conf.prototype={d:16}conf.a和conf.b正常并返回正确的值。但是conf.d没有返回16,而是未定义。是否有任何解决方案很糟糕,基于原型(prototype)的泛化也可以应用于这些类型的对象。 最佳答案 您混淆了可用于ConstructorFunctions的prototype属性和内部[[Prototype]]属性。所有对象都有这个内部[[Prototype]]属性,只有new当您使用构造函数调用

  6. javascript - 为什么 AJAX 请求仅限于同一域? - 2

    让我感到很困惑的一点是,为什么AJAX请求仅限于同一个域?这背后的原因是什么?我没有发现从外部位置请求文件有任何问题,发出XMLHTTP请求的服务器似乎也可以正常获取和发布到外部位置。 最佳答案 想象一下:你来我很棒的网站www.halfnakedgirls.com。您喜欢看看起来像人体生理学技术文档的内容,但在您的背后,一些JavaScript行正在执行对另一个域的请求,比方说www.yourpaypallike.com。像http://www.yourpaypallike.com/account/transfer?to=badg

  7. go - 如何将字符串转换为值 int128?目前我仅限于 int64 - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭3年前。Improvethisquestion给定字符串值:="zzzzzzzzzzzzzzzzzzzz"i,err:=strconv.ParseInt(stringvalue,36,0)我如何返回int128,因为我的字符串值足够长以返回int128?

  8. swift - 将 json 编码时间转换为 nsdate - 2

    当我将time.Now()编码到JSON对象时,它给出的结果为"2009-11-10T23:00:00Z"但打印时间。现在给出2009-11-1023:00:00+0000UTC。他们为什么不同。什么是T和Z。另外,如何根据this将其转换为swiftNSDate对象?表? 最佳答案 这些值的含义无关紧要,它们是该格式(ISO8601)的一部分。有几种方法可以解决这个问题。一种是为时间或您的结构定义自定义MarshalJSON()方法并使用它来格式化日期,另一种是首先在您的结构中将其表示为字符串,以便当默认实现执行你得到你正在寻找的

  9. objective-c - 为什么 Swift 函数定义语法是多余的? - 2

    在C/C++/Java/Go中,我们使用,来分隔参数:(aint,bint)在ObjectiveC中,我们使用:来表示参数::(int)a:(int)b在Swift中,我们必须同时使用:和,:(a:int,b:int)是否需要冗余? 最佳答案 Swift可能有外部和内部参数名称:(externalinternal:Int)如果没有独特的分隔符,会产生很多歧义。 关于objective-c-为什么Swift函数定义语法是多余的?,我们在StackOverflow上找到一个类似的问题:

  10. swift - Swift 和 Go 之间的 Zlib 压缩 - 2

    我的Swift应用程序与用Go编写的服务器通信。我希望使用Zlib压缩传输的数据,但压缩结果似乎与Swift和Go不同。这是Go版本:sourceString:="A-t-ellebesoind'autrespreuves?Acceptez-lapourleplaisir.J'aitantfaitquedelacueillir,Etc'estpresqueunefleur-des-veuves."//Compressionvarbbytes.Bufferwriter:=zlib.NewWriter(&b)writer.Write([]byte(sourceString))writer.

随机推荐