Apple Vision Pro(visionOS2)2Dのベクターを3Dモデルに変換するRealityKit MeshResource.ShapeExtrusionOptionsについて  | 技術ブログ | 株式会社OnePlanet 読み込まれました

Apple Vision Pro(visionOS2)2Dのベクターを3Dモデルに変換するRealityKit MeshResource.ShapeExtrusionOptionsについて

Appleの新しい空間コンピューターデバイス『Apple Vision Proは何ができる?』

日本の発売日が2024年6月28日(金)に決定したAR、VR、XR技術を搭載の新しい空間コンピューターデバイス『Apple Vision Pro(値段は税込599,800円〜)』について以下をご覧ください。

https://ar-marketing.jp/apple-glass-release/


日本初のApple Vision Pro アプリ開発を手掛けました

第96回アカデミー賞 4部受賞した映画『哀れなるものたち』(配給:ウォルト・ディズニー・ジャパン株式会社様)の世界に没入体験できるApple Vision Proのアプリの開発から渋谷PARCOでの展示サポートまで株式会社OnePlanetが手掛けました。

詳細:https://1planet.co.jp/news/Twd0qMjt

Apple Vision ProやAR関するご依頼・ご相談など、お気軽にお問い合わせください。


はじめに

今回、Apple Vision ProのvisionOS 2の新機能APIを使用して、Full Spaceにお絵描きアプリを構築します。まず最初に、お絵描きを行うためのCanvasを配置するUIを作成します。Canvasを配置するUIには、Canvasの境界を示すCanvas boundaryと、Canvasの位置を変更するためのHandleを含めます。この記事では、Canvas boundaryの構築方法と注意点について説明します。

Canvas boundary について

Canvas boundaryのメッシュはリアルタイムで生成され、UI上のスライダーをドラッグすることで、Canvas boundaryの境界サイズを変更できます。Canvas boundaryのメッシュは2つの円で定義されています。。円は360度に広がる弧です。したがって、異なる半径の2つの弧を作成し、正規化されたeven-odd fill ruleを指定することで、作成したい形状にします。

MeshResourceの押し出しについて

// Use MeshResource(extruding:) to generate the canvas edge

let path = SwiftUI.Path { path in
    // Generate two concentric circles as a SwiftUI.Path
    path.addArc(center: .zero, radius: outerRadius,
        startAngle: .degrees(0), endAngle: .degrees(360),
        clockwise: true)
    path.addArc(center: .zero, radius: innerRadius,
        startAngle: .degrees(0), endAngle: .degrees(360),
        clockwise: true)
}.normalized(eoFill: true)

var options = MeshResource.ShapeExtrusionOptions()
options.boundaryResolution 
    = .uniformSegmentsPerSpan(segmentCount: 64)
options.extrusionMethod = .linear(depth: extrusionDepth)

return try MeshResource(extruding: path, 
                        extrusionOptions: extrusionOptions)

RealityKitでメッシュを生成するために、visionOS 2から提供されたMeshResource.ShapeExtrusionOptionsを使用します。MeshResource.ShapeExtrusionOptionsは、2Dのベクターを3Dモデルに変換する強力なAPIです。形状の深さと解像度を指定するだけで、簡単にメッシュを生成することができます。

コンテンツのチラつきについて

1つ重要な点を考慮する必要があります。visionOSでは、Dynamic content scalingの機能が働きます。これにより、ユーザーが視線をあてたコンテンツの中心は高解像度でレンダリングされ、外側にいくほど解像度が低下します。これにより、アプリのパフォーマンスが最適化されます。しかし、今回のような高コントラストで薄いジオメトリが含まれている場合、チラついて見える可能性があります。具体的には、リングが薄すぎる場合に問題が生じます。このような薄いメッシュの表示は避けてください。この問題に対処するためには、ジオメトリを厚くすること(左側の図を参照)でチラつきを回避できます。

まとめ

今回は、visionOS 2で追加されたMeshResourceの押し出し機能とメッシュ表示時に発生するちらつきの問題とその解決策について説明しました。MeshResource.ShapeExtrusionOptionsを使用することで、SwiftUI.Pathで作成したベクター情報を3Dメッシュに生成することが可能です。ただし、SwiftUI.Pathで作成したメッシュは非常に薄くなる傾向があり、Dynamic content scalingの影響でちらつく場合があります。これらの特性を考慮しながら、ちらつきを防ぐための構築が重要になります。

今後もApple Vision Proのアプリ開発において、これらの先端技術を活用し、より革新的で魅力的なアプリケーションの開発に積極的に取り組んでまいります。

参考

今回、この動画を元に記事を作成しました。

Apple Vision ProやAR関するご依頼・ご相談など、お気軽にお問い合わせください。

ARに関するご依頼・ご相談など、お気軽にお問い合わせください。

https://1planet.co.jp/conta

XR エンジニア

徳山 禎男

SIerとして金融や飲料系など様々な大規模プロジェクトに参画後、2020年にOnePlanetに入社。ARグラスを中心とした最先端のAR技術のR&Dや、法人顧客への技術提供を担当。過去にMagic Leap 公式アンバサダーを歴任。

View More

お問い合わせ・ご相談

ARでやってみたいことやお困りごとなど
お気軽にお問い合わせください。

お問い合わせ