Model から VRM 情報が除去されたので、ToGlb に追加の引数が必用になった

This commit is contained in:
ousttrue
2021-04-12 20:01:11 +09:00
parent 6977424196
commit 443001957b
4 changed files with 15 additions and 17 deletions

View File

@@ -6,7 +6,7 @@ namespace UniVRM10
{
public static class ModelExtensions
{
public static byte[] ToGlb(this VrmLib.Model model, Func<Texture2D, (byte[], string)> getTextureBytes)
public static byte[] ToGlb(this VrmLib.Model model, GameObject root, RuntimeVrmConverter converter, Func<Texture2D, (byte[], string)> getTextureBytes)
{
// export vrm-1.0
var exporter10 = new Vrm10Exporter(_ => false);
@@ -14,7 +14,8 @@ namespace UniVRM10
{
// vrm = false
};
exporter10.Export(null, model, null, option, getTextureBytes);
exporter10.Export(root, model, converter, option, getTextureBytes);
var glb10 = UniGLTF.Glb.Parse(exporter10.Storage.ToBytes());
return glb10.ToBytes();
}

View File

@@ -200,7 +200,7 @@ namespace UniVRM10
(UniGLTF.Extensions.VRMC_vrm.VRMC_vrm vrm, UniGLTF.Extensions.VRMC_springBone.VRMC_springBone springBone, int? thumbnailIndex) ExportVrm(GameObject root, Model model, RuntimeVrmConverter converter, VRM10MetaObject meta)
{
var vrmController = root.GetComponent<VRM10Controller>();
var vrmController = root?.GetComponent<VRM10Controller>();
if (meta == null)
{

View File

@@ -35,7 +35,7 @@ public class Sample : MonoBehaviour
var model = exporter.ToModelFrom10(vrm0x);
// 右手系に変換
model.ConvertCoordinate(VrmLib.Coordinates.Vrm1);
var exportedBytes = model.ToGlb(TextureExporter.GetTextureBytesWithMime);
var exportedBytes = model.ToGlb(vrm0x, exporter, TextureExporter.GetTextureBytesWithMime);
// Import 1.0
var vrm10 = Import(exportedBytes, src);

View File

@@ -35,18 +35,11 @@ namespace UniVRM10.Test
}
}
VrmLib.Model ToModel(UnityEngine.GameObject target)
{
var exporter = new UniVRM10.RuntimeVrmConverter();
var model = exporter.ToModelFrom10(target);
return model;
}
byte[] ToVrm10(VrmLib.Model model)
byte[] ToVrm10(GameObject root, RuntimeVrmConverter converter, VrmLib.Model model)
{
// 右手系に変換
VrmLib.ModelExtensionsForCoordinates.ConvertCoordinate(model, VrmLib.Coordinates.Vrm1);
var bytes = UniVRM10.ModelExtensions.ToGlb(model, AssetTextureUtil.GetTextureBytesWithMime);
var bytes = UniVRM10.ModelExtensions.ToGlb(model, root, converter, AssetTextureUtil.GetTextureBytesWithMime);
return bytes;
}
@@ -61,14 +54,18 @@ namespace UniVRM10.Test
var parser = new GltfParser();
parser.Parse(path, migrated);
var asset = BuildGameObject(parser, true);
Debug.Log(asset);
var go = BuildGameObject(parser, true);
Debug.Log(go);
// export
var dstModel = ToModel(asset);
// var dstModel = ToModel(go);
var exporter = new UniVRM10.RuntimeVrmConverter();
var dstModel = exporter.ToModelFrom10(go);
// return model;
Debug.Log(dstModel);
var vrmBytes = ToVrm10(dstModel);
var vrmBytes = ToVrm10(go, exporter, dstModel);
Debug.Log($"export {vrmBytes.Length} bytes");
}
}