From 0f191e5e8fe623ebe09d113e57599e81ed1f56d9 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Thu, 5 Sep 2024 15:27:29 +0900 Subject: [PATCH] =?UTF-8?q?vrm-0.x=20=E3=81=AE=20fastspringbone=20?= =?UTF-8?q?=E3=81=AE=E5=87=A6=E7=90=86=E3=81=AF=E3=80=81=20vrm-1.0=20?= =?UTF-8?q?=E7=89=88=E3=81=A8=E5=90=8C=E3=81=98=E3=82=82=E3=81=AE=E3=82=92?= =?UTF-8?q?=E4=BD=BF=E3=81=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SpringBoneJobs}/FastSpringBoneDisposer.cs | 5 +- .../FastSpringBoneDisposer.cs.meta | 0 .../FastSpringBoneScheduler.cs | 36 ++--- .../FastSpringBoneScheduler.cs.meta | 0 .../Runtime/FastSpringBone/Blittables.meta | 8 - .../Blittables/BlittableCollider.cs | 20 --- .../Blittables/BlittableCollider.cs.meta | 3 - .../Blittables/BlittableColliderGroup.cs | 20 --- .../Blittables/BlittableColliderGroup.cs.meta | 3 - .../Blittables/BlittableColliderGroups.cs | 34 ---- .../BlittableColliderGroups.cs.meta | 3 - .../Blittables/BlittableColliders.cs | 19 --- .../Blittables/BlittableColliders.cs.meta | 3 - .../Blittables/BlittablePoint.cs | 149 ------------------ .../Blittables/BlittablePoint.cs.meta | 3 - .../Blittables/BlittablePoints.cs | 23 --- .../Blittables/BlittablePoints.cs.meta | 3 - .../Blittables/BlittableRootBone.cs | 64 -------- .../Blittables/BlittableRootBone.cs.meta | 3 - .../Blittables/BlittableTransform.cs | 72 --------- .../Blittables/BlittableTransform.cs.meta | 3 - .../Runtime/FastSpringBone/Components.meta | 8 - .../Components/FastSpringBoneColliderGroup.cs | 31 ---- .../FastSpringBoneColliderGroup.cs.meta | 3 - .../Components/FastSpringBoneScheduler.cs | 100 ------------ .../Components/FastSpringRootBone.cs | 124 --------------- .../Components/FastSpringRootBone.cs.meta | 3 - .../FastSpringBone/FastSpringBone.asmdef | 21 --- .../FastSpringBone/FastSpringBone.asmdef.meta | 7 - .../FastSpringBone/NativeWrappers.meta | 8 - .../NativeWrappers/NativeColliderGroup.cs | 31 ---- .../NativeColliderGroup.cs.meta | 3 - .../NativeWrappers/NativeColliderGroups.cs | 78 --------- .../NativeColliderGroups.cs.meta | 3 - .../NativeWrappers/NativePointer.cs | 35 ---- .../NativeWrappers/NativePointer.cs.meta | 3 - .../NativeWrappers/NativePoints.cs | 39 ----- .../NativeWrappers/NativePoints.cs.meta | 3 - .../NativeWrappers/NativeTransform.cs | 43 ----- .../NativeWrappers/NativeTransform.cs.meta | 3 - .../Runtime/FastSpringBone/Registries.meta | 8 - .../Registries/ColliderGroupRegistry.cs | 8 - .../Registries/ColliderGroupRegistry.cs.meta | 3 - .../FastSpringBone/Registries/Registry.cs | 28 ---- .../Registries/Registry.cs.meta | 3 - .../Registries/RootBoneRegistry.cs | 12 -- .../Registries/RootBoneRegistry.cs.meta | 3 - .../Registries/TransformRegistry.cs | 60 ------- .../Registries/TransformRegistry.cs.meta | 3 - .../TransformSynchronizationType.cs | 8 - .../TransformSynchronizationType.cs.meta | 3 - .../Runtime/FastSpringBone/Schedulers.meta | 8 - .../Schedulers/PullTransformJobScheduler.cs | 119 -------------- .../PullTransformJobScheduler.cs.meta | 3 - .../Schedulers/PushTransformJobScheduler.cs | 119 -------------- .../PushTransformJobScheduler.cs.meta | 3 - .../UpdateSpringBoneJobScheduler.cs | 113 ------------- .../UpdateSpringBoneJobScheduler.cs.meta | 3 - .../SpringBone/FastSpringBoneReplacer.cs | 130 --------------- .../SpringBone/FastSpringBoneService.cs | 54 ------- .../Jobs.meta} | 2 +- .../SpringBone/Jobs/FastSpringBoneReplacer.cs | 97 ++++++++++++ .../{ => Jobs}/FastSpringBoneReplacer.cs.meta | 0 .../SpringBone/Jobs/FastSpringBoneService.cs | 73 +++++++++ .../{ => Jobs}/FastSpringBoneService.cs.meta | 0 Assets/VRM/Runtime/VRM.asmdef | 5 +- .../FastSpringBoneScheduler.cs.meta | 11 -- .../VRM10/Runtime/FastSpringBone/System.meta | 8 - .../System/CopyToNativeArrayTransformJob.cs | 33 ---- .../CopyToNativeArrayTransformJob.cs.meta | 11 -- .../VRM.Samples.SimpleViewer.asmdef | 3 +- Assets/VRM_Samples/SimpleViewer/ViewerUI.cs | 10 +- 72 files changed, 204 insertions(+), 1760 deletions(-) rename Assets/{VRM/Runtime/SpringBone => UniGLTF/Runtime/SpringBoneJobs}/FastSpringBoneDisposer.cs (94%) rename Assets/{VRM/Runtime/SpringBone => UniGLTF/Runtime/SpringBoneJobs}/FastSpringBoneDisposer.cs.meta (100%) rename Assets/{VRM10/Runtime/FastSpringBone => UniGLTF/Runtime/SpringBoneJobs}/FastSpringBoneScheduler.cs (67%) rename Assets/{VRM/Runtime/FastSpringBone/Components => UniGLTF/Runtime/SpringBoneJobs}/FastSpringBoneScheduler.cs.meta (100%) delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableCollider.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableCollider.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroup.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroup.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroups.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroups.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliders.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliders.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoint.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoint.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoints.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoints.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableRootBone.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableRootBone.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableTransform.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableTransform.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Components.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Components/FastSpringBoneColliderGroup.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Components/FastSpringBoneColliderGroup.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Components/FastSpringBoneScheduler.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Components/FastSpringRootBone.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Components/FastSpringRootBone.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/FastSpringBone.asmdef delete mode 100644 Assets/VRM/Runtime/FastSpringBone/FastSpringBone.asmdef.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/NativeWrappers.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroup.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroup.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroups.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroups.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePointer.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePointer.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePoints.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePoints.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeTransform.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeTransform.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Registries.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Registries/ColliderGroupRegistry.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Registries/ColliderGroupRegistry.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Registries/Registry.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Registries/Registry.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Registries/RootBoneRegistry.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Registries/RootBoneRegistry.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Registries/TransformRegistry.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Registries/TransformRegistry.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Registries/TransformSynchronizationType.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Registries/TransformSynchronizationType.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Schedulers.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Schedulers/PullTransformJobScheduler.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Schedulers/PullTransformJobScheduler.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Schedulers/PushTransformJobScheduler.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Schedulers/PushTransformJobScheduler.cs.meta delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Schedulers/UpdateSpringBoneJobScheduler.cs delete mode 100644 Assets/VRM/Runtime/FastSpringBone/Schedulers/UpdateSpringBoneJobScheduler.cs.meta delete mode 100644 Assets/VRM/Runtime/SpringBone/FastSpringBoneReplacer.cs delete mode 100644 Assets/VRM/Runtime/SpringBone/FastSpringBoneService.cs rename Assets/VRM/Runtime/{FastSpringBone.meta => SpringBone/Jobs.meta} (77%) create mode 100644 Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneReplacer.cs rename Assets/VRM/Runtime/SpringBone/{ => Jobs}/FastSpringBoneReplacer.cs.meta (100%) create mode 100644 Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneService.cs rename Assets/VRM/Runtime/SpringBone/{ => Jobs}/FastSpringBoneService.cs.meta (100%) delete mode 100644 Assets/VRM10/Runtime/FastSpringBone/FastSpringBoneScheduler.cs.meta delete mode 100644 Assets/VRM10/Runtime/FastSpringBone/System.meta delete mode 100644 Assets/VRM10/Runtime/FastSpringBone/System/CopyToNativeArrayTransformJob.cs delete mode 100644 Assets/VRM10/Runtime/FastSpringBone/System/CopyToNativeArrayTransformJob.cs.meta diff --git a/Assets/VRM/Runtime/SpringBone/FastSpringBoneDisposer.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneDisposer.cs similarity index 94% rename from Assets/VRM/Runtime/SpringBone/FastSpringBoneDisposer.cs rename to Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneDisposer.cs index ce0a464d1..f4475e4f6 100644 --- a/Assets/VRM/Runtime/SpringBone/FastSpringBoneDisposer.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneDisposer.cs @@ -2,7 +2,8 @@ using System; using System.Collections.Generic; using UnityEngine; -namespace VRM + +namespace UniGLTF.SpringBoneJobs { /// /// FastSpringBoneに関連して、特定のGameObjectと紐付いたIDisposableの破棄を担当するクラス @@ -15,7 +16,7 @@ namespace VRM { _disposables.Add(disposable); } - + private void OnDestroy() { foreach (var disposable in _disposables) diff --git a/Assets/VRM/Runtime/SpringBone/FastSpringBoneDisposer.cs.meta b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneDisposer.cs.meta similarity index 100% rename from Assets/VRM/Runtime/SpringBone/FastSpringBoneDisposer.cs.meta rename to Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneDisposer.cs.meta diff --git a/Assets/VRM10/Runtime/FastSpringBone/FastSpringBoneScheduler.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneScheduler.cs similarity index 67% rename from Assets/VRM10/Runtime/FastSpringBone/FastSpringBoneScheduler.cs rename to Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneScheduler.cs index 207672c08..cbdc158b8 100644 --- a/Assets/VRM10/Runtime/FastSpringBone/FastSpringBoneScheduler.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneScheduler.cs @@ -1,10 +1,9 @@ -using System; -using UniGLTF.SpringBoneJobs; +using System; using Unity.Jobs; -using UnityEngine; using UnityEngine.Jobs; -namespace UniVRM10.FastSpringBones + +namespace UniGLTF.SpringBoneJobs { public sealed class FastSpringBoneScheduler : IDisposable { @@ -14,20 +13,24 @@ namespace UniVRM10.FastSpringBones _bufferCombiner = bufferCombiner; } + public void Dispose() + { + _bufferCombiner.Dispose(); + } + public JobHandle Schedule(float deltaTime) { - var handle = default(JobHandle); - handle = _bufferCombiner.ReconstructIfDirty(handle); + var handle = _bufferCombiner.ReconstructIfDirty(default); if (!_bufferCombiner.HasBuffer) { return handle; } - + handle = new PullTransformJob - { - Transforms = _bufferCombiner.Transforms - }.Schedule(_bufferCombiner.TransformAccessArray, handle); - + { + Transforms = _bufferCombiner.Transforms + }.Schedule(_bufferCombiner.TransformAccessArray, handle); + handle = new UpdateFastSpringBoneJob { Colliders = _bufferCombiner.Colliders, @@ -39,16 +42,11 @@ namespace UniVRM10.FastSpringBones }.Schedule(_bufferCombiner.Springs.Length, 1, handle); handle = new PushTransformJob - { - Transforms = _bufferCombiner.Transforms - }.Schedule(_bufferCombiner.TransformAccessArray, handle); + { + Transforms = _bufferCombiner.Transforms + }.Schedule(_bufferCombiner.TransformAccessArray, handle); return handle; } - - public void Dispose() - { - _bufferCombiner.Dispose(); - } } } \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringBoneScheduler.cs.meta b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneScheduler.cs.meta similarity index 100% rename from Assets/VRM/Runtime/FastSpringBone/Components/FastSpringBoneScheduler.cs.meta rename to Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneScheduler.cs.meta diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables.meta b/Assets/VRM/Runtime/FastSpringBone/Blittables.meta deleted file mode 100644 index f41a4746d..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b2c4f2f05fcb4fb49be96d3b99236983 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableCollider.cs b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableCollider.cs deleted file mode 100644 index 351806a00..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableCollider.cs +++ /dev/null @@ -1,20 +0,0 @@ -using UnityEngine; - -namespace VRM.FastSpringBones.Blittables -{ - /// - /// VRMSpringBoneのSphereColliderをBlittableにしたもの - /// 位置情報は親であるColliderGroupが持つ - /// - public readonly struct BlittableCollider - { - public Vector3 Offset { get; } - public float Radius { get; } - - public BlittableCollider(Vector3 offset, float radius) - { - Offset = offset; - Radius = radius; - } - } -} \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableCollider.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableCollider.cs.meta deleted file mode 100644 index be5b7aec3..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableCollider.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: cc94117758e24aca9cf44d3f930fdcb0 -timeCreated: 1550209189 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroup.cs b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroup.cs deleted file mode 100644 index a53c1ab79..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroup.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Unity.Collections; -using Unity.Collections.LowLevel.Unsafe; - -namespace VRM.FastSpringBones.Blittables -{ - /// - /// VRMSpringBoneのColliderGroupをBlittableにしたもの - /// - public readonly struct BlittableColliderGroup - { - public BlittableColliders Colliders { get; } - public unsafe BlittableTransform* Transform { get; } - - public unsafe BlittableColliderGroup(NativeArray colliders, BlittableTransform* transform) - { - Colliders = new BlittableColliders((BlittableCollider*)colliders.GetUnsafePtr(), colliders.Length); - Transform = transform; - } - } -} \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroup.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroup.cs.meta deleted file mode 100644 index 64eb463ac..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroup.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 9bceae7ad8eb4021912778484d1b2ebc -timeCreated: 1550223602 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroups.cs b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroups.cs deleted file mode 100644 index e8eb037bc..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroups.cs +++ /dev/null @@ -1,34 +0,0 @@ -using UnityEngine; - -namespace VRM.FastSpringBones.Blittables -{ - /// - /// BlittableColliderGroupのポインタの配列 - /// - public readonly unsafe struct BlittableColliderGroups - { - private readonly BlittableColliderGroup* _data; - public int Length { get; } - - public BlittableColliderGroup this[int i] => _data[i]; - - public void DrawGizmos() - { - for (var i = 0; i < Length; i++) - { - var group = this[i]; - var colliders = group.Colliders; - for (var j = 0; j < colliders.Count; ++j) - { - Gizmos.DrawWireSphere(group.Transform->WorldPosition, colliders[j].Radius); - } - } - } - - public BlittableColliderGroups(BlittableColliderGroup* data, int length) - { - _data = data; - Length = length; - } - } -} \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroups.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroups.cs.meta deleted file mode 100644 index 4c768f0d9..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliderGroups.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 61f56040664345a8aba5309e7714f8f2 -timeCreated: 1550563011 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliders.cs b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliders.cs deleted file mode 100644 index adbc4d739..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliders.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace VRM.FastSpringBones.Blittables -{ - /// - /// BlittableColliderのポインタの配列 - /// - public unsafe struct BlittableColliders - { - private readonly BlittableCollider* _colliders; - public int Count { get; } - - public BlittableCollider this[int i] => _colliders[i]; - - public BlittableColliders(BlittableCollider* colliders, int count) - { - _colliders = colliders; - Count = count; - } - } -} \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliders.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliders.cs.meta deleted file mode 100644 index b93aac749..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableColliders.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 07087baebec34286ac230d58cd0163d2 -timeCreated: 1550562383 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoint.cs b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoint.cs deleted file mode 100644 index d0d4a5cdf..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoint.cs +++ /dev/null @@ -1,149 +0,0 @@ -using UnityEngine; - -namespace VRM.FastSpringBones.Blittables -{ - /// - /// VRMSpringBoneLogicをBlittableにしたもの - /// ベルレ積分など、コアな計算を行う - /// - public unsafe struct BlittablePoint - { - private readonly float _length; - private readonly Quaternion _localRotation; - private readonly Vector3 _boneAxis; - private readonly float _radius; - private Vector3 _prevPosition; - - private readonly BlittableColliderGroups* _blittableColliderGroups; - private readonly BlittableTransform* _center; - - public Vector3 CurrentPosition { get; private set; } - - private readonly BlittableTransform* _transform; - - public BlittablePoint( - Transform transform, - float radius, - BlittableTransform* center, - BlittableColliderGroups* blittableColliderGroups, - BlittableTransform* blittableTransform) - { - Vector3 localPosition; - if (transform.childCount == 0) - { - var delta = transform.position - transform.parent.position; - var childPosition = transform.position + delta.normalized * 0.07f; - localPosition = transform.worldToLocalMatrix.MultiplyPoint(childPosition); - } - else - { - var firstChild = transform.GetChild(0); - var scale = firstChild.lossyScale; - localPosition = firstChild.localPosition; - localPosition.x *= scale.x; - localPosition.y *= scale.y; - localPosition.z *= scale.z; - } - - var worldChildPosition = (Vector3)transform.TransformPoint(localPosition); - _prevPosition = CurrentPosition = center != null ? center->LocalToWorld.inverse.MultiplyPoint3x4(worldChildPosition) : worldChildPosition; - - _localRotation = transform.localRotation; - _boneAxis = localPosition.normalized; - _length = localPosition.magnitude; - _radius = radius; - _blittableColliderGroups = blittableColliderGroups; - _transform = blittableTransform; - _center = center; - } - - public void Update(float stiffnessForce, float dragForce, Vector3 external) - { - // 親のRotationが変わっている可能性があるので更新する - _transform->UpdateLocalToWorldMatrix(); - - Vector3 currentPosition; - Vector3 prevPosition; - - if (_center == null) - { - currentPosition = CurrentPosition; - prevPosition = _prevPosition; - } - else - { - var centerLocalToWorld = _center->LocalToWorld; - currentPosition = centerLocalToWorld.MultiplyPoint3x4(CurrentPosition); - prevPosition = centerLocalToWorld.MultiplyPoint3x4(_prevPosition); - } - - // verlet積分で次の位置を計算 - var nextPosition = currentPosition - + (currentPosition - prevPosition) * (1.0f - dragForce) // 前フレームの移動を継続する(減衰もあるよ) - + _transform->ParentWorldRotation * _localRotation * _boneAxis * stiffnessForce // 親の回転による子ボーンの移動目標 - + external; // 外力による移動量 - - // 長さをboneLengthに強制 - var position = _transform->WorldPosition; - nextPosition = position + (nextPosition - position).normalized * _length; - - nextPosition = Collision(nextPosition, position); - - if (_center == null) - { - _prevPosition = currentPosition; - CurrentPosition = nextPosition; - } - else - { - var centerWorldToLocal = _center->LocalToWorld.inverse; - _prevPosition = centerWorldToLocal.MultiplyPoint3x4(currentPosition); - CurrentPosition = centerWorldToLocal.MultiplyPoint3x4(nextPosition); - } - - //回転を適用 - _transform->SetWorldRotation(ApplyRotation(nextPosition)); - } - - private Vector3 Collision(Vector3 nextPosition, Vector3 position) - { - for (var i = 0; i < _blittableColliderGroups->Length; ++i) - { - var colliderGroup = (*_blittableColliderGroups)[i]; - - for (var j = 0; j < colliderGroup.Colliders.Count; ++j) - { - var collider = colliderGroup.Colliders[j]; - var colliderPosition = colliderGroup.Transform->TransformPoint(collider.Offset); - var r = _radius + collider.Radius; - - if (!((nextPosition - colliderPosition).sqrMagnitude <= (r * r))) continue; - - // ヒット。Colliderの半径方向に押し出す - var normal = (nextPosition - colliderPosition).normalized; - var posFromCollider = colliderPosition + normal * (_radius + collider.Radius); - - // 長さをboneLengthに強制 - nextPosition = position + (posFromCollider - position).normalized * _length; - } - } - return nextPosition; - } - - private static Quaternion FromToRotation(Vector3 from, Vector3 to) - => Quaternion.AngleAxis( - angle: Mathf.Acos(Mathf.Clamp(Vector3.Dot(from.normalized, to.normalized), -1f, 1f)) * Mathf.Rad2Deg, - axis: Vector3.Cross(from, to).normalized - ); - - private Quaternion ApplyRotation(Vector3 nextTail) - { - var rotation = _transform->ParentWorldRotation * _localRotation; - return - FromToRotation( - rotation * _boneAxis, - nextTail - _transform->WorldPosition) * - rotation; - } - } -} diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoint.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoint.cs.meta deleted file mode 100644 index 2e93186cc..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoint.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: f3f0fc54e34944c892cec2b1e86de7d7 -timeCreated: 1549430605 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoints.cs b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoints.cs deleted file mode 100644 index 8a91baf39..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoints.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace VRM.FastSpringBones.Blittables -{ - /// - /// BlittablePointのポインタの配列 - /// - public unsafe struct BlittablePoints - { - private readonly BlittablePoint* _points; - public int Count { get; } - - public BlittablePoint this[int i] - { - get => _points[i]; - set => _points[i] = value; - } - - public BlittablePoints(BlittablePoint* points, int count) - { - _points = points; - Count = count; - } - } -} \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoints.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoints.cs.meta deleted file mode 100644 index a2653992c..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittablePoints.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 0c39cdb389d141bbb084030dd8ebfe8b -timeCreated: 1550721598 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableRootBone.cs b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableRootBone.cs deleted file mode 100644 index 81753210d..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableRootBone.cs +++ /dev/null @@ -1,64 +0,0 @@ -using UnityEngine; - -namespace VRM.FastSpringBones.Blittables -{ - /// - /// 1本の毛束を示すBlittable型 - /// - public unsafe readonly struct BlittableRootBone - { - private readonly float _gravityPower; - private readonly Vector3 _gravityDir; - private readonly float _dragForce; - private readonly float _stiffnessForce; - private readonly BlittablePoints* _blittablePoints; - - public void DrawGizmos() - { - for (var i = 0; i < _blittablePoints->Count; i++) - { - var point = (*_blittablePoints)[i]; - Gizmos.DrawWireSphere(point.CurrentPosition, 0.05f); - } - for (var i = 0; i < _blittablePoints->Count - 1; i++) - { - var point1 = (*_blittablePoints)[i]; - var point2 = (*_blittablePoints)[i + 1]; - Gizmos.DrawLine(point1.CurrentPosition, point2.CurrentPosition); - } - } - - public BlittableRootBone( - float gravityPower, - Vector3 gravityDir, - float dragForce, - float stiffnessForce, - BlittablePoints* blittablePoints) - { - _gravityPower = gravityPower; - _gravityDir = gravityDir; - _dragForce = dragForce; - _stiffnessForce = stiffnessForce; - _blittablePoints = blittablePoints; - } - - public void Update(float deltaTime) - { - var stiffness = _stiffnessForce * deltaTime; - var external = _gravityDir * (_gravityPower * deltaTime); - for (var i = 0; i < _blittablePoints->Count; i++) - { - var point = (*_blittablePoints)[i]; - - // Pointを更新 - point.Update( - stiffness, - _dragForce, - external - ); - - (*_blittablePoints)[i] = point; - } - } - } -} \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableRootBone.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableRootBone.cs.meta deleted file mode 100644 index dbba64284..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableRootBone.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: bc470487e0a546f087709dbab3c7a6f1 -timeCreated: 1549952425 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableTransform.cs b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableTransform.cs deleted file mode 100644 index b2e4f9947..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableTransform.cs +++ /dev/null @@ -1,72 +0,0 @@ -using UnityEngine; -using UnityEngine.Jobs; - -namespace VRM.FastSpringBones.Blittables -{ - /// - /// Transformの必要な機能だけを絞り、Blittableに対応させたクラス - /// - public unsafe struct BlittableTransform - { - private readonly BlittableTransform* _parent; - private Quaternion _worldRotation; - private Vector3 _localPosition; - private Vector3 _localScale; - private Quaternion _localRotation; - private Matrix4x4 _localToWorld; - - public Vector3 WorldPosition { get; private set; } - - public void SetWorldRotation(Quaternion rotation) - { - var parentWorldRotation = ParentWorldRotation; - _localRotation = Quaternion.Inverse(parentWorldRotation) * rotation; - UpdateLocalToWorldMatrix(); - } - - public Matrix4x4 LocalToWorld => _localToWorld; - - private Matrix4x4 LocalTransform => Matrix4x4.TRS(_localPosition, _localRotation, _localScale); - - public Quaternion ParentWorldRotation => _parent != null ? _parent->_worldRotation : Quaternion.identity; - - public BlittableTransform(BlittableTransform* parent, Transform transform) - { - _parent = parent; - - WorldPosition = transform.position; - _worldRotation = transform.rotation; - _localPosition = transform.localPosition; - _localRotation = transform.localRotation; - _localScale = transform.localScale; - - _localToWorld = transform.localToWorldMatrix; - } - - public void PullFrom(TransformAccess transform) - { - WorldPosition = transform.position; - _worldRotation = transform.rotation; - _localPosition = transform.localPosition; - _localRotation = transform.localRotation; - _localScale = transform.localScale; - - _localToWorld = transform.localToWorldMatrix; - } - - public void PushTo(TransformAccess transform) - { - transform.localPosition = _localPosition; - transform.localRotation = _localRotation; - } - - public Vector3 TransformPoint(Vector3 offset) => _localToWorld.MultiplyPoint3x4(offset); - - public void UpdateLocalToWorldMatrix() - { - _localToWorld = _parent == null ? LocalTransform : _parent->_localToWorld * LocalTransform; - WorldPosition = _localToWorld.MultiplyPoint3x4(Vector3.zero); - _worldRotation = _localToWorld.rotation; - } - } -} diff --git a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableTransform.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableTransform.cs.meta deleted file mode 100644 index e5f912161..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Blittables/BlittableTransform.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: bffbbf422e984d028cd82c11f2ca00b1 -timeCreated: 1550544819 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Components.meta b/Assets/VRM/Runtime/FastSpringBone/Components.meta deleted file mode 100644 index 8560bc54d..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Components.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 89d63c6c8787b9a4c80df0fb18aa3d43 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringBoneColliderGroup.cs b/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringBoneColliderGroup.cs deleted file mode 100644 index b5fe7be3b..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringBoneColliderGroup.cs +++ /dev/null @@ -1,31 +0,0 @@ -using UnityEngine; -using VRM.FastSpringBones.Blittables; -using VRM.FastSpringBones.NativeWrappers; -using VRM.FastSpringBones.Registries; - -namespace VRM.FastSpringBones.Components -{ - /// - /// VRMSpringBoneColliderGroupに対応したクラス - /// バッファの作成も行う - /// - public sealed unsafe class FastSpringBoneColliderGroup : MonoBehaviour - { - private NativeTransform _nativeTransform; - private NativeColliderGroup _nativeColliderGroup; - - public BlittableColliderGroup* ColliderGroupPtr => _nativeColliderGroup.GetUnsafePtr(); - - public void Initialize(TransformRegistry transformRegistry, BlittableCollider[] colliders) - { - _nativeTransform = new NativeTransform(transformRegistry, TransformSynchronizationType.PullOnly, transform); - _nativeColliderGroup = new NativeColliderGroup(colliders, _nativeTransform); - } - - private void OnDestroy() - { - _nativeTransform?.Dispose(); - _nativeColliderGroup?.Dispose(); - } - } -} diff --git a/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringBoneColliderGroup.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringBoneColliderGroup.cs.meta deleted file mode 100644 index ef47a8fc6..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringBoneColliderGroup.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 2c6ab135b4b945ee9d75c5476ea6bcc0 -timeCreated: 1550213674 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringBoneScheduler.cs b/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringBoneScheduler.cs deleted file mode 100644 index fc125b062..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringBoneScheduler.cs +++ /dev/null @@ -1,100 +0,0 @@ -using Unity.Jobs; -using UnityEngine; -using UnityEngine.Profiling; -using VRM.FastSpringBones.Registries; -using VRM.FastSpringBones.Schedulers; - -namespace VRM.FastSpringBones.Components -{ - /// - /// Jobを連続して発火させるComponent - /// シーンに1つだけあればいい - /// - [DefaultExecutionOrder(11000)] - public sealed class FastSpringBoneScheduler : MonoBehaviour - { - [SerializeField] private bool showGizmos; - - private CustomSampler _updateSampler; - - private PullTransformJobScheduler _pullTransformJobScheduler; - private PushTransformJobScheduler _pushTransformJobScheduler; - private UpdateSpringBoneJobScheduler _updateSpringBoneJobScheduler; - - private RootBoneRegistry _rootBoneRegistry; - private ColliderGroupRegistry _colliderGroupRegistry; - - private JobHandle _prevJobHandle; - - public bool ShowGizmos { get => showGizmos; set => showGizmos = value; } - - public void Initialize( - RootBoneRegistry rootBoneRegistry, - TransformRegistry transformRegistry, - ColliderGroupRegistry colliderGroupRegistry) - { - _rootBoneRegistry = rootBoneRegistry; - _colliderGroupRegistry = colliderGroupRegistry; - - _updateSampler = CustomSampler.Create("FastSpringBone(Update)"); - - _pullTransformJobScheduler = new PullTransformJobScheduler(transformRegistry); - _pushTransformJobScheduler = new PushTransformJobScheduler(transformRegistry); - _updateSpringBoneJobScheduler = new UpdateSpringBoneJobScheduler(_rootBoneRegistry); - - _rootBoneRegistry.SubscribeOnValueChanged(OnRootBoneChanged); - } - - private void OnDestroy() - { - _rootBoneRegistry.UnSubscribeOnValueChanged(OnRootBoneChanged); - _prevJobHandle.Complete(); - - _pullTransformJobScheduler.Dispose(); - _pushTransformJobScheduler.Dispose(); - _updateSpringBoneJobScheduler.Dispose(); - } - - private void OnRootBoneChanged() - { - _prevJobHandle.Complete(); - } - -#if UNITY_EDITOR - private void OnDrawGizmos() - { - if (!ShowGizmos) return; - - _prevJobHandle.Complete(); - - Gizmos.color = Color.blue; - foreach (var rootBoneWrapper in _rootBoneRegistry.Items) - { - rootBoneWrapper.Value.DrawGizmos(); - } - - Gizmos.color = Color.yellow; - foreach (var colliderGroup in _colliderGroupRegistry.Items) - { - colliderGroup.DrawGizmos(); - } - } -#endif - - private void LateUpdate() - { - _updateSampler.Begin(); - - _prevJobHandle.Complete(); - - var tempJobHandle = default(JobHandle); - tempJobHandle = _pullTransformJobScheduler.Schedule(tempJobHandle); - tempJobHandle = _updateSpringBoneJobScheduler.Schedule(tempJobHandle); - tempJobHandle = _pushTransformJobScheduler.Schedule(tempJobHandle); - - _prevJobHandle = tempJobHandle; - - _updateSampler.End(); - } - } -} \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringRootBone.cs b/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringRootBone.cs deleted file mode 100644 index a6ec42ece..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringRootBone.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEngine; -using VRM.FastSpringBones.Blittables; -using VRM.FastSpringBones.NativeWrappers; -using VRM.FastSpringBones.Registries; - -namespace VRM.FastSpringBones.Components -{ - /// - /// SpringBoneの1本の毛束の処理を担当するクラス - /// - public sealed class FastSpringRootBone : IDisposable - { - private readonly TransformRegistry _transformRegistry; - private readonly RootBoneRegistry _rootBoneRegistry; - private readonly ColliderGroupRegistry _colliderGroupRegistry; - private readonly Transform _transform; - - private float _radius; - private NativeTransform _center; - - private IReadOnlyDictionary _transformIndexMap; - private NativeColliderGroups _nativeColliderGroups; - - private NativePoints _nativePoints; - private NativePointer _rootBoneWrapper; - - private readonly IList _transformWrappers = new List(); - private readonly IList> _points = new List>(); - - public FastSpringRootBone( - TransformRegistry transformRegistry, - Transform transform, - RootBoneRegistry rootBoneRegistry, - ColliderGroupRegistry colliderGroupRegistry - ) - { - _transformRegistry = transformRegistry; - _transform = transform; - _rootBoneRegistry = rootBoneRegistry; - _colliderGroupRegistry = colliderGroupRegistry; - } - - public IReadOnlyList ColliderGroups - { - get => _nativeColliderGroups.ColliderGroups; - set => _nativeColliderGroups.ColliderGroups = value; - } - - public unsafe void Initialize( - float gravityPower, - Vector3 gravityDir, - float dragForce, - float stiffnessForce, - IReadOnlyList colliderGroups, - float radius, - Transform center) - { - _radius = radius; - if (center != null) - { - _center = new NativeTransform(_transformRegistry, TransformSynchronizationType.PullOnly, center); - } - - _nativeColliderGroups = new NativeColliderGroups(colliderGroups); - - NativeTransform parent = null; - if (_transform.parent) - { - parent = new NativeTransform(_transformRegistry, TransformSynchronizationType.PullOnly, _transform.parent); - } - SetupRecursive(_transform, parent); - - _nativePoints = new NativePoints(_points); - - _rootBoneWrapper = new NativePointer(new BlittableRootBone(gravityPower, gravityDir, dragForce, stiffnessForce, _nativePoints.GetUnsafePtr())); - _rootBoneRegistry.Register(_rootBoneWrapper); - _colliderGroupRegistry.Register(_nativeColliderGroups); - } - - public void Dispose() - { - _colliderGroupRegistry.Unregister(_nativeColliderGroups); - _rootBoneRegistry.Unregister(_rootBoneWrapper); - - foreach (var transformWrapper in _transformWrappers) - { - transformWrapper.Dispose(); - } - - foreach (var point in _points) - { - point.Dispose(); - } - - _center?.Dispose(); - _nativeColliderGroups?.Dispose(); - _nativePoints.Dispose(); - _rootBoneWrapper.Dispose(); - } - - private unsafe void SetupRecursive(Transform trs, NativeTransform parent = null) - { - var transformWrapper = new NativeTransform(_transformRegistry, TransformSynchronizationType.PushOnly, trs, parent); - _transformWrappers.Add(transformWrapper); - - var point = new NativePointer( - new BlittablePoint( - trs, - _radius, - _center != null ? _center.GetUnsafePtr() : null, - _nativeColliderGroups.GetUnsafePtr(), - transformWrapper.GetUnsafePtr()) - ); - _points.Add(point); - - for (var i = 0; i < trs.childCount; ++i) - { - SetupRecursive(trs.GetChild(i), transformWrapper); - } - } - } -} diff --git a/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringRootBone.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringRootBone.cs.meta deleted file mode 100644 index 6f9dcd2fe..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Components/FastSpringRootBone.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 24cdd60af2d54c908e84b17802bfb5bc -timeCreated: 1550036996 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/FastSpringBone.asmdef b/Assets/VRM/Runtime/FastSpringBone/FastSpringBone.asmdef deleted file mode 100644 index 43d6fca9b..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/FastSpringBone.asmdef +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "FastSpringBone", - "references": [ - "GUID:2665a8d13d1b3f18800f46e256720795" - ], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": true, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": false, - "defineConstraints": [], - "versionDefines": [ - { - "name": "com.unity.burst", - "expression": "0.0.1", - "define": "ENABLE_SPRINGBONE_BURST" - } - ], - "noEngineReferences": false -} \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/FastSpringBone.asmdef.meta b/Assets/VRM/Runtime/FastSpringBone/FastSpringBone.asmdef.meta deleted file mode 100644 index c086fa0df..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/FastSpringBone.asmdef.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: ac229b552c3025545b074203f857547c -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers.meta b/Assets/VRM/Runtime/FastSpringBone/NativeWrappers.meta deleted file mode 100644 index c09ce17be..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 96634b0bb2d12d044a21f3fdff7a2c43 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroup.cs b/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroup.cs deleted file mode 100644 index 821d7acc7..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroup.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using Unity.Collections; -using VRM.FastSpringBones.Blittables; - -namespace VRM.FastSpringBones.NativeWrappers -{ - /// - /// BlittableColliderGroupのライフサイクルを管理するWrapper - /// - public sealed unsafe class NativeColliderGroup : IDisposable - { - private readonly NativePointer _nativePointer; - - private NativeArray Colliders { get; } - - public BlittableColliderGroup* GetUnsafePtr() => _nativePointer.GetUnsafePtr(); - - public NativeColliderGroup(BlittableCollider[] colliders, NativeTransform nativeTransform) - { - Colliders = new NativeArray(colliders, Allocator.Persistent); - _nativePointer = new NativePointer(new BlittableColliderGroup(Colliders, nativeTransform.GetUnsafePtr())); - } - - public void Dispose() - { - if (Colliders.IsCreated) Colliders.Dispose(); - - _nativePointer.Dispose(); - } - } -} diff --git a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroup.cs.meta b/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroup.cs.meta deleted file mode 100644 index 64eae28a2..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroup.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 4cf2baba01384c31a1fdcca7489007f4 -timeCreated: 1550640666 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroups.cs b/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroups.cs deleted file mode 100644 index 751dfd571..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroups.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System; -using System.Collections.Generic; -using Unity.Collections; -using Unity.Collections.LowLevel.Unsafe; -using VRM.FastSpringBones.Blittables; -using VRM.FastSpringBones.Components; - -namespace VRM.FastSpringBones.NativeWrappers -{ - /// - /// BlittableColliderGroupsのライフサイクルを管理するWrapper - /// - public sealed unsafe class NativeColliderGroups : IDisposable - { - private readonly NativePointer _nativePointer = new NativePointer(); - private NativeArray _colliderGroupArray; - private IReadOnlyList _colliderGroups; - - //Disposeされた後にUpdateColliderGroupsが呼ばれるのを防ぐためのフラグ - private bool _isDisposed; - - public BlittableColliderGroups* GetUnsafePtr() => _nativePointer.GetUnsafePtr(); - public void DrawGizmos() => _nativePointer.Value.DrawGizmos(); - - public IReadOnlyList ColliderGroups - { - get => _colliderGroups; - set - { - _colliderGroups = value; - UpdateColliderGroups(); - } - } - - private void UpdateColliderGroups() - { - if (_isDisposed) return; - if (_colliderGroupArray.IsCreated) - { - _colliderGroupArray.Dispose(); - } - CreateColliderGroupArray(_colliderGroups); - UpdateData(); - } - - public NativeColliderGroups(IReadOnlyList colliderGroups) - { - _colliderGroups = colliderGroups; - UpdateColliderGroups(); - } - - public void Dispose() - { - if (_colliderGroupArray.IsCreated) - { - _colliderGroupArray.Dispose(); - _isDisposed = true; - } - _nativePointer.Dispose(); - } - - private void CreateColliderGroupArray(IReadOnlyList colliderGroups) - { - _colliderGroupArray = new NativeArray(colliderGroups.Count, Allocator.Persistent); - for (var i = 0; i < _colliderGroupArray.Length; ++i) - { - _colliderGroupArray[i] = *colliderGroups[i].ColliderGroupPtr; - } - } - - private void UpdateData() - { - _nativePointer.Value = new BlittableColliderGroups( - (BlittableColliderGroup*)_colliderGroupArray.GetUnsafePtr(), - _colliderGroupArray.Length); - } - } -} diff --git a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroups.cs.meta b/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroups.cs.meta deleted file mode 100644 index e70ff2e4e..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeColliderGroups.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 3944dc9ee4a94814bc1d333fd0b7ba82 -timeCreated: 1550645184 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePointer.cs b/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePointer.cs deleted file mode 100644 index cc42524d7..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePointer.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using Unity.Collections; -using Unity.Collections.LowLevel.Unsafe; - -namespace VRM.FastSpringBones.NativeWrappers -{ - public sealed class NativePointer : IDisposable where T : unmanaged - { - private readonly unsafe T* _unsafePtr; - - public unsafe T* GetUnsafePtr() => _unsafePtr; - - public unsafe T Value - { - get => *_unsafePtr; - set => *_unsafePtr = value; - } - - public unsafe NativePointer() - { - _unsafePtr = (T*)UnsafeUtility.Malloc(sizeof(T), 16, Allocator.Persistent); - } - - public unsafe NativePointer(T value) - { - _unsafePtr = (T*)UnsafeUtility.Malloc(sizeof(T), 16, Allocator.Persistent); - Value = value; - } - - public unsafe void Dispose() - { - UnsafeUtility.Free(_unsafePtr, Allocator.Persistent); - } - } -} diff --git a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePointer.cs.meta b/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePointer.cs.meta deleted file mode 100644 index 2d48eac46..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePointer.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 70f8b67ae2644eb999cfb45ea5bf25a3 -timeCreated: 1595316733 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePoints.cs b/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePoints.cs deleted file mode 100644 index f62b0baaf..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePoints.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Collections.Generic; -using Unity.Collections; -using Unity.Collections.LowLevel.Unsafe; -using VRM.FastSpringBones.Blittables; - -namespace VRM.FastSpringBones.NativeWrappers -{ - /// - /// BlittablePointsGroupのライフサイクルを管理するWrapper - /// - public sealed unsafe class NativePoints : IDisposable - { - private readonly NativePointer _nativePointer; - private NativeArray _buffer; - - public BlittablePoints* GetUnsafePtr() => _nativePointer.GetUnsafePtr(); - - public NativePoints(IList> points) - { - _buffer = new NativeArray(points.Count, Allocator.Persistent); - for (var i = 0; i < _buffer.Length; ++i) - { - _buffer[i] = points[i].Value; - } - - _nativePointer = new NativePointer(new BlittablePoints((BlittablePoint*) _buffer.GetUnsafePtr(), _buffer.Length)); - } - - public void Dispose() - { - if (_buffer.IsCreated) - { - _buffer.Dispose(); - } - _nativePointer.Dispose(); - } - } -} \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePoints.cs.meta b/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePoints.cs.meta deleted file mode 100644 index 0139520d7..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativePoints.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 7a8763ad7e8243d3b4001a2beb37bf9d -timeCreated: 1550723674 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeTransform.cs b/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeTransform.cs deleted file mode 100644 index 89c592c11..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeTransform.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; -using UnityEngine; -using VRM.FastSpringBones.Blittables; -using VRM.FastSpringBones.Registries; - -namespace VRM.FastSpringBones.NativeWrappers -{ - /// - /// BlittableTransformのライフサイクルを管理するWrapper - /// - public sealed class NativeTransform : IDisposable - { - private readonly NativePointer _nativePointer; - public Transform Transform { get; } - - private readonly TransformRegistry _transformRegistry; - - public unsafe BlittableTransform* GetUnsafePtr() => _nativePointer.GetUnsafePtr(); - public BlittableTransform Value => _nativePointer.Value; - - public unsafe NativeTransform( - TransformRegistry transformRegistry, - TransformSynchronizationType transformSynchronizationType, - Transform transform, - NativeTransform parent = null - ) - { - _nativePointer = new NativePointer(new BlittableTransform(parent != null ? parent.GetUnsafePtr() : null, transform)); - - Transform = transform; - - _transformRegistry = transformRegistry; - _transformRegistry.Register(this, transformSynchronizationType); - } - - public void Dispose() - { - _transformRegistry.Unregister(this); - - _nativePointer.Dispose(); - } - } -} diff --git a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeTransform.cs.meta b/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeTransform.cs.meta deleted file mode 100644 index b62050944..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/NativeWrappers/NativeTransform.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 2acc8862ffb44f4fbd4e1e03e9a9d46e -timeCreated: 1550545201 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Registries.meta b/Assets/VRM/Runtime/FastSpringBone/Registries.meta deleted file mode 100644 index b148ee1f1..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Registries.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: daa8d50bee84b0c4387d22784cce66ff -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/VRM/Runtime/FastSpringBone/Registries/ColliderGroupRegistry.cs b/Assets/VRM/Runtime/FastSpringBone/Registries/ColliderGroupRegistry.cs deleted file mode 100644 index 2af47cc47..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Registries/ColliderGroupRegistry.cs +++ /dev/null @@ -1,8 +0,0 @@ -using VRM.FastSpringBones.NativeWrappers; - -namespace VRM.FastSpringBones.Registries -{ - public sealed class ColliderGroupRegistry : Registry - { - } -} diff --git a/Assets/VRM/Runtime/FastSpringBone/Registries/ColliderGroupRegistry.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Registries/ColliderGroupRegistry.cs.meta deleted file mode 100644 index 5c1188773..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Registries/ColliderGroupRegistry.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: eec0fe3cd3694a379885fa62a9994bd5 -timeCreated: 1594963749 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Registries/Registry.cs b/Assets/VRM/Runtime/FastSpringBone/Registries/Registry.cs deleted file mode 100644 index ce0209d49..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Registries/Registry.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace VRM.FastSpringBones.Registries -{ - public class Registry - { - private readonly List _items = new List(); - private Action _onValueChanged; - - public IReadOnlyList Items => _items; - - public void Register(T value) - { - _items.Add(value); - _onValueChanged?.Invoke(); - } - - public void Unregister(T value) - { - _items.Remove(value); - _onValueChanged?.Invoke(); - } - - public void SubscribeOnValueChanged(Action action) => _onValueChanged += action; - public void UnSubscribeOnValueChanged(Action action) => _onValueChanged -= action; - } -} diff --git a/Assets/VRM/Runtime/FastSpringBone/Registries/Registry.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Registries/Registry.cs.meta deleted file mode 100644 index 5020d1e78..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Registries/Registry.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 0d3b558d03dd42b184512fe19797ff07 -timeCreated: 1595407071 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Registries/RootBoneRegistry.cs b/Assets/VRM/Runtime/FastSpringBone/Registries/RootBoneRegistry.cs deleted file mode 100644 index 8da01d254..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Registries/RootBoneRegistry.cs +++ /dev/null @@ -1,12 +0,0 @@ -using VRM.FastSpringBones.Blittables; -using VRM.FastSpringBones.NativeWrappers; - -namespace VRM.FastSpringBones.Registries -{ - /// - /// 今生きているRootBoneの一覧を返すクラス - /// - public sealed class RootBoneRegistry : Registry> - { - } -} \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Registries/RootBoneRegistry.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Registries/RootBoneRegistry.cs.meta deleted file mode 100644 index 0d07dcafc..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Registries/RootBoneRegistry.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 4609c8e2a4c64fb7b3bfa587f475e965 -timeCreated: 1550734399 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Registries/TransformRegistry.cs b/Assets/VRM/Runtime/FastSpringBone/Registries/TransformRegistry.cs deleted file mode 100644 index 05c956f2b..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Registries/TransformRegistry.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using System.Collections.Generic; -using VRM.FastSpringBones.NativeWrappers; - -namespace VRM.FastSpringBones.Registries -{ - /// - /// 今生きているTransformの一覧を返すクラス - /// - public sealed class TransformRegistry - { - private readonly List _transforms = new List(); - public IReadOnlyList Transforms => _transforms; - - private readonly List _pullTargets = new List(); - public IReadOnlyList PullTargets => _pullTargets; - - private readonly List _pushTargets = new List(); - public IReadOnlyList PushTargets => _pushTargets; - - private Action _onValueChanged; - - public void SubscribeOnValueChanged(Action action) => _onValueChanged += action; - - public void UnSubscribeOnValueChanged(Action action) => _onValueChanged -= action; - - public void Register(NativeTransform nativeTransform, TransformSynchronizationType synchronizationType) - { - _transforms.Add(nativeTransform); - switch (synchronizationType) - { - case TransformSynchronizationType.PullOnly: - _pullTargets.Add(nativeTransform); - break; - case TransformSynchronizationType.PushOnly: - _pushTargets.Add(nativeTransform); - break; - default: - throw new ArgumentOutOfRangeException(nameof(synchronizationType), synchronizationType, null); - } - _onValueChanged?.Invoke(); - } - - public void Unregister(NativeTransform nativeTransform) - { - _transforms.Remove(nativeTransform); - - if (_pullTargets.Contains(nativeTransform)) - { - _pullTargets.Remove(nativeTransform); - } - - if (_pushTargets.Contains(nativeTransform)) - { - _pushTargets.Remove(nativeTransform); - } - _onValueChanged?.Invoke(); - } - } -} \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Registries/TransformRegistry.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Registries/TransformRegistry.cs.meta deleted file mode 100644 index d0c6267e8..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Registries/TransformRegistry.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 102dd7059fb34c00a7d1d6d4f2c38729 -timeCreated: 1550666913 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Registries/TransformSynchronizationType.cs b/Assets/VRM/Runtime/FastSpringBone/Registries/TransformSynchronizationType.cs deleted file mode 100644 index bd5a34b87..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Registries/TransformSynchronizationType.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace VRM.FastSpringBones.Registries -{ - public enum TransformSynchronizationType - { - PullOnly, - PushOnly, - } -} \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Registries/TransformSynchronizationType.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Registries/TransformSynchronizationType.cs.meta deleted file mode 100644 index c68e0bc18..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Registries/TransformSynchronizationType.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 6d3911eb7ee54861b51bccf4ed32aec2 -timeCreated: 1551169872 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Schedulers.meta b/Assets/VRM/Runtime/FastSpringBone/Schedulers.meta deleted file mode 100644 index 8165aee2d..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Schedulers.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 802ad91bcfdacbd4bbce16eff061cd68 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/VRM/Runtime/FastSpringBone/Schedulers/PullTransformJobScheduler.cs b/Assets/VRM/Runtime/FastSpringBone/Schedulers/PullTransformJobScheduler.cs deleted file mode 100644 index 600ac0d39..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Schedulers/PullTransformJobScheduler.cs +++ /dev/null @@ -1,119 +0,0 @@ -using System; -using System.Collections.Generic; -#if ENABLE_SPRINGBONE_BURST -using Unity.Burst; -#endif -using Unity.Collections; -using Unity.Collections.LowLevel.Unsafe; -using Unity.Jobs; -using UnityEngine.Jobs; -using UnityEngine.Profiling; -using VRM.FastSpringBones.Blittables; -using VRM.FastSpringBones.NativeWrappers; -using VRM.FastSpringBones.Registries; - -namespace VRM.FastSpringBones.Schedulers -{ - /// - /// GameObjectの世界からBlittableな世界へTransformを複製する処理を行うクラス - /// - public sealed unsafe class PullTransformJobScheduler : IDisposable - { - private BlittableTransform** _transformPointers; - private TransformAccessArray _transformAccessArray; - - private readonly CustomSampler _sampler = CustomSampler.Create("Schedule CopyFromTransformJob"); - private readonly TransformRegistry _transformRegistry; - - private bool _dirty = true; - - private IReadOnlyList Targets => _transformRegistry.PullTargets; - - public PullTransformJobScheduler(TransformRegistry transformRegistry) - { - _transformRegistry = transformRegistry; - - _transformRegistry.SubscribeOnValueChanged(OnTransformChanged); - } - - private void OnTransformChanged() - { - _dirty = true; - } - - public JobHandle Schedule(JobHandle dependOn = default(JobHandle)) - { - if (Targets.Count == 0) - { - return dependOn; - } - - _sampler.Begin(); - - // リストが変更されていたらバッファを再構築 - if (_dirty) - { - ReconstructBuffers(); - - _dirty = false; - } - - // ジョブを発火 - var job = new Job { TransformPointers = _transformPointers }; - var jobHandle = job.Schedule(_transformAccessArray, dependOn); - - _sampler.End(); - - return jobHandle; - } - - private void ReconstructBuffers() - { - ReleaseBuffers(); - - var transforms = Targets; - _transformPointers = (BlittableTransform**)UnsafeUtility.Malloc( - sizeof(BlittableTransform*) * transforms.Count, - 16, - Allocator.Persistent - ); - - _transformAccessArray = new TransformAccessArray(transforms.Count); - - for (var i = 0; i < transforms.Count; i++) - { - _transformPointers[i] = transforms[i].GetUnsafePtr(); - _transformAccessArray.Add(transforms[i].Transform); - } - } - - public void Dispose() - { - ReleaseBuffers(); - _transformRegistry.UnSubscribeOnValueChanged(OnTransformChanged); - } - - private void ReleaseBuffers() - { - if (_transformAccessArray.isCreated) _transformAccessArray.Dispose(); - if (_transformPointers != null) - { - UnsafeUtility.Free(_transformPointers, Allocator.Persistent); - _transformPointers = null; - } - } - -#if ENABLE_SPRINGBONE_BURST - [BurstCompile] -#endif - private struct Job : IJobParallelForTransform - { - [NativeDisableUnsafePtrRestriction] public BlittableTransform** TransformPointers; - - public void Execute(int index, TransformAccess transform) - { - TransformPointers[index]->PullFrom(transform); - } - } - } -} diff --git a/Assets/VRM/Runtime/FastSpringBone/Schedulers/PullTransformJobScheduler.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Schedulers/PullTransformJobScheduler.cs.meta deleted file mode 100644 index a8c9666a6..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Schedulers/PullTransformJobScheduler.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 83ca6a73284247c0a809eb9b83b6296b -timeCreated: 1550547066 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Schedulers/PushTransformJobScheduler.cs b/Assets/VRM/Runtime/FastSpringBone/Schedulers/PushTransformJobScheduler.cs deleted file mode 100644 index 6d66f61f9..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Schedulers/PushTransformJobScheduler.cs +++ /dev/null @@ -1,119 +0,0 @@ -using System; -using System.Collections.Generic; -#if ENABLE_SPRINGBONE_BURST -using Unity.Burst; -#endif -using Unity.Collections; -using Unity.Collections.LowLevel.Unsafe; -using Unity.Jobs; -using UnityEngine.Jobs; -using UnityEngine.Profiling; -using VRM.FastSpringBones.Blittables; -using VRM.FastSpringBones.NativeWrappers; -using VRM.FastSpringBones.Registries; - -namespace VRM.FastSpringBones.Schedulers -{ - /// - /// Blittableな世界からGameObjectの世界へTransformを送り込む処理を行うクラス - /// - public sealed unsafe class PushTransformJobScheduler : IDisposable - { - private BlittableTransform** _transformPointers; - private TransformAccessArray _transformAccessArray; - - private readonly CustomSampler _sampler = CustomSampler.Create("Schedule CopyFromTransformJob"); - private readonly TransformRegistry _transformRegistry; - - private bool _dirty = true; - - private IReadOnlyList Targets => _transformRegistry.PushTargets; - - public PushTransformJobScheduler(TransformRegistry transformRegistry) - { - _transformRegistry = transformRegistry; - - _transformRegistry.SubscribeOnValueChanged(OnTransformChanged); - } - - private void OnTransformChanged() - { - _dirty = true; - } - - public JobHandle Schedule(JobHandle dependOn = default(JobHandle)) - { - if (Targets.Count == 0) - { - return dependOn; - } - - _sampler.Begin(); - - // リストが変更されていたらバッファを再構築 - if (_dirty) - { - ReconstructBuffers(); - - _dirty = false; - } - - // Jobを発火 - var job = new Job { TransformPointers = _transformPointers }; - var jobHandle = job.Schedule(_transformAccessArray, dependOn); - - _sampler.End(); - - return jobHandle; - } - - private void ReconstructBuffers() - { - ReleaseBuffers(); - - var transforms = Targets; - _transformPointers = (BlittableTransform**)UnsafeUtility.Malloc( - sizeof(BlittableTransform*) * transforms.Count, - 16, - Allocator.Persistent - ); - - _transformAccessArray = new TransformAccessArray(transforms.Count); - - for (var i = 0; i < transforms.Count; i++) - { - _transformPointers[i] = transforms[i].GetUnsafePtr(); - _transformAccessArray.Add(transforms[i].Transform); - } - } - - public void Dispose() - { - ReleaseBuffers(); - _transformRegistry.UnSubscribeOnValueChanged(OnTransformChanged); - } - - private void ReleaseBuffers() - { - if (_transformAccessArray.isCreated) _transformAccessArray.Dispose(); - if (_transformPointers != null) - { - UnsafeUtility.Free(_transformPointers, Allocator.Persistent); - _transformPointers = null; - } - } - -#if ENABLE_SPRINGBONE_BURST - [BurstCompile] -#endif - private struct Job : IJobParallelForTransform - { - [NativeDisableUnsafePtrRestriction] public BlittableTransform** TransformPointers; - - public void Execute(int index, TransformAccess transform) - { - TransformPointers[index]->PushTo(transform); - } - } - } -} diff --git a/Assets/VRM/Runtime/FastSpringBone/Schedulers/PushTransformJobScheduler.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Schedulers/PushTransformJobScheduler.cs.meta deleted file mode 100644 index 75f7c9618..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Schedulers/PushTransformJobScheduler.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 5a12fcea984d4387a5f3d0f5291df34e -timeCreated: 1550717407 \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone/Schedulers/UpdateSpringBoneJobScheduler.cs b/Assets/VRM/Runtime/FastSpringBone/Schedulers/UpdateSpringBoneJobScheduler.cs deleted file mode 100644 index 74297dc2d..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Schedulers/UpdateSpringBoneJobScheduler.cs +++ /dev/null @@ -1,113 +0,0 @@ -using System; -using System.Collections.Generic; -#if ENABLE_SPRINGBONE_BURST -using Unity.Burst; -#endif -using Unity.Collections; -using Unity.Collections.LowLevel.Unsafe; -using Unity.Jobs; -using UnityEngine; -using UnityEngine.Profiling; -using VRM.FastSpringBones.Blittables; -using VRM.FastSpringBones.NativeWrappers; -using VRM.FastSpringBones.Registries; - -namespace VRM.FastSpringBones.Schedulers -{ - /// - /// SpringBoneを更新する処理を行うクラス - /// - public sealed unsafe class UpdateSpringBoneJobScheduler : IDisposable - { - private BlittableRootBone** _rootBonePointers; - - private readonly RootBoneRegistry _rootBoneRegistry; - private readonly CustomSampler _sampler = CustomSampler.Create("Schedule CopyFromTransformJob"); - - private bool _dirty = true; - - private IReadOnlyList> Targets => _rootBoneRegistry.Items; - - public UpdateSpringBoneJobScheduler(RootBoneRegistry rootBoneRegistry) - { - _rootBoneRegistry = rootBoneRegistry; - - _rootBoneRegistry.SubscribeOnValueChanged(OnRootBoneChanged); - } - - public void Dispose() - { - ReleaseBuffer(); - _rootBoneRegistry.UnSubscribeOnValueChanged(OnRootBoneChanged); - } - - private void OnRootBoneChanged() - { - _dirty = true; - } - - public JobHandle Schedule(JobHandle dependOn = default(JobHandle)) - { - if (Targets.Count == 0) - { - return dependOn; - } - - _sampler.Begin(); - - // リストが変更されていたらバッファを再構築 - if (_dirty) - { - ReconstructBuffers(); - - _dirty = false; - } - - // Jobを発火 - var job = new Job { RootBonePointers = _rootBonePointers, DeltaTime = Time.deltaTime }; - var jobHandle = job.Schedule(Targets.Count, 0, dependOn); - - _sampler.End(); - - return jobHandle; - } - - private void ReconstructBuffers() - { - ReleaseBuffer(); - - _rootBonePointers = (BlittableRootBone**)UnsafeUtility.Malloc( - sizeof(BlittableTransform*) * Targets.Count, - 16, - Allocator.Persistent - ); - - for (var i = 0; i < Targets.Count; i++) - { - _rootBonePointers[i] = Targets[i].GetUnsafePtr(); - } - } - - private void ReleaseBuffer() - { - if (_rootBonePointers == null) return; - UnsafeUtility.Free(_rootBonePointers, Allocator.Persistent); - _rootBonePointers = null; - } - -#if ENABLE_SPRINGBONE_BURST - [BurstCompile] -#endif - private struct Job : IJobParallelFor - { - [NativeDisableUnsafePtrRestriction] public BlittableRootBone** RootBonePointers; - public float DeltaTime; - - public void Execute(int index) - { - // 各点を更新する - RootBonePointers[index]->Update(DeltaTime); - } - } - } -} diff --git a/Assets/VRM/Runtime/FastSpringBone/Schedulers/UpdateSpringBoneJobScheduler.cs.meta b/Assets/VRM/Runtime/FastSpringBone/Schedulers/UpdateSpringBoneJobScheduler.cs.meta deleted file mode 100644 index 2d47c1232..000000000 --- a/Assets/VRM/Runtime/FastSpringBone/Schedulers/UpdateSpringBoneJobScheduler.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: a6b730c674ce4484862ddee8459c8598 -timeCreated: 1549516763 \ No newline at end of file diff --git a/Assets/VRM/Runtime/SpringBone/FastSpringBoneReplacer.cs b/Assets/VRM/Runtime/SpringBone/FastSpringBoneReplacer.cs deleted file mode 100644 index 10a623428..000000000 --- a/Assets/VRM/Runtime/SpringBone/FastSpringBoneReplacer.cs +++ /dev/null @@ -1,130 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using UniGLTF; -using UnityEngine; -using VRM.FastSpringBones.Blittables; -using VRM.FastSpringBones.Components; -using Object = UnityEngine.Object; - -namespace VRM -{ - /// - /// 指定されたGameObject内にあるSpringBoneをFastSpringBoneに差し替えるユーティリティ - /// - public static class FastSpringBoneReplacer - { - public static async Task ReplaceAsync(GameObject gameObject, IAwaitCaller awaitCaller = null, CancellationToken token = default) - { - var service = FastSpringBoneService.Instance; - var springBones = gameObject.GetComponentsInChildren(); - var disposer = gameObject.AddComponent(); - - // VRMSpringBoneで動いた後の状態がFastSpringBoneの初期状態にならないようにするためawait UniTask.Yield()する前にVRMSpringBoneをdisableにしておく - foreach (var springBone in springBones) - { - springBone.enabled = false; - }; - - if (awaitCaller != null) - { - await awaitCaller.NextFrame(); - token.ThrowIfCancellationRequested(); - } - - var vrmColliderGroups = gameObject.GetComponentsInChildren(); - var colliderGroupDictionary = new Dictionary(); - - // Colliderを差し替える - foreach (var vrmColliderGroup in vrmColliderGroups) - { - if (awaitCaller != null) - { - await awaitCaller.NextFrame(); - token.ThrowIfCancellationRequested(); - } - - var fastSpringBoneCollider = vrmColliderGroup.gameObject.AddComponent(); - fastSpringBoneCollider.Initialize( - service.TransformRegistry, - vrmColliderGroup.Colliders - .Select(data => new BlittableCollider(data.Offset, data.Radius)) - .ToArray() - ); - colliderGroupDictionary[vrmColliderGroup] = fastSpringBoneCollider; - } - - var springRootBones = - ( - from springBone in springBones - from rootBone in springBone.RootBones - select (springBone, rootBone) - ).ToList(); - - for (var i = 0; i < springRootBones.Count; i++) - { - var current = springRootBones[i]; - - // 他のRootBoneのどれかが、自分の親(もしくは同じTransform)なら自分自身を削除する - if (springRootBones - .Where(other => other != current) - .Any(other => current.rootBone.IsChildOf(other.rootBone))) - { - springRootBones.RemoveAt(i); - --i; - } - } - - if (awaitCaller != null) - { - await awaitCaller.NextFrame(); - token.ThrowIfCancellationRequested(); - } - token.ThrowIfCancellationRequested(); - - foreach (var (vrmSpringBone, rootBoneTransform) in springRootBones) - { - // FastSpringRootBoneに差し替える - var fastSpringRootBone = - new FastSpringRootBone( - service.TransformRegistry, - rootBoneTransform, - service.RootBoneRegistry, - service.ColliderGroupRegistry); - disposer.Add(fastSpringRootBone); - - var colliderGroups = - vrmSpringBone.ColliderGroups != null - ? vrmSpringBone.ColliderGroups.Select(group => colliderGroupDictionary[@group]).ToArray() - : Array.Empty(); - - fastSpringRootBone.Initialize( - vrmSpringBone.m_gravityPower, - vrmSpringBone.m_gravityDir, - vrmSpringBone.m_dragForce, - vrmSpringBone.m_stiffnessForce, - colliderGroups, - vrmSpringBone.m_hitRadius, - vrmSpringBone.m_center - ); - - Object.Destroy(vrmSpringBone); - - if (awaitCaller != null) - { - await awaitCaller.NextFrame(); - token.ThrowIfCancellationRequested(); - } - token.ThrowIfCancellationRequested(); - } - - // Colliderを削除 - foreach (var vrmSpringBoneColliderGroup in vrmColliderGroups) - { - Object.Destroy(vrmSpringBoneColliderGroup); - } - } - } -} diff --git a/Assets/VRM/Runtime/SpringBone/FastSpringBoneService.cs b/Assets/VRM/Runtime/SpringBone/FastSpringBoneService.cs deleted file mode 100644 index 86fab4112..000000000 --- a/Assets/VRM/Runtime/SpringBone/FastSpringBoneService.cs +++ /dev/null @@ -1,54 +0,0 @@ -using UnityEngine; -using VRM.FastSpringBones.Components; -using VRM.FastSpringBones.Registries; - -namespace VRM -{ - /// - /// Scene 上に単一で存在する、FastSpringBone の ServiceLocator 兼 EntryPoint - /// - public class FastSpringBoneService : MonoBehaviour - { - public RootBoneRegistry RootBoneRegistry { get; private set; } - public TransformRegistry TransformRegistry { get; private set; } - public ColliderGroupRegistry ColliderGroupRegistry { get; private set; } - public FastSpringBoneScheduler FastSpringBoneScheduler { get; private set; } - - private static FastSpringBoneService _instance; - - public static FastSpringBoneService Instance - { - get - { - if (!_instance) - { - var gameObject = new GameObject("FastSpringBone Service"); - DontDestroyOnLoad(gameObject); - _instance = gameObject.AddComponent(); - } - return _instance; - } - } - - /// - /// 専有しているインスタンスを破棄する - /// - public static void Free() - { - Destroy(_instance.gameObject); - _instance = null; - } - - private void Awake() - { - RootBoneRegistry = new RootBoneRegistry(); - TransformRegistry = new TransformRegistry(); - ColliderGroupRegistry = new ColliderGroupRegistry(); - FastSpringBoneScheduler = gameObject.AddComponent(); - FastSpringBoneScheduler.Initialize( - RootBoneRegistry, - TransformRegistry, - ColliderGroupRegistry); - } - } -} \ No newline at end of file diff --git a/Assets/VRM/Runtime/FastSpringBone.meta b/Assets/VRM/Runtime/SpringBone/Jobs.meta similarity index 77% rename from Assets/VRM/Runtime/FastSpringBone.meta rename to Assets/VRM/Runtime/SpringBone/Jobs.meta index cf175ab02..423b63325 100644 --- a/Assets/VRM/Runtime/FastSpringBone.meta +++ b/Assets/VRM/Runtime/SpringBone/Jobs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: cf09adfffebbff24eb2185e1d9b5b0a9 +guid: ec0b831d5a861c2479ab473c4ee62a5d folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneReplacer.cs b/Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneReplacer.cs new file mode 100644 index 000000000..e9bc2ca03 --- /dev/null +++ b/Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneReplacer.cs @@ -0,0 +1,97 @@ +using System; +using UnityEngine; +using UniGLTF.SpringBoneJobs.InputPorts; +using System.Linq; +using UniGLTF.SpringBoneJobs.Blittables; +using System.Collections.Generic; + + +namespace VRM.SpringBoneJobs +{ + public static class FastSpringBoneReplacer + { + /// + /// - 指定された GameObject 内にある SpringBone を停止させる + /// - FastSpringBoneBuffer に変換する + /// + public static FastSpringBoneBuffer MakeBuffer(GameObject root) + { + var components = root.GetComponentsInChildren(); + foreach (var sb in components) + { + // 停止させて FastSpringBoneService から実行させる + sb.m_updateType = VRMSpringBone.SpringBoneUpdateType.Manual; + } + + // create(Spring情報の再収集。設定変更の反映) + var springs = components.Select(spring => new FastSpringBoneSpring + { + center = spring.m_center, + colliders = spring.ColliderGroups + .SelectMany(group => group.Colliders.Select(collider => new FastSpringBoneCollider + { + Transform = group.transform, + Collider = new BlittableCollider + { + offset = collider.Offset, + radius = collider.Radius, + tailOrNormal = default, + colliderType = BlittableColliderType.Sphere + } + })).ToArray(), + joints = spring.RootBones.Select(x => Traverse(spring, x)).SelectMany(x => x).ToArray(), + }).ToArray(); + + return new FastSpringBoneBuffer(springs); + } + + static IEnumerable Traverse(VRMSpringBone spring, Transform joint) + { + yield return new FastSpringBoneJoint + { + Transform = joint.transform, + Joint = new BlittableJoint + { + radius = spring.m_hitRadius, + dragForce = spring.m_dragForce, + gravityDir = spring.m_gravityDir, + gravityPower = spring.m_gravityPower, + stiffnessForce = spring.m_stiffnessForce + }, + DefaultLocalRotation = joint.transform.localRotation, + }; + foreach (Transform child in joint) + { + foreach (var x in Traverse(spring, child)) + { + yield return x; + } + } + + // TODO: 詳細分岐 + + // 7cm tail + + // var springRootBones = + // ( + // from springBone in springBones + // from rootBone in springBone.RootBones + // select (springBone, rootBone) + // ).ToList(); + + // for (var i = 0; i < springRootBones.Count; i++) + // { + // var current = springRootBones[i]; + + // // 他のRootBoneのどれかが、自分の親(もしくは同じTransform)なら自分自身を削除する + // if (springRootBones + // .Where(other => other != current) + // .Any(other => current.rootBone.IsChildOf(other.rootBone))) + // { + // springRootBones.RemoveAt(i); + // --i; + // } + // } + } + } +} \ No newline at end of file diff --git a/Assets/VRM/Runtime/SpringBone/FastSpringBoneReplacer.cs.meta b/Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneReplacer.cs.meta similarity index 100% rename from Assets/VRM/Runtime/SpringBone/FastSpringBoneReplacer.cs.meta rename to Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneReplacer.cs.meta diff --git a/Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneService.cs b/Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneService.cs new file mode 100644 index 000000000..ae4fd9eb3 --- /dev/null +++ b/Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneService.cs @@ -0,0 +1,73 @@ +using UniGLTF.SpringBoneJobs; +using UnityEngine; +using UnityEngine.Profiling; + + +namespace VRM.SpringBoneJobs +{ + /// + /// シングルトン。FastSpringBone の ServiceLocator 兼 EntryPoint。 + /// シーンすべてのVRMのSpringBoneをバッチングしてまとめて実行する。 + /// + [DefaultExecutionOrder(11000)] + public class FastSpringBoneService : MonoBehaviour + { + private CustomSampler _updateSampler = CustomSampler.Create("FastSpringBone(Update)"); + + public FastSpringBoneBufferCombiner BufferCombiner { get; private set; } + private FastSpringBoneScheduler _fastSpringBoneScheduler; + + private static FastSpringBoneService _instance; + + public static FastSpringBoneService Instance + { + get + { + if (_instance) return _instance; + +#if UNITY_2022_3_OR_NEWER + _instance = FindFirstObjectByType(); +#else + _instance = FindObjectOfType(); +#endif + if (_instance) return _instance; + + var gameObject = new GameObject("FastSpringBone Service"); + DontDestroyOnLoad(gameObject); + _instance = gameObject.AddComponent(); + + return _instance; + } + } + + /// + /// 専有しているインスタンスを破棄する + /// + public static void Free() + { + Destroy(_instance.gameObject); + _instance = null; + } + + private void OnEnable() + { + BufferCombiner = new FastSpringBoneBufferCombiner(); + _fastSpringBoneScheduler = new FastSpringBoneScheduler(BufferCombiner); + } + + private void OnDisable() + { + BufferCombiner.Dispose(); + _fastSpringBoneScheduler.Dispose(); + } + + private void LateUpdate() + { + _updateSampler.Begin(); + + _fastSpringBoneScheduler.Schedule(Time.deltaTime).Complete(); + + _updateSampler.End(); + } + } +} \ No newline at end of file diff --git a/Assets/VRM/Runtime/SpringBone/FastSpringBoneService.cs.meta b/Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneService.cs.meta similarity index 100% rename from Assets/VRM/Runtime/SpringBone/FastSpringBoneService.cs.meta rename to Assets/VRM/Runtime/SpringBone/Jobs/FastSpringBoneService.cs.meta diff --git a/Assets/VRM/Runtime/VRM.asmdef b/Assets/VRM/Runtime/VRM.asmdef index ccd56a061..d7d1718ab 100644 --- a/Assets/VRM/Runtime/VRM.asmdef +++ b/Assets/VRM/Runtime/VRM.asmdef @@ -4,11 +4,10 @@ "references": [ "GUID:b7aa47b240b57de44a4b2021c143c9bf", "GUID:8d76e605759c3f64a957d63ef96ada7c", - "GUID:da3e51d19d51a544fa14d43fee843098", "GUID:a9bc101fb0471f94a8f99fd242fdd934", - "GUID:ac229b552c3025545b074203f857547c", "GUID:1cd941934d098654fa21a13f28346412", - "GUID:60c8346e00a8ddd4cafc5a02eceeec57" + "GUID:60c8346e00a8ddd4cafc5a02eceeec57", + "GUID:3e5d614bc16b50d41bd94c8d7444ca46" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/VRM10/Runtime/FastSpringBone/FastSpringBoneScheduler.cs.meta b/Assets/VRM10/Runtime/FastSpringBone/FastSpringBoneScheduler.cs.meta deleted file mode 100644 index 3ebe6c1c4..000000000 --- a/Assets/VRM10/Runtime/FastSpringBone/FastSpringBoneScheduler.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 897b4e814c0b5dc4d8d1f8a859ef746b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/VRM10/Runtime/FastSpringBone/System.meta b/Assets/VRM10/Runtime/FastSpringBone/System.meta deleted file mode 100644 index 47ac6e8e5..000000000 --- a/Assets/VRM10/Runtime/FastSpringBone/System.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: af417d77d895bc84ba5d2c8f0542bdd8 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/VRM10/Runtime/FastSpringBone/System/CopyToNativeArrayTransformJob.cs b/Assets/VRM10/Runtime/FastSpringBone/System/CopyToNativeArrayTransformJob.cs deleted file mode 100644 index c20affe18..000000000 --- a/Assets/VRM10/Runtime/FastSpringBone/System/CopyToNativeArrayTransformJob.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Unity.Collections; -using UnityEngine.Jobs; -using UniGLTF.SpringBoneJobs.Blittables; -#if ENABLE_SPRINGBONE_BURST -using Unity.Burst; -#endif - -namespace UniVRM10.FastSpringBones.System -{ - -#if ENABLE_SPRINGBONE_BURST - [BurstCompile] -#endif - public struct PullTransformJob : IJobParallelForTransform - { - [WriteOnly] public NativeArray Transforms; - - public void Execute(int index, TransformAccess transform) - { - Transforms[index] = new BlittableTransform - { - position = transform.position, - rotation = transform.rotation, - localPosition = transform.localPosition, - localRotation = transform.localRotation, - localScale = transform.localScale, - localToWorldMatrix = transform.localToWorldMatrix, - worldToLocalMatrix = transform.worldToLocalMatrix - }; - } - } -} - \ No newline at end of file diff --git a/Assets/VRM10/Runtime/FastSpringBone/System/CopyToNativeArrayTransformJob.cs.meta b/Assets/VRM10/Runtime/FastSpringBone/System/CopyToNativeArrayTransformJob.cs.meta deleted file mode 100644 index ead1129cb..000000000 --- a/Assets/VRM10/Runtime/FastSpringBone/System/CopyToNativeArrayTransformJob.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6cbbe7ad561feca4fb8f91f999755d9e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/VRM_Samples/SimpleViewer/VRM.Samples.SimpleViewer.asmdef b/Assets/VRM_Samples/SimpleViewer/VRM.Samples.SimpleViewer.asmdef index 6db561b0b..ccfa5649c 100644 --- a/Assets/VRM_Samples/SimpleViewer/VRM.Samples.SimpleViewer.asmdef +++ b/Assets/VRM_Samples/SimpleViewer/VRM.Samples.SimpleViewer.asmdef @@ -5,7 +5,8 @@ "GUID:da3e51d19d51a544fa14d43fee843098", "GUID:b7aa47b240b57de44a4b2021c143c9bf", "GUID:8d76e605759c3f64a957d63ef96ada7c", - "GUID:05dd262a0c0a2f841b8252c8c3815582" + "GUID:05dd262a0c0a2f841b8252c8c3815582", + "GUID:3e5d614bc16b50d41bd94c8d7444ca46" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/VRM_Samples/SimpleViewer/ViewerUI.cs b/Assets/VRM_Samples/SimpleViewer/ViewerUI.cs index 1093736e7..d1e141d7e 100644 --- a/Assets/VRM_Samples/SimpleViewer/ViewerUI.cs +++ b/Assets/VRM_Samples/SimpleViewer/ViewerUI.cs @@ -4,6 +4,7 @@ using System.IO; using System.Linq; using System.Threading.Tasks; using UniGLTF; +using UniGLTF.SpringBoneJobs; using UniHumanoid; using UnityEngine; using UnityEngine.UI; @@ -387,7 +388,14 @@ namespace VRM.SimpleViewer if (m_useFastSpringBone.isOn) { - var _ = FastSpringBoneReplacer.ReplaceAsync(instance.Root); + // job用バッファ作成 + var buffer = SpringBoneJobs.FastSpringBoneReplacer.MakeBuffer(instance.Root); + + // 登録 + SpringBoneJobs.FastSpringBoneService.Instance.BufferCombiner.Register(buffer); + + // 削除登録 + instance.Root.AddComponent().Add(buffer); } instance.EnableUpdateWhenOffscreen();