リリース 3.2.0
概要
DataContainers、PhysBones 1.1(「Squishy PhysBones」)、AsyncGPUReadbackなどが追加されました。
機能
DataContainers! Udon向けのリスト、辞書、そしてJSONです!
- DataListsとDataDictionariesを追加し、Udonにリストや辞書と同様の機能をもたらしました。
- リストと辞書は通常ジェネリクスをサポートする必要がありますが、Udonはそれをサポートしていないため、あらゆる値を格納できるDataTokensにデータを格納することでこれを実現しています。
- JSON文字列(リモート文字列読み込みで受信したものなど)をDataListsやDataDictionariesに変換、またはその逆を行うヘルパークラス、VRCJSONを追加しました。
- 詳細はData Containers / VRCJSONのドキュメントページを参照してください。
- DataListsとDataDictionariesを追加し、Udonにリストや辞書と同様の機能をもたらしました。
AsyncGPUReadback! 重いパフォーマンス負荷をかけずにGPUやシェーダーからデータを読み戻すことができるようになりました。
VRCAsyncGPUReadback.Request関数および対応するOnAsyncGpuReadbackCompleteイベントを追加しました。- これらを使用することで、パフォーマンスへの影響を抑えつつGPUからCPUメモリへデータを読み取ることができます。ただし、その代償としてデータ取得が1フレーム以上遅延します。
- 詳細については、ASyncGPUReadback のドキュメントをご確認ください。
改善点
- Squishy PhysBones! 伸ばすだけでなく、「つぶれる」あるいは「圧縮される」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 Squishvalue has been added. これはボーンがどの程度縮むことができるかの割合です。_Squishパラメータが追加されました。これは_Stretchパラメータと同様に動作します。
- PhysBones 1.1:
Stretch Motionvalue has been added. これは、ボーンの伸縮に対して動きがどの程度影響するかを示す比率です。 - VRCPhysBoneコンポーネントのUIにおいて、各値のカテゴリを折りたためるようになりました。
- 各カテゴリにはヘルプボタンも含まれており、その項目に関するオンラインドキュメントにアクセスできます。
- PhysBonesのドキュメントは、PhysBones 1.1およびSquishy PhysBonesのオープンベータ期間中に更新されます。
- Network ID Utility がアバタープロジェクト内の PhysBones に対応しました。
- このツールを使用すると、PC用とQuest用のアバターで GameObject の階層構造が異なる場合でも、PhysBones を同期させることができます。
- この高度なツールは、PC用アバターとQuest用アバターで階層構造が異なる場合にのみ役立ちます!
- なぜこれが必要なのか分からない場合は、このツールについて気にする必要はありません。
- 詳細については、完全なドキュメントを参照してください
- このツールを使用すると、PC用とQuest用のアバターで GameObject の階層構造が異なる場合でも、PhysBones を同期させることができます。
3.2.0-beta.1 以降の変更点
- 削除されていたいくつかのパブリックメソッドを再追加しました(
GetOrAddComponentを含む)。- これらには現在
[Obsolete]が付与されています。将来的に完全に削除される予定ですので、今のうちに移行を済ませておいてください。
- これらには現在
- UnityでPhysBoneをつかむ際のいくつかの問題を修正しました。
- PhysBoneの伸縮がクランプされなくなりました。
- これにより、以前の挙動に戻ります。
- DataContainers:
Addを使用した後にGetKeysとGetValuesが誤った値を返す問題を修正しました
SDK APIの変更
現在、SDKの「パブリックAPI」のドキュメント作成に取り組んでいます。この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)
Assembly Move
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.UnityEngineObjectSecurityBlacklistUdonManagerにはパブリックSDK APIの一部となる箇所がありますが、直接使用することを意図していない「禁止リスト(banlisted)」のメソッドに変更が加えられました。
