RotateParticleSpringboneRuntime

This commit is contained in:
ousttrue
2024-11-07 18:37:12 +09:00
parent 3936ce5efa
commit b0d6087272
4 changed files with 81 additions and 26 deletions

View File

@@ -549,18 +549,6 @@ namespace UniVRM10.Cloth.Viewer
}
}
static IMaterialDescriptorGenerator GetMaterialDescriptorGenerator(bool useUrp)
{
if (useUrp)
{
return new UrpGltfMaterialDescriptorGenerator();
}
else
{
return new BuiltInGltfMaterialDescriptorGenerator();
}
}
async void LoadModel(string path)
{
// cleanup
@@ -578,7 +566,12 @@ namespace UniVRM10.Cloth.Viewer
showMeshes: false,
awaitCaller: m_useAsync.enabled ? (IAwaitCaller)new RuntimeOnlyAwaitCaller() : (IAwaitCaller)new ImmediateCaller(),
materialGenerator: GetVrmMaterialDescriptorGenerator(true),
vrmMetaInformationCallback: m_texts.UpdateMeta);
vrmMetaInformationCallback: m_texts.UpdateMeta,
springboneRuntime: new RotateParticle.RotateParticleSpringboneRuntime((instance) =>
{
var autoSetup = instance.transform.gameObject.AddComponent<RotateParticle.HumanoidAutoSetup>();
autoSetup.Reset();
}));
if (cancellationToken.IsCancellationRequested)
{
UnityObjectDestroyer.DestroyRuntimeOrEditor(vrm10Instance.gameObject);
@@ -591,18 +584,6 @@ namespace UniVRM10.Cloth.Viewer
return;
}
//
// RotateParticle.HumanoidAutoSetup
//
// clear
vrm10Instance.SpringBone = new Vrm10InstanceSpringBone();
var autoSetup = vrm10Instance.transform.gameObject.AddComponent<RotateParticle.HumanoidAutoSetup>();
autoSetup.Reset();
var system = vrm10Instance.GetComponent<RotateParticle.RotateParticleSystem>();
system.Initialize();
var instance = vrm10Instance.GetComponent<RuntimeGltfInstance>();
instance.ShowMeshes();
instance.EnableUpdateWhenOffscreen();

View File

@@ -2,7 +2,10 @@
"name": "RotateParticle",
"rootNamespace": "",
"references": [
"GUID:0138a2c7639266f45b948ea162125de5"
"GUID:0138a2c7639266f45b948ea162125de5",
"GUID:3e5d614bc16b50d41bd94c8d7444ca46",
"GUID:e47c917724578cc43b5506c17a27e9a0",
"GUID:8d76e605759c3f64a957d63ef96ada7c"
],
"includePlatforms": [],
"excludePlatforms": [],

View File

@@ -0,0 +1,60 @@
using System;
using System.Threading.Tasks;
using UniGLTF;
using UniGLTF.SpringBoneJobs.Blittables;
using UnityEngine;
using UniVRM10;
namespace RotateParticle
{
/// <summary>
/// SpcriptedImporter 経由の import 向け。
/// NativeArray の確保や DontDestroyOnLoad を回避。
/// </summary>
public class RotateParticleSpringboneRuntime : IVrm10SpringBoneRuntime
{
Action<Vrm10Instance> _setup;
public RotateParticleSpringboneRuntime(Action<Vrm10Instance> setup)
{
_setup = setup;
}
public void Dispose()
{
}
public Task InitializeAsync(Vrm10Instance instance, IAwaitCaller awaitCaller)
{
if (_setup != null)
{
_setup(instance);
}
var system = instance.GetComponent<RotateParticleSystem>();
system.Initialize();
return Task.CompletedTask;
}
public void Process()
{
}
public bool ReconstructSpringBone()
{
return false;
}
public void RestoreInitialTransform()
{
}
public void SetJointLevel(Transform joint, BlittableJointMutable jointSettings)
{
}
public void SetModelLevel(Transform modelRoot, BlittableModelLevel modelSettings)
{
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: edc50c3e3f828de469f8ae6af569c174
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: