Release 3.2.0
概要
DataContainers、PhysBones 1.1(「Squishy PhysBones」)、AsyncGPUReadbackなどが追加されました。
機能
- DataContainers! Udonでリスト、辞書、JSONが使用可能に!
- DataListsとDataDictionariesが追加され、UdonでもListsやDictionariesと同様の機能が使えるようになりました。
- リストや辞書は通常ジェネリック(Generics)に対応する必要がありますが、Udonはこれをサポートしていません。そのため、任意の値を格納できるDataTokensにデータを格納する仕組みを採用しています。
- VRCJSONを追加しました。これは、Remote String Loadingなどで取得したJSON文字列をDataListsやDataDictionariesと相互変換するためのヘルパークラスです。
- 詳細はData Containers / VRCJSONのドキュメントを参照してください。
- DataListsとDataDictionariesが追加され、UdonでもListsやDictionariesと同様の機能が使えるようになりました。
- AsyncGPUReadback! GPUやシェーダーからのデータ読み戻しを、パフォーマンスへの負荷を抑えて実行できます。
VRCAsyncGPUReadback.Request関数と、それに対応するOnAsyncGpuReadbackCompleteイベントを追加しました。- これらを使用すると、パフォーマンスへの影響を最小限に抑えつつGPUからCPUメモリへデータを読み取れます。ただし、データの取得には1フレーム以上の遅延が発生します。
- 詳細はASyncGPUReadbackのドキュメントを確認してください。
改善点
- Squishy PhysBones! 骨が伸びるだけでなく、「潰れる(squish)」または圧縮されるPhysBonesを実装できるようになりました。
- Squishy PhysBoneを設定するには、PhysBoneコンポーネントをバージョン1.1に変更し、「Max Squish」の値を調整してください。
- すべてのPhysBonesにバージョンが付きました! PhysBoneコンポーネントでバージョンを変更可能です。これは、今後安全に新機能を追加していくための変更です。
- 古いPhysBonesは自動的にバージョン1.0になります。
- Squishy PhysBonesの機能はバージョン1.1で利用できます。その他、以下に記載する変更も含まれます。
- すべてのバージョンが今後も維持されます。 1.0が非推奨になることはありませんが、機能は凍結され、新機能の追加は行われません。破壊的な変更を伴う新機能を追加する際は、バージョン番号を更新します。
- PhysBones 1.1: GravityとStiffnessの動作が変更されました。1.0からアップグレードする場合は値を再調整する必要があります。
- Gravityは、静止時にボーンがワールド空間でどれだけ直立/直下を向くかの比率になりました。
- Stiffnessは、ボーンが以前の向きをどれだけ維持しようとするかの比率になりました。
- 以前は、これらの値はPull係数とバランスを取る必要のある直接的な力でした。今回の変更により、より直感的で扱いやすくなると考えています。
- この変更は、コンポーネントに追加された新機能をサポートするためにも必要でした。
- PhysBones 1.1: Max Squish値が追加されました。 これはボーンがどれだけ縮小できるかの割合です。
_Squishパラメータが追加されました。これは_Stretchパラメータと同様に機能します。
- PhysBones 1.1: Stretch Motion値が追加されました。 これは、動きがボーンの伸縮や圧縮にどれだけ影響するかの比率です。
- VRCPhysBoneコンポーネントUIの各項目カテゴリは、折りたためるようになりました。
- 各カテゴリにはヘルプボタンが追加され、その項目のオンラインドキュメントにアクセスできます。
- PhysBonesのドキュメントは、PhysBones 1.1およびSquishy PhysBonesのオープンベータ期間中に更新されます。
- Network ID UtilityがアバタープロジェクトのPhysBonesで動作するようになりました。
- このツールを使用すると、GameObjectの階層が異なる場合でも、異なるプラットフォーム間でアバターのPhysBonesを同期できます。
- この高度なツールは、PC用とQuest用のアバターで階層が異なる場合にのみ有用です。
- なぜそれが必要なのか分からない場合は、このツールを気にする必要はありません。
- 詳細は完全なドキュメントを参照してください。
- このツールを使用すると、GameObjectの階層が異なる場合でも、異なるプラットフォーム間でアバターのPhysBonesを同期できます。
3.2.0-beta.1以降の変更点
- 削除されていた一部のパブリックメソッドを再追加しました(
GetOrAddComponentなど)。- これらには
[Obsolete]のマークが付与されています。将来的に完全に削除される予定ですので、使用を控えるようにしてください。
- これらには
- UnityでPhysBonesを掴む際の問題を修正しました。
- PhysBoneの伸縮(stretch)が制限されなくなりました。
- これにより、以前の動作に戻ります。
- DataContainers:
GetKeysとGetValuesが、Addを使用した後に不正な値を返す問題を修正しました。
SDK APIの変更
現在、SDKの「パブリックAPI」のドキュメント化を進めており、マイナーバージョンやパッチバージョン間で変更がないことを保証する予定です。それまでの間、3.1.13から変更された点は以下の通りです。
拡張メソッド
一部の拡張メソッドを VRC.Core 名前空間に移動しました。
Transform.Reset() メソッドを使用している場合は、代わりに VRC.Core.ExtensionMethods.Reset(Transform t) を使用してください。
その他、同様の変更については以下を参照してください。
Transform.GetHierarchyPath>VRC.Core.ExtensionMethods.GetHierarchyPath(Transform t, Transform relativeTransform)Transform.GetShortHierarchyPath>VRC.Core.ExtensionMethods.GetShortHierarchyPath(Transform t, Transform relativeTransform)GameObject.GetOrAddComponent>VRC.Core.ExtensionMethods.GetOrAddComponent(GameObject go)Type.GetFriendlyGenericTypeName>VRC.Core.ExtensionMethods.GetFriendlyGenericTypeName(Type t, bool includeNamespaces)
アセンブリの移動
PhysBoneGrabHelper がアセンブリを移動したため、コードから VRC.SDK3A アセンブリを参照する必要がある場合があります。修正例はこちら。
公開利用を意図しない変更
さらに、以下のクラスに対して変更を行いました。これらはSDKのパブリックAPIの一部とは見なされないため、可能な限り速やかに使用を控えるようにしてください。 5月末までに、SDKから除外されるすべてのリストを記載したドキュメントを公開する予定です。
ApiCacheEditorVRC.Core.ApiCacheVRC.Core.ApiCache.CachedResponseVRC.Core.ApiCache.CacheEntryVRC.Core.ApiFeedbackVRC.Core.ApiFileVRC.Core.ApiModelVRC.Core.ApiModel.SupportedPlatformsVRC.Core.APIResponseHandlerVRC.Dynamics.PhysBoneManager.BoneVRC.Dynamics.PhysBoneManager.ChainVRC.Dynamics.PhysBoneManager.PhysBoneJobVRC.Dynamics.PhysBoneManager.PoseVRC.Dynamics.VRCPhysBoneBaseVRC.SDK3.Dynamics.PhysBone.VRCPhysBoneEditorVRC.Udon.ClientBindings.UdonClientInterfaceVRC.Udon.Security.UnityEngineObjectSecurityBlacklist
UdonManager にはパブリックSDK APIの一部となる部分も含まれますが、直接使用することを意図していない「禁止リスト(banlisted)」のメソッドに対して変更が行われています。
最終更新: