😎

visionOS2のリリースノートを読む!

2024/06/30に公開

キービジュアル

はじめに

こちらはMESONで実施中のMESON Apple Vision Proアドベントカレンダー #2 3日目の記事となります!
前日の記事はこちら

WWDC2024でvisonOS 2の発表があり、Apple Vision Proが日本でも発売されました!
今回は WWDC2024で追加されたRealitKitのリリースノートを見ていこうと思います。
発表では注目されていなかったアップデートなどもありますので、自分が気になった部分を中心に紹介できればと思います。

https://developer.apple.com/documentation/updates/realitykit

気になった更新内容

ライトの追加

ついにライトが追加されています!
MESONではアメリカ発売時にSunnyTuneという天気のアプリをリリースしたのですが、その当時はライトが使用できず、自前でライティングを実装しました。
ライトの追加によって影も追加できるようになったので、よりリッチな表現ができるようになっています。
SunnyTuneは日本語対応もしましたので興味のある方はダウンロードしてみてください!

SunnyTune

lightcomponent

https://developer.apple.com/documentation/RealityKit/PointLightComponent
https://developer.apple.com/documentation/RealityKit/DirectionalLightComponent
https://developer.apple.com/documentation/RealityKit/SpotLightComponent
https://developer.apple.com/documentation/RealityKit/DynamicLightShadowComponent

SpatialTrackingSessionの追加

SpatialTrackingSessionとして平面やハンドのアンカーをまとめて取得できるようになったようです。
ただ、例を見る限り AnchorEntityとしてしか取れなそうですが、細かい関節情報やメッシュ情報は取得できるか調査が必要そうです。
https://developer.apple.com/documentation/RealityKit/SpatialTrackingSession

LowLevelMeshの追加

LowLevelMeshが追加されてより細かいメッシュの生成ができるようになりました。
頂点のレイアウトを自分で設定できるようになり、必要な頂点構造のみで描画できるようになりそうです。
https://developer.apple.com/documentation/RealityKit/LowLevelMesh

アニメーション管理コンポーネントの追加

AnimationLibraryComponentが追加され複数のアニメーションを管理できるようになりました。
RealityComposerPro上でも設定できるようになっているので、RealityComposerRroが使いやすくなっています。
animation_library
https://developer.apple.com/documentation/RealityKit/AnimationLibraryComponent

IKの追加

IKComponentIKSolverが追加され、IKも扱えるようになりました。
よりゲームエンジンに近いことができるようになってきましたね。
Unityで使うようにRealityComposerProでこちらも扱えるようになると良いのですが・・。

https://developer.apple.com/documentation/RealityKit/IKComponent

オーディオ管理コンポーネントの追加

音もアニメーションと同じように複数の音をまとめて管理することができる AudioLibraryComponent が追加されました。
こちらもアニメーションと同じくRealityComposerPro上で設定もできるのでGUIベースで設定できるのは便利ですね。
audio_library
https://developer.apple.com/documentation/RealityKit/AudioLibraryComponent

ブレンドシェイプの追加

こちらも待望のブレンドシェイプの追加が行われました!
今まで使用できなかったのでボーンアニメーションで表情も変化させる必要がありましたが、ブレンドシェイプで行うことができるようになります!
UnityのPolyspatial 2.0時点ではまだ対応がされていなかったので、おそらくvisionOS2対応のバージョンで使用できるようになると思います。
しかし、Xcodeで使用するためにはUSDファイルにする必要があるので、USDにブレンドシェイプを追加する必要があります。
現状RealityConverterを使用した変換ではブレンドシェイプが含まれていなさそうだったので、別の方法を取る必要がありそうです。
https://developer.apple.com/documentation/RealityKit/BlendShapeWeightsComponent

SpatialAudioComponent

距離減衰distanceAttenuationを指定できるようになりました。
ゲームデザインに合わせて遠くのものがすぐに聞こえにくくしたり、減衰率を下げて、離れても聞こえるようにしたりと細かい調整ができそうです。
https://developer.apple.com/documentation/RealityKit/SpatialAudioComponent

