ModelReader, ModelWriter

This commit is contained in:
ousttrue
2021-04-26 13:37:55 +09:00
parent 843fa8fd28
commit 10e44ed8a8
12 changed files with 28 additions and 88 deletions

View File

@@ -38,7 +38,7 @@ namespace UniVRM10
m_parser = null;
return;
}
m_model = VrmLoader.CreateVrmModel(m_parser);
m_model = ModelReader.Read(m_parser);
}
enum Tabs

View File

@@ -1,29 +0,0 @@
using System;
using UnityEngine;
using System.Linq;
using System.Collections.Generic;
namespace UniVRM10
{
public static class ComponentBuilder
{
#region Util
static (Transform, Mesh) GetTransformAndMesh(Transform t)
{
var skinnedMeshRenderer = t.GetComponent<SkinnedMeshRenderer>();
if (skinnedMeshRenderer != null)
{
return (t, skinnedMeshRenderer.sharedMesh);
}
var filter = t.GetComponent<MeshFilter>();
if (filter != null)
{
return (t, filter.sharedMesh);
}
return default;
}
#endregion
}
}

View File

@@ -1,12 +1,17 @@
using System;
using UnityEngine;
using UnityEngine.Rendering;
namespace UniVRM10
{
public static class MeshLoader
{
public static void LoadMesh(this Mesh mesh, VrmLib.Mesh src, VrmLib.Skin skin = null)
/// <summary>
/// VrmLib.Mesh => UnityEngine.Mesh
/// </summary>
/// <param name="mesh"></param>
/// <param name="src"></param>
/// <param name="skin"></param>
public static void LoadMesh(this UnityEngine.Mesh mesh, VrmLib.Mesh src, VrmLib.Skin skin = null)
{
mesh.vertices = src.VertexBuffer.Positions.GetSpan<Vector3>().ToArray();
mesh.normals = src.VertexBuffer.Normals?.GetSpan<Vector3>().ToArray();

View File

@@ -1,12 +1,15 @@
using System;
using System.IO;
using System.Linq;
using VrmLib;
namespace UniVRM10
{
public static class ModelLoader
/// <summary>
/// GLTF => VrmLib.Model
/// </summary>
public static class ModelReader
{
public static Model Load(Vrm10Storage storage, string rootName)
static Model Load(Vrm10Storage storage, string rootName)
{
if (storage == null)
{
@@ -70,5 +73,13 @@ namespace UniVRM10
return model;
}
public static Model Read(UniGLTF.GltfParser parser)
{
var storage = new Vrm10Storage(parser);
var model = Load(storage, Path.GetFileName(parser.TargetPath));
model.ConvertCoordinate(Coordinates.Unity);
return model;
}
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6b619b24f8ac1494290458193ebca6aa
guid: fb219f8797f990649a7531dbb96d3305
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -16,7 +16,6 @@ namespace UniVRM10
public List<UnityEngine.Material> Materials = new List<UnityEngine.Material>();
public Dictionary<UnityEngine.Mesh, VrmLib.MeshGroup> Meshes = new Dictionary<UnityEngine.Mesh, VrmLib.MeshGroup>();
#region Export 1.0
/// <summary>
/// metaObject が null のときは、root から取得する
/// </summary>
@@ -123,9 +122,6 @@ namespace UniVRM10
return Model;
}
#endregion
private static void CreateNodes(
Transform parentTransform,

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a6cc4e6978a4fdf40999cc13aaa472fe
guid: fd51b1ef2f1840e438e6a91fe1389a75
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

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

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using UniGLTF;
@@ -24,7 +25,7 @@ namespace UniVRM10
: base(parser, externalObjectMap.Select(kv => (kv.Key.Name, kv.Value)))
{
m_externalMap = externalObjectMap;
m_model = VrmLoader.CreateVrmModel(parser);
m_model = ModelReader.Read(parser);
// for `VRMC_materials_mtoon`
this.GltfMaterialImporter.GltfMaterialParamProcessors.Insert(0, Vrm10MaterialImporter.TryCreateParam);

View File

@@ -1,20 +0,0 @@
using System.IO;
using VrmLib;
using UniGLTF;
namespace UniVRM10
{
/// <summary>
/// utility for load VrmLib Model from byte[]
/// </summary>
public static class VrmLoader
{
public static Model CreateVrmModel(GltfParser parser)
{
var storage = new Vrm10Storage(parser);
var model = ModelLoader.Load(storage, Path.GetFileName(parser.TargetPath));
model.ConvertCoordinate(Coordinates.Unity);
return model;
}
}
}

View File

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

View File

@@ -1,9 +1,7 @@
using System;
using System.IO;
using System.IO;
using NUnit.Framework;
using UniGLTF;
using UnityEngine;
using UnityEngine.TestTools;
using VRMShaders;
namespace UniVRM10.Test
@@ -17,7 +15,7 @@ namespace UniVRM10.Test
var parser = new GltfParser();
parser.Parse("migrated", bytes);
var model = UniVRM10.VrmLoader.CreateVrmModel(parser);
var model = ModelReader.Read(parser);
return model;
}