UniGTLF/Runtime/SpringBoneJobs from VRM10/Runtime/FastSpringBone

This commit is contained in:
ousttrue 2024-09-05 13:55:12 +09:00
parent d526ac8323
commit 9c8c98a567
46 changed files with 112 additions and 36 deletions

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e65343205e21bc24b98dbdb05ee56f01
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +1,7 @@
using System;
using UnityEngine;
using UnityEngine.Serialization;
namespace UniVRM10.FastSpringBones.Blittables
namespace UniGLTF.SpringBoneJobs.Blittables
{
/// <summary>
/// Blittableなコライダ

View File

@ -1,4 +1,4 @@
namespace UniVRM10.FastSpringBones.Blittables
namespace UniGLTF.SpringBoneJobs.Blittables
{
public enum BlittableColliderType
{

View File

@ -1,6 +1,6 @@
using UnityEngine;
namespace UniVRM10.FastSpringBones.Blittables
namespace UniGLTF.SpringBoneJobs.Blittables
{
/// <summary>
/// 外力等の毎フレーム更新されうる外部から与えられる情報

View File

@ -1,7 +1,7 @@
using System;
using UnityEngine;
namespace UniVRM10.FastSpringBones.Blittables
namespace UniGLTF.SpringBoneJobs.Blittables
{
/// <summary>
/// SpringBoneの各関節を表すデータ型

View File

@ -1,7 +1,7 @@
using System;
using UnityEngine;
namespace UniVRM10.FastSpringBones.Blittables
namespace UniGLTF.SpringBoneJobs.Blittables
{
/// <summary>
/// SpringBoneの各関節に紐付いた計算情報を表すデータ型

View File

@ -1,6 +1,6 @@
using System;
namespace UniVRM10.FastSpringBones.Blittables
namespace UniGLTF.SpringBoneJobs.Blittables
{
[Serializable]
public struct BlittableSpan

View File

@ -1,6 +1,6 @@
using System;
namespace UniVRM10.FastSpringBones.Blittables
namespace UniGLTF.SpringBoneJobs.Blittables
{
/// <summary>
/// 1本の毛束を表すデータ型

View File

@ -1,7 +1,7 @@
using System;
using UnityEngine;
namespace UniVRM10.FastSpringBones.Blittables
namespace UniGLTF.SpringBoneJobs.Blittables
{
/// <summary>
/// Transformの必要な機能だけを絞り、Blittableに対応させたクラス

View File

@ -6,12 +6,13 @@ using Unity.Jobs;
using UnityEngine;
using UnityEngine.Jobs;
using UnityEngine.Profiling;
using UniVRM10.FastSpringBones.Blittables;
using UniGLTF.SpringBoneJobs.Blittables;
using UniGLTF.SpringBoneJobs.InputPorts;
#if ENABLE_SPRINGBONE_BURST
using Unity.Burst;
#endif
namespace UniVRM10.FastSpringBones.System
namespace UniGLTF.SpringBoneJobs
{
/// <summary>
/// FastSpringBoneの処理に利用するバッファを全て結合して持つクラス

View File

@ -5,9 +5,9 @@ using Unity.Collections;
using Unity.Collections.LowLevel.Unsafe;
using UnityEngine;
using UnityEngine.Profiling;
using UniVRM10.FastSpringBones.Blittables;
using UniGLTF.SpringBoneJobs.Blittables;
namespace UniVRM10.FastSpringBones.System
namespace UniGLTF.SpringBoneJobs.InputPorts
{
/// <summary>
/// ひとつのVRMに紐づくFastSpringBoneに関連したバッファを保持するクラス

View File

@ -1,8 +1,8 @@
using System;
using UnityEngine;
using UniVRM10.FastSpringBones.Blittables;
using UniGLTF.SpringBoneJobs.Blittables;
namespace UniVRM10.FastSpringBones.System
namespace UniGLTF.SpringBoneJobs.InputPorts
{
[Serializable]
public struct FastSpringBoneCollider

View File

@ -1,8 +1,8 @@
using System;
using UnityEngine;
using UniVRM10.FastSpringBones.Blittables;
using UniGLTF.SpringBoneJobs.Blittables;
namespace UniVRM10.FastSpringBones.System
namespace UniGLTF.SpringBoneJobs.InputPorts
{
[Serializable]
public struct FastSpringBoneJoint

View File

@ -1,7 +1,7 @@
using System;
using UnityEngine;
namespace UniVRM10.FastSpringBones.System
namespace UniGLTF.SpringBoneJobs.InputPorts
{
[Serializable]
public struct FastSpringBoneSpring

View File

@ -0,0 +1,33 @@
using Unity.Collections;
using UnityEngine.Jobs;
using UniGLTF.SpringBoneJobs.Blittables;
#if ENABLE_SPRINGBONE_BURST
using Unity.Burst;
#endif
namespace UniGLTF.SpringBoneJobs
{
#if ENABLE_SPRINGBONE_BURST
[BurstCompile]
#endif
public struct PullTransformJob : IJobParallelForTransform
{
[WriteOnly] public NativeArray<BlittableTransform> 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
};
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b9fd53b4431b41909c1b1d882a2d446b
timeCreated: 1633072084

View File

@ -1,11 +1,11 @@
using Unity.Collections;
using UnityEngine.Jobs;
using UniVRM10.FastSpringBones.Blittables;
using UniGLTF.SpringBoneJobs.Blittables;
#if ENABLE_SPRINGBONE_BURST
using Unity.Burst;
#endif
namespace UniVRM10.FastSpringBones.System
namespace UniGLTF.SpringBoneJobs
{
#if ENABLE_SPRINGBONE_BURST
[BurstCompile]

View File

@ -0,0 +1,14 @@
{
"name": "SpringBoneJobs",
"rootNamespace": "",
"references": [],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": true,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3e5d614bc16b50d41bd94c8d7444ca46
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -2,12 +2,12 @@ using System;
using Unity.Collections;
using Unity.Jobs;
using UnityEngine;
using UniVRM10.FastSpringBones.Blittables;
using UniGLTF.SpringBoneJobs.Blittables;
#if ENABLE_SPRINGBONE_BURST
using Unity.Burst;
#endif
namespace UniVRM10.FastSpringBones.System
namespace UniGLTF.SpringBoneJobs
{
#if ENABLE_SPRINGBONE_BURST
[BurstCompile]

View File

@ -4,8 +4,8 @@ using System.Linq;
using UniGLTF;
using UniGLTF.Utils;
using UnityEngine;
using UniVRM10.FastSpringBones.Blittables;
using UniVRM10.FastSpringBones.System;
using UniGLTF.SpringBoneJobs.Blittables;
using UniGLTF.SpringBoneJobs.InputPorts;
namespace UniVRM10
{
@ -13,7 +13,7 @@ namespace UniVRM10
{
private readonly Vrm10Instance m_instance;
private readonly IReadOnlyDictionary<Transform, TransformState> m_defaultTransformStates;
private readonly FastSpringBoneService m_fastSpringBoneService;
private readonly FastSpringBones.FastSpringBoneService m_fastSpringBoneService;
private FastSpringBoneSpring[] m_springs;
private Quaternion[] m_initialLocalRotations;
private FastSpringBoneBuffer m_fastSpringBoneBuffer;
@ -47,7 +47,7 @@ namespace UniVRM10
// NOTE: FastSpringBoneService は UnitTest などでは動作しない
if (Application.isPlaying)
{
m_fastSpringBoneService = FastSpringBoneService.Instance;
m_fastSpringBoneService = FastSpringBones.FastSpringBoneService.Instance;
ReconstructSpringBone();
}
}

View File

@ -1,7 +1,9 @@
{
"name": "FastSpringBone10",
"rootNamespace": "",
"references": [
"GUID:2665a8d13d1b3f18800f46e256720795"
"GUID:2665a8d13d1b3f18800f46e256720795",
"GUID:3e5d614bc16b50d41bd94c8d7444ca46"
],
"includePlatforms": [],
"excludePlatforms": [],

View File

@ -1,9 +1,10 @@
using System;
using UniGLTF.SpringBoneJobs;
using Unity.Jobs;
using UnityEngine;
using UnityEngine.Jobs;
namespace UniVRM10.FastSpringBones.System
namespace UniVRM10.FastSpringBones
{
public sealed class FastSpringBoneScheduler : IDisposable
{

View File

@ -1,6 +1,7 @@
using UniGLTF.SpringBoneJobs;
using UnityEngine;
namespace UniVRM10.FastSpringBones.System
namespace UniVRM10.FastSpringBones
{
[DefaultExecutionOrder(11010)]
/// <summary>

View File

@ -1,6 +1,6 @@
using Unity.Collections;
using UnityEngine.Jobs;
using UniVRM10.FastSpringBones.Blittables;
using UniGLTF.SpringBoneJobs.Blittables;
#if ENABLE_SPRINGBONE_BURST
using Unity.Burst;
#endif

View File

@ -1,3 +1,11 @@
fileFormatVersion: 2
guid: b9fd53b4431b41909c1b1d882a2d446b
timeCreated: 1633072084
fileFormatVersion: 2
guid: 6cbbe7ad561feca4fb8f91f999755d9e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -4,13 +4,12 @@
"references": [
"GUID:2ef84b520212e174a94668c7a0862d3b",
"GUID:8d76e605759c3f64a957d63ef96ada7c",
"GUID:da3e51d19d51a544fa14d43fee843098",
"GUID:bce005214fa49654d93927908c15b1f2",
"GUID:0aaf403bd13871a44b7127aef2695ff8",
"GUID:b7aa47b240b57de44a4b2021c143c9bf",
"GUID:f2ca1407928ebdc4bbe7765cc278be44",
"GUID:2665a8d13d1b3f18800f46e256720795",
"GUID:1cd941934d098654fa21a13f28346412"
"GUID:1cd941934d098654fa21a13f28346412",
"GUID:3e5d614bc16b50d41bd94c8d7444ca46"
],
"includePlatforms": [],
"excludePlatforms": [],