mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-08-22 10:34:54 -05:00
ModelReader, ModelWriter
This commit is contained in:
@@ -38,7 +38,7 @@ namespace UniVRM10
|
||||
m_parser = null;
|
||||
return;
|
||||
}
|
||||
m_model = VrmLoader.CreateVrmModel(m_parser);
|
||||
m_model = ModelReader.Read(m_parser);
|
||||
}
|
||||
|
||||
enum Tabs
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6b619b24f8ac1494290458193ebca6aa
|
||||
guid: fb219f8797f990649a7531dbb96d3305
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@@ -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,
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a6cc4e6978a4fdf40999cc13aaa472fe
|
||||
guid: fd51b1ef2f1840e438e6a91fe1389a75
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 42576b7471f4a4e4fb25c1815a92f44b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ef069ccddc286cc4e930ba33447b0094
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user