HoverEffectのカスタマイズ

こちらも待望のHoverEffectのカスタマイズが追加されました!
今まで視線が当たった時の表現が1種類しかなくデベロッパーがカスタマイズすることができませんでしたが、シェーダーグラフを使用したカスタマイズまで対応しているため、かなり柔軟に設定することができるようになっています!

hovereffectcomponent-shader-graph
https://developer.apple.com/documentation/RealityKit/HoverEffectComponent

SkyboxのCubeテクスチャ指定

EnviromentResoucesでCubeテクスチャが使用できるようになりました。
今回のアップデートで、Cube Texture, Texture 2D Array, Texture 3D が使用できるようになったため、その対応がEnviromentResourceにも入った形になります。
https://developer.apple.com/documentation/RealityKit/EnvironmentResource/init(cube:options:)-5v70i

PhysicsJointの追加

物理で動作するジョイント系が追加されました。
こちらもRealityComposerProで指定できるようになると使いやすくなりそうですね。

構造体 説明
PhysicsRevoluteJoint ドアが蝶番で開くのと同様に、2 つのエンティティ ピン間で 1 度の回転自由度を許可するジョイント。
PhysicsPrismaticJoint 引き出しのように直線に沿った動きを可能にするジョイント。
PhysicsSphericalJoint 2 つのエンティティのピン間の自由な回転運動を可能にする球面ジョイント。
PhysicsCustomJoint 個別に指定できる 6 つの自由度を持つジョイント。
PhysicsDistanceJoint 2 つのエンティティ ピン間の最小距離と最大距離を維持するジョイント。
PhysicsFixedJoint 自由度ゼロで 2 つのエンティティ ピンを固定的に接続するジョイント。

https://developer.apple.com/documentation/RealityKit/PhysicsJoint

DockingRegionComponentの追加

ImmersiveSpaceで動画の位置を固定するDockingRegionComponentが追加されました。
FullImmersiveで空間を作った時に指定した位置で動画を再生することができるようになります。
より動画を独自の環境で再生することができるようになっているため、visionOS2ように更新されたDestinationVideoのサンプルを再度見てみてください。
https://developer.apple.com/documentation/visionos/destination-video

docking_region_component
https://developer.apple.com/documentation/RealityKit/DockingRegionComponent

空間を横断できるPortalコンポーネント

PortalCrossingComponentが追加され、ポータルからこちらの空間へシームレスに行き来することができるようになりました!
これにより仮想空間から現実空間に飛び出てくるような演出が簡単にできるようになっています。
portal_crossing_component
https://developer.apple.com/documentation/RealityKit/PortalComponent

まとめ

visionOS2 では他にもエンタープライズ向けのカメラアクセスやオブジェクトトラッキングなど多くの機能が追加されています!
visionOS1 の時にはできなかったことも、できるようになっている可能性があるので、改めてリリースノートを確認してみると良いかと思います!

エンジニア絶賛募集中!

MESONではUnityエンジニアを絶賛募集中です! XRのプロジェクトに関わってみたい! 開発したい! という方はぜひご応募ください!
また最近ではAIの活用も積極的に進めており、XR x AIに興味があるエンジニアの方もぜひご応募ください!

MESONのメンバーページからご応募いただくか、TwitterのDMなどでご連絡ください。

書いた人

ひー

佐藤 寿樹

株式会社コナミデジタルエンタテインメントに入社し5年間ウイニングイレブンのオンライン実装に携わる。
その後、株式会社コロプラで9年間エンジニアとしてアプリ開発・運用を行い、位置情報やARを使用したARゲーム開発、OculusRiftやPSVRなどのVRゲーム開発を経験しMESONへ入社。

Twitter

MESON Works

MESONの制作実績一覧もあります。ご興味ある方はぜひ見てみてください。

MESON Cases

Discussion