😂

[VisionOS開発メモ]MeshAnchorのClassficationsが使えない

2024/03/03に公開

このセッションの中で、MeshAnchorについてもPlaneAnchorと同じように、classificationsが存在し、壁や天井などが分類できるという紹介がされています。

https://developer.apple.com/videos/play/wwdc2023/10082/?time=1280

MeshAnchor.Geometry.classificationsを試す

早速、試してみると。MeshAnchor.GeometryのclassificationsはGeometrySource?型になっており、求めるものにアクセスすることができません。公式サイトにも、classificationsの型はGeometrySource?になっています。

https://developer.apple.com/documentation/arkit/meshanchor/geometry

同じような役割のPlaneAnchorはどうなっている?

PlaneAnchorも同じようなGeometrySource?型で、これを利用してどうにかアクセスするんだろうか?と思って調べてみるとPlaneAnchorに関しては、PlaneAnchor.Classification型のenumが渡されており、MeshAnchorの場合とは異なり、geometryを介さずに、PlaneAnchor.classificationsで直接アクセスできる。

https://developer.apple.com/documentation/arkit/planeanchor

MeshAnchorのClassificationのenumは存在しているが。。。

MeshAnchorの方に戻ると、MeshAnchorにもMeshAnchor.MeshClassificationというenumは存在してはいます。
PlaneAnchorと異なるのは、MeshAnchorのほうはgeometryを経由しないとclassificationsにアクセスできず、その型もMeshAnchor.MeshClassificationでは現状ないということです。(多分、MeshClassificationにはアクセスする方法がなさそう?)

https://developer.apple.com/documentation/arkit/meshanchor/meshclassification

Forumを調べてみると。同じような問題に当たっているスレッドが存在するが、回答が求めるものではなく、それに対するさらなる質問に対して回答がされてない状態のようです。
https://forums.developer.apple.com/forums/thread/739478

とりあえず、今はPlaneAnchor使ったほうが良さそう

最終的に、利用できるようになるのだと思いますが。特定したMeshの分類を使いたい場合はPlaneAnchorを利用できるPlaneDetectionProviderを利用したほうが良さそうです。

僕も、こちらの方のコードを参考にしてトライしてみようと思います。
https://note.com/shu223/n/n0aaddf9b70c7

もし、MeshAnchorの方でも、正しいClassificationsにアクセスする方法をご存じの方いましたら、ご教示いただけたら嬉しいです。

Discussion