From 53c928227301e8ed0e321069fa4961fc79ddec66 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Tue, 5 Apr 2022 17:42:22 +0900 Subject: [PATCH] =?UTF-8?q?=E5=94=AF=E4=B8=80=E3=81=AE=20public=E3=80=81?= =?UTF-8?q?=20MeshUpdater.Execute?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/VRM10/Runtime/Migration/MeshUpdater.cs | 27 ++++++++++++++----- .../VRM10/Runtime/Migration/MigrationVrm.cs | 2 +- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/Assets/VRM10/Runtime/Migration/MeshUpdater.cs b/Assets/VRM10/Runtime/Migration/MeshUpdater.cs index 389d441e3..1ca4c8d10 100644 --- a/Assets/VRM10/Runtime/Migration/MeshUpdater.cs +++ b/Assets/VRM10/Runtime/Migration/MeshUpdater.cs @@ -10,7 +10,12 @@ namespace UniVRM10 { /// /// 座標系を変換した Model により、Mesh, Node, BindMatrices を更新する。 - /// buffer, bufferAccessor の更新もある。 + /// + /// * gltf.images の参照する bufferView + /// * gltf.meshes の参照する index, VERTEX, MorphTarget の accessor, bufferView + /// * gltf.nodes の参照する skin の inverseBindMatrices 向けの accessor, bufferView + /// + /// を詰め込みなすことで bin を再構築する /// class MeshUpdater { @@ -19,12 +24,23 @@ namespace UniVRM10 List _bufferViews = new List(); List _accessors = new List(); - public MeshUpdater(GltfData data) + MeshUpdater(GltfData data) { _data = data; _buffer = new ArrayByteBuffer(new byte[data.Bin.Length]); } + /// + /// data を model で更新する + /// + /// 更新前のオリジナル + /// 座標系の変換などの操作済み + /// + public static (glTF, ArraySegment) Execute(GltfData data, VrmLib.Model model) + { + return new MeshUpdater(data).Update(model); + } + int AddBuffer(NativeArray bytes) { var bufferView = _buffer.Extend(bytes); @@ -66,11 +82,10 @@ namespace UniVRM10 /// /// bufferView, accessor を push することで bin を再構築する - /// (meshの右手左手変換結果の適用など) /// - /// + /// meshの右手左手変換結果 /// - public (glTF, ArraySegment) Update(VrmLib.Model model) + (glTF, ArraySegment) Update(VrmLib.Model model) { var gltf = _data.GLTF; @@ -165,7 +180,6 @@ namespace UniVRM10 /// model はひとつのノードに複数の mesh をぶら下げることができる(meshGroup) /// gltf.meshes[i].primitives[j] <-> model.meshGroups[i].meshes[0].submeshes[j] /// - /// void UpdateSharedVertexBuffer(VrmLib.Model model) { var gltf = _data.GLTF; @@ -246,7 +260,6 @@ namespace UniVRM10 /// model はひとつのノードに複数の mesh をぶら下げることができる(meshGroup) /// gltf.meshes[i].primitives[j] <-> model.meshGroups[i].meshes[j].submeshes[0] /// - /// void UpdateDividedVertexBuffer(VrmLib.Model model) { var gltf = _data.GLTF; diff --git a/Assets/VRM10/Runtime/Migration/MigrationVrm.cs b/Assets/VRM10/Runtime/Migration/MigrationVrm.cs index 6311ccb2f..68584cc5b 100644 --- a/Assets/VRM10/Runtime/Migration/MigrationVrm.cs +++ b/Assets/VRM10/Runtime/Migration/MigrationVrm.cs @@ -38,7 +38,7 @@ namespace UniVRM10 // Unity -> VRM1 model.ConvertCoordinate(VrmLib.Coordinates.Vrm1); - var (gltf, bin) = new MeshUpdater(data).Update(model); + var (gltf, bin) = MeshUpdater.Execute(data, model); gltf.extensions = null; return MigrateVrm(gltf, bin, data.Json.ParseAsJson()["extensions"]["VRM"]); }