Code Monkey home page Code Monkey logo

univrm's Introduction

UniVRM

GitHub latest release GitHub license

The standard implementation of 3D Avatar file format VRM for Unity.

VRM is an extension of glTF 2.0, so this library also support glTF 2.0 files.

Features

UniVRM supports the VRM 1.0 specification and the glTF 2.0 specification.

UniVRM can import/export following supported file types at both runtime and editor.

Supported file types

  • VRM 1.0 (.vrm)
  • VRM 0.x (.vrm)
  • glTF 2.0 (.glb | .gltf | .zip)
  • VRM-Animation (.vrma)

Import features

  • You can import supported file types at both runtime and editor.
  • Support for async/await importing at runtime.
  • Support for Migration VRM 0.x files into VRM 1.0 files.
  • Support for ScriptedImporter for VRM 1.0 and glTF 2.0.
  • You can import glTF's PBR materials into Unity Built-in RP's Standard materials.

Export features

  • You can export supported file types at both runtime and editor.
  • You can export Unity Built-in RP's Standard materials into glTF's PBR materials.

Supported Environments

The latest UniVRM supports Unity 2021.3 LTS or later.

UniVRM supports scripting backends both .NET and IL2CPP.

UniVRM supports the following building target platforms:

  • Standalone (Windows/Mac/Linux)
  • iOS
  • Android
  • WebGL

The other platforms maybe work but they are not tested.

Installation

Latest Release

Download here

Previous Releases

You can use an previous version of UniVRM if you use an older version of Unity. These are not supported.

Unity Version UniVRM Release VRM 1.0 support
2021.3 v0.112.0 Yes
2020.3 v0.100.0 Yes
2019.3 v0.99.1 No
2018.4 v0.79.0 No

You can install UniVRM using the UnityPackage or the UPM Package.

UnityPackage

From the latest release, you can download the .unitypackage files.

  • For import/export VRM 1.0
    • You can download VRM-0.XXX.X-YYYY.unitypackage.
    • You can also download sample projects as VRM_Samples-0.XXX.X-YYYY.unitypackage.
  • For import/export VRM 0.x
    • You can download UniVRM-0.XXX.X-YYYY.unitypackage.
    • You can also download sample projects as UniVRM_Samples-0.XXX.X-YYYY.unitypackage.
  • For import/export glTF 2.0
    • You can download VRM-0.XXX.X-YYYY.unitypackage.

UPM Package

From the latest release, you can find UPM package urls.

  • For import/export VRM 1.0
    • You have to install all of the following UPM packages:
      • com.vrmc.vrmshaders
      • com.vrmc.gltf
      • com.vrmc.vrm
  • For import/export VRM 0.x
    • You have to install all of the following UPM packages:
      • com.vrmc.vrmshaders
      • com.vrmc.gltf
      • com.vrmc.univrm
  • For import/export glTF 2.0
    • You have to install all of the following UPM packages:
      • com.vrmc.vrmshaders
      • com.vrmc.gltf

You can install these UPM packages via Package Manager -> + -> Add package from git URL... in UnityEditor.

Documentation

For developers

License

univrm's People

Contributors

0b5vr avatar amamagi avatar anatawa12 avatar chromee avatar dependabot[bot] avatar f-maeda-v avatar fujisunflower avatar hiroj avatar ichi-23 avatar icyp avatar kohei-yanagida avatar matsutaka-pxv avatar meso avatar mkc1370 avatar mttbrnnr avatar neon-izm avatar notargs avatar nowsprinting avatar oocytanb avatar ousttrue avatar pochang-su avatar pochang007 avatar santarh avatar saturday06 avatar t-kuhn avatar torisoup avatar tsgcpp avatar yasei-no-otoko avatar yoship1639 avatar yutopp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

univrm's Issues

VRMExporterがiOSランタイム実行でMissingMethodExceptionを吐いて止まる

iOSランタイム上でVRMRuntimeExporterのOnExportClickedメソッド内のvrm.ToGlbBytes()実行時にMissingMethodExceptionを吐いて止まります。

// glTF.cs
public byte[] ToGlbBytes()
{
            var json = ToJson();    // ここで止まる
~

さらに中を見ていくと、JsonFormatter.csで Func<T> func = expression.Compile(); が呼ばれていたので、これが原因だと思いますが代替する方法などありましたらお願いいたします。

materialPropatiesでシリアライズされるパラメータについて

VRMシリアライザをblenderアドオンとして作る際、unityEditor上に出てこない内部のパラメータまで定義しないと表示が正しくない(透過されない等)がありました。

VRMフォーマットとして持つべきはマテリアルの本質的な部分のみで、そこからのマテリアル初期化はuniVRM側で処理するべきと思います。 そうでなければ、uniVRM以外からのVRM出力は難しいですし、出来たとしてもunity内部向けのパラメータの更新の追随を要求されるのはプラットフォーム非依存とは言えないと思います。

ノーマルマップの入り方が反転している?

UniVRM v0.43、v0.44テスト版でVRoidStudioでランタイムで出力したVRMファイルでノーマルマップを当てた場合のMatCapのリムライトの入り方を各環境で検証したのですが、他の環境では明るい部分にリムが入っている状態が、UniVRMだと髪のノーマルでリムライトが入る箇所が逆になっている?ようです。
univrm044

また、こちらの様な角度にするとVRoidStudio上では輪郭にリムが入っていますが、UniVRMでランタイムで読み込むとつむじの方までMatCapのリムが伸びてしまいます。
univrm4

VRoidStudio上で、想定した入り方をしているのがこちらです。
vroid

こちらは、WakaruというUnity製VRMインポート対応アプリで同じVRMファイルを読み込んでみた状態です。
Wakaruの方では、VRoidStudioと同じ結果になるように対応してくれているのか同じ見え方になります。
wakaru
wakaru2

頂点色(頂点属性のCOLOR_0)が出力される

  • VRMの仕様では、COLOR_0は記録する頂点属性に含まれていない。
  • UnityのStandardシェーダーもUnlit系シェーダーもVRM提供シェーダーも頂点色を無視する一方、一般的なGLTF 2.0ビューアーは頂点色を解釈するため、色がおかしくなることがある。ビームマンさんが変換したモデル()で実際に現象の発生が確認できる。
  • どうせ無視されるものを出力するのはファイルサイズの無駄。
  • アプリケーションによってはGPUから参照できる一時的な情報を格納しているかもしれないが、それならなおさらアプリケーション外に出力すべきではない。

以上の理由から、VRMとしてエクスポートする際、少なくともVRMが正式にサポートするシェーダーのみを使用するメッシュに関しては、COLOR_0を出力しないほうがいいと思います。StandardVColorを使っていたりUniUnlitで頂点色を有効にしていたり未知のシェーダーがあったりするかもしれないので、一律出力しないわけにはいかないと思いますが。

iOS ビルドターゲットでNormalMapが正しく反映されない

iOSビルドターゲットでVRMファイルをランタイムロードすると、NormalMapが正しく反映されなかったです。
おそらく、iOSビルドでやるとDXT5形式のテクスチャになっていなくて、問題が発生しているのかと思います
修正お願いします

正常

screenshot1

screenshot2

異常

screenshot3

screenshot4

環境

macOS Mojave 10.14.1
Unity 2018.2.17f1
ビルドターゲット iOS

blendshapeGroupのマテリアルバインドについて

https://github.com/dwango/UniVRM/blob/master/specification/0.0/schema/vrm.blendshape.materialbind.schema.json
名前でバインドターゲットを決めるようですが、マテリアルの名前が同じものがある場合の挙動はどうなっていますでしょうか。
material.nameはユニークでなくてよいので、マテリアル名の重複はあり得ると思うのですが。(というより、Vroid0.3.0のサンプルモデルのjsonは2つのマテリアル名が重複している
参考: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#materialname

「export Humanoid」ができません

OS:Windows10
Unityのバージョン:5.6.3p1
UniVRMのバージョン:0.41

色々やってみたのですが、どうしてもVRMを書き出しできませんので報告いたします。
添付のようなエラーが出ます。
2018-09-02 9 40 45

モデルはHumanoidに設定してあります、ボーンはMMD用ボーン�なので日本語です。
頭ボーンの子に髪の毛のボーンがあります。

blendShapeMaster.blendShapeGroups schema does not allow Unknown

Unknown is not supperted by JSON schema specification as blendShapeMaster.blendShapeGroups presetName.

https://github.com/dwango/UniVRM/blob/master/specification/0.0/schema/vrm.blendshape.group.schema.json#L12

But it supported by VRM specification page

Others

Unknown

https://github.com/dwango/UniVRM/blob/master/Scripts/Format/glTF_VRM_BlendShape.cs#L94

And JSON schema specification requires uppercase value. (Blink)
But output vrm file by UniVRM contains lowercase value (blink)

So is it also good to support like blink?

Spring Bones Not Working Well With Colliders

I've noticed that spring bones work pretty badly with colliders. As it currently stands I've only been able to get actual collision from then when moving VERY slowly. Which proves to be a challenge when you want to move around more quickly or even just want to do a basic dance. As you can see from the gyazos below the colliders just phase right through. In the third one it shows how slow I need to go in order to get the colliders to do anything.

https://gyazo.com/c4ac90812e892cab6fdc21e93684210e
https://gyazo.com/5ab063c099eb6411845dcf789787157c
https://gyazo.com/e34279502bb771b56005fb9cc45bdf92

半透明テクスチャの扱い

ニコニ立体ちゃんの前髪など、テクスチャにアルファ値がある場合に後ろまでそのアルファ値が適用されてしまいます。
普通に表示する上ではそう問題にならないかと思いますが、描画結果をPNGで保存しようとしたり、@sh_akira さんのバーチャルモーションキャプチャーの表示などで影響がありそうです。
参考: https://twitter.com/sh_akira/status/1025074648705196032

Transparentの場合にどのようにすれば適切かは分からないのですが、そうではない下記のシェーダーでは、テクスチャの値によらず出力アルファ値は1になるように( UNITY_OPAQUE_ALPHA(col.a); をUNITY_APPLY_FOG() の後に追加するなど)しても良いのかもしれません。
https://github.com/dwango/UniVRM/blob/361b70460c12046756b5102e97c1bf4497145dde/Resources/Shaders/VRMUnlitCutout.shader#L54-L55
https://github.com/dwango/UniVRM/blob/361b70460c12046756b5102e97c1bf4497145dde/Resources/Shaders/VRMUnlitTexture.shader#L52-L53

なおMToonでは、こちらのIssueに挙げていただいているものが関連しそうです。
Santarh/MToon#10

視線移動をUV座標で移動する場合について

ブレンドシェイププロキシで設定して、
プレイモードで試してみたのですが、上下移動しか反映されません。

インスペクター上では動いているのですが、
シーン上では上下のみです。時折びくっと左右に動く場合もあります。

https://twitter.com/CGmizinco/status/1069774857552879617
画像は上記に載せています。
コンソールのエラー表示は失念してました。

ご対応お願いいたします。

standardシェーダーの取り扱いについて

https://github.com/dwango/UniVRM/wiki/ReleaseNote-v0.44(ja)#vrm-unlit%E3%81%A8standard%E3%83%9E%E3%83%86%E3%83%AA%E3%82%A2%E3%83%AB%E3%81%AB%E9%96%A2%E3%81%97%E3%81%A6%E3%81%AFvrm%E9%83%A8%E3%81%AB%E9%87%8D%E8%A4%87%E3%81%97%E3%81%9F%E6%83%85%E5%A0%B1%E3%82%92%E4%BF%9D%E5%AD%98%E3%81%97%E3%81%AA%E3%81%84%E4%BB%95%E6%A7%98%E5%A4%89%E6%9B%B4
 にて、standardシェーダーはgltfで記述可能なため、省略する旨記載されています。しかし、unity2018.2 のstrandard shaderではsecondary map やheight mapの項目があるのですが、gltfのmaterialのみではそれらの情報が失われます。

uniVRM0.45にてサムネイルの枠がなくなっている

使用しているのは、Unity 2018.2.6f1 (64-bit)です。
0.44まではReferenceの下に四角い枠がありそこに入れれましたが、なくなってます。
95616bc267823ca6f036fd9d7c54234c

移動したのかなと探してみたところ、VRMMetaのMetaをダブルクリックすると入れる項目がありました。
713be37a3f706b63150a7d370737f69b
dbbebbb30e9ff0a6bc37b92ae798fd21

バグなら、修正お願いします。
仕様変更なら周知お願いします。

視点 (VRM First PersonコンポーネントのFirst Person Offset) のGizmo表示

Unityエディタ上でモデルの視点を調整する場合、以下のスクリーンショットのように、次の手順で行うことになるかと思います。

  1. First Person Boneの子へ小さくしたSphere等を追加
  2. Sphereを視点とする位置へ移動
  3. SphereのTransformの値をFirst Person Offsetの値に転記する
  4. Sphereを削除する

これらの作業を簡略化できるように、視点の位置へGizmoを表示できないでしょうか。

json schemaにおけるnumberの上限、下限について

numberとなっている分について、上限・下限の定義があった方がいいと思います。

json schemaにおける上限下限の参考:https://json-schema.org/understanding-json-schema/reference/numeric.html#range

例:)unityではSetBlendShapeWeightは0-100に収まる必要があるので、blendshapeのbindにおいてweightは0-100にないといけないのではないかという点について参考:
https://github.com/dwango/UniVRM/blob/master/specification/0.0/schema/vrm.blendshape.bind.schema.json
https://docs.unity3d.com/ja/2017.4/ScriptReference/SkinnedMeshRenderer.SetBlendShapeWeight.html

実行形式でVRMファイルを読み込めない

UniVRM-RuntimeLoaderSample-0.35.unitypackageのVRMViewerをBuildしてVRMファイルを読み込んだ所、何も表示されない状態となりました。VRM.VRMImporter.LoadFromPathの途中でNullReferenceExceptionとなっているようです。

Editor上では動いています。
実行形式(exe)はサポート外なのかもしれませんが、可能であれば対応を希望します。

Windows 10
Unity 2017.2.0f3
output_log.txt

colliderGroupsのHPの仕様と実装が異なっている。

HPではcolliderGroupsのcollidersのoffsetはarrayとなっている(https://dwango.github.io/vrm/vrm_spec/#%E6%8F%BA%E3%82%8C%E3%83%A2%E3%83%8E%E5%BD%93%E3%81%9F%E3%82%8A%E5%88%A4%E5%AE%9A%E8%A8%AD%E5%AE%9A-json-extensions-vrm-secondaryanimation-collidergroups) ので、出力は

"colliders"[
    {
    "offset":[0,0,0],
    "radius":1.0
    }, ...
]

のようにあるべきと思うのですが、jsonスキーマとvrm出力は
https://github.com/dwango/UniVRM/blob/9845d4f87a40108a838b55db00d4664141a5cbe8/specification/0.0/schema/vrm.secondaryanimation.collidergroup.schema.json#L14-L27

"colliders"[
    {
    "offset":{
        "x":0.0,
        "y":0.0,
        "z":0.0
    }
    "radius":1.0
    }, ...
]

のdicに見えます。

後者優先ということでよいですか?HP側に寄せることはありますか?

A trivial glTF grammar error on VRM web site

In this page https://dwango.github.io/vrm/vrm_spec/#json%E6%8B%A1%E5%BC%B5

{
  "extensionsUsed": [
    "VRM"
  ],
  "extensions": [   <--- error! use { instead
    "VRM": {
      // VRMの拡張情報
    }
  ],
  // 通常のGLTF-2.0の情報
}

This has to be...

{
  "extensionsUsed": [
    "VRM"
  ],
  "extensions": {
    "VRM": {
      // VRMの拡張情報
    }
  },
  // 通常のGLTF-2.0の情報
}

Sorry about a very trivial pointing out. If there is a more appropriate place for these web site's issues, please tell me about it.

vrm→bytes→string→bytes→gameobjectの変換

vrm→bytes→string→bytes→gameobjectの変換をするとマテリアルが反映されないです。
1

サンプルコード

///////////////////////////////

using System.Collections.Generic;
using UnityEngine;
using UniRx.Async;
using UniRx;
using VRM;
using System.Linq;

public static class Extensions
{
public static IEnumerable<IEnumerable> Chunks(this IEnumerable list, int size)
{
while (list.Any())
{
yield return list.Take(size);
list = list.Skip(size);
}
}
}

public class Vrmtest : MonoBehaviour
{

async void Start()
{
    var path = Application.streamingAssetsPath + "/" + "Inaba-Haneru.vrm";

    var www = new WWW(path);

    await www;

    Debug.Log(www.bytes);
    var go = await VRMImporter.LoadVrmAsync(www.bytes);

    go.transform.position = new Vector3(1, 1, 1);

    var data = bound(divide(www.bytes));
    var second = await VRMImporter.LoadVrmAsync(data);

     second.transform.position = new Vector3(0, 0, 0);
}

string[] divide(byte[] data)
{
    int length = data.Length / (20000);
    var list =new List<string>();
    foreach (var chunk in data.Chunks(20000))
    {
        var bytes = chunk.ToArray();
        list.Add(System.Text.Encoding.Unicode.GetString(bytes));
    }
    return list.ToArray();
}

byte[] bound(string[] arr)
{
    var list = new List<byte>();
    foreach (var str in arr)
    {
        var encode= System.Text.Encoding.Unicode.GetBytes(str);
        foreach(var bit in encode)
        {
            list.Add(bit);
        }
    }             
    return list.ToArray();
}

}

VRMImporter.LoadVrmAsync()の第4引数のshowとfalseにしても表示される。

exampleのVRMRuntimeLoader.cs#L161-#L165のところを、次のように書き換えました。

VRMImporter.LoadVrmAsync(context, go =>
{
    var delta = Time.time - now;
    Debug.LogFormat("LoadVrmAsync {0:0.0} seconds", delta);
    OnLoaded(go);
}, null, false);

とすると、おそらくなにも表示されなくなるのが正しい挙動だと思われるのですが、以下のように頭だけ表示されない状態になります。
alicia

[仕様要望]VRMのバージョン表記について

extensions.vrm下あたりに、VRM自体のバージョン(例えば、"featureVersion":"0.45", や ["0","4","5"],etc...のように)を記録するようにした方が後々のためになると思いますが、いかがでしょうか。

exporterVersion属性はありますが、他のエクスポーターも存在する(https://github.com/kashikacojp/glTF-Maya-Exporter#support-features 等) ので、これで処理を分けたりするのはしんどいと思います。

v0.4.3でランタイム読み込みでノーマルマップがカラーテクスチャとして扱われている

https://twitter.com/m_sigepon/status/1041284184969375744
UniVRM v0.4.3でランタイムロードでノーマルマップを読み込む場合Unityのエディターで読み際のカラーテクスチャとして読み込まれ、シェーダーに正しくノーマルが反映されません。
エディター上で、VRMファイルを展開する場合は手動でFix nowでノーマルマップとして指定することで正しく扱われます。
これと同じ処理を、ランタイムロードでも行ってほしいです。
フローとしては以下のような感じです。

VRM化>含まれるノーマルは元の紫ノーマル>VRM展開>含まれてる元の状態を復元
VRM化>ランタイムでロード>シェーダーで扱う最適化したデータに変換(DXT5化)

dnnh2qvvaaehufi
dnnh3ikvyaap90k

FBXが読み込めない

windows10 64bit
UniVRM-0.44_67a6
Unity 2018.1.9f2 (64-bit)
の環境で下記のようなエラーが発生し、fbxからvrmを作成した際メタデータなどが生成されません。

JsonParseException: NaN,0.5040084],"min":[-0.696270943,NaN,-0.197250962],"normalized":false},{"bufferView":38,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":39,"byteOffset":0,"type":"VEC2","componentType":5126,"count":44260,"normalized":false},{"bufferView":40,"byteOffset":0,"type":"VEC4","componentType":5126,"count":44260,"normalized":false},{"bufferView":41,"byteOffset":0,"type":"VEC4","componentType":5126,"count":44260,"normalized":false},{"bufferView":42,"byteOffset":0,"type":"VEC4","componentType":5123,"count":44260,"normalized":false},{"bufferView":43,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":13212,"normalized":false},{"bufferView":44,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":18576,"normalized":false},{"bufferView":45,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":27888,"normalized":false},{"bufferView":46,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":52146,"normalized":false},{"bufferView":47,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":29616,"normalized":false},{"bufferView":48,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":7488,"normalized":false},{"bufferView":49,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":2976,"normalized":false},{"bufferView":50,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":1548,"normalized":false},{"bufferView":51,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":624,"normalized":false},{"bufferView":52,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":6408,"normalized":false},{"bufferView":53,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":6756,"normalized":false},{"bufferView":54,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":552,"normalized":false},{"bufferView":55,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":23232,"normalized":false},{"bufferView":56,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":1728,"normalized":false},{"bufferView":57,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":2136,"normalized":false},{"bufferView":58,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":2820,"normalized":false},{"bufferView":59,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":1920,"normalized":false},{"bufferView":60,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":31500,"normalized":false},{"bufferView":61,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":576,"normalized":false},{"bufferView":62,"byteOffset":0,"type":"SCALAR","componentType":5125,"count":1536,"normalized":false},{"bufferView":63,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.00259893388,0.0185383558,0.0016521886],"min":[-0.00259892642,-0.026196003,-0.002207972],"normalized":false},{"bufferView":64,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":65,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.00259893388,0.0185382366,0.0016521886],"min":[-0.0021035,-0.026196003,-0.002207972],"normalized":false},{"bufferView":66,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":67,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.002103515,0.0185383558,0.00165218115],"min":[-0.00259892642,-0.0261957645,-0.00220614672],"normalized":false},{"bufferView":68,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":69,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.00587756559,0.0278254747,0.0030503273],"min":[-0.00152682513,-0.01636517,-0.00236249715],"normalized":false},{"bufferView":70,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":71,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.00152681768,0.0278253555,0.0030516088],"min":[-0.005877875,-0.01636517,-0.00236180425],"normalized":false},{"bufferView":72,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":73,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.00587756559,0.0278254747,0.0030516088],"min":[-0.005877875,-0.01636517,-0.00236249715],"normalized":false},{"bufferView":74,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":75,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.0140942484,0,0.008262441],"min":[-0.0140944477,0,-0.008429758],"normalized":false},{"bufferView":76,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":77,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[7.450581E-09,0.0193784237,7.450581E-09],"min":[-7.450581E-09,-0.0193781853,-7.450581E-09],"normalized":false},{"bufferView":78,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":79,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[5.14090061E-07,0.0193784237,3.054738E-07],"min":[-8.828938E-07,-0.0193781853,-7.450581E-09],"normalized":false},{"bufferView":80,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":81,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.0140944291,8.34465E-07,0.007822558],"min":[-0.0140942335,-3.57627869E-07,-0.008371502],"normalized":false},{"bufferView":82,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":83,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.00351539813,0.003692031,0.00189177692],"min":[-0.00351621024,-0.0036958456,-0.00189229846],"normalized":false},{"bufferView":84,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":85,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.002704408,0.00369465351,0.00298711658],"min":[-0.002705142,-0.00369858742,-0.00298446417],"normalized":false},{"bufferView":86,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":87,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.003250327,0.0196490288,2.17184424E-05],"min":[-0.003250327,-1.28671527E-05,-0.00692003965],"normalized":false},{"bufferView":88,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":89,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.003250327,0.0196490288,2.17184424E-05],"min":[-0.003250327,-1.28671527E-05,-0.003565818],"normalized":false},{"bufferView":90,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":91,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.004294075,0.009670019,2.17184424E-05],"min":[-0.004294075,-1.28671527E-05,-0.00175479054],"normalized":false},{"bufferView":92,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":93,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.004294075,0.009670019,0.008044243],"min":[-0.004294075,-0.02935791,-0.00175479054],"normalized":false},{"bufferView":94,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":95,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.000363826752,0.0006403923,0.007069662],"min":[-0.000363886356,-0.0268105268,-0.000487208366],"normalized":false},{"bufferView":96,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":97,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.0006852746,0.0011152029,0.0129897],"min":[-0.0006853342,-0.04050815,-0.000532120466],"normalized":false},{"bufferView":98,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":99,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[2.98768282E-06,0.00701189041,0.000141501427],"min":[-8.7171793E-07,-0.000779628754,-0.00126823783],"normalized":false},{"bufferView":100,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":101,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.01822515,0.000381588936,0.00402767956],"min":[-0.0182251073,-0.0176953077,-0.0311462879],"normalized":false},{"bufferView":102,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":103,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.00415974855,0.03229499,0.00710212439],"min":[-0.002199337,-0.01297009,-0.003953904],"normalized":false},{"bufferView":104,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":105,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.00219935551,0.03229499,0.007098645],"min":[-0.00416049175,-0.01297009,-0.00395388156],"normalized":false},{"bufferView":106,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":107,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.00368160754,0.0267214775,0.00390847772],"min":[-0.00341420621,-0.0218337774,-0.00522004068],"normalized":false},{"bufferView":108,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":109,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.00341412053,0.0267214775,0.003906086],"min":[-0.0036816,-0.021828413,-0.005219668],"normalized":false},{"bufferView":110,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":111,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.002088014,0.00149321556,0.00600194931],"min":[-0.002088014,-0.02383697,-0.0004582554],"normalized":false},{"bufferView":112,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":113,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.002088014,0.00215089321,0.0129897],"min":[-0.002088014,-0.04050815,-0.000532120466],"normalized":false},{"bufferView":114,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":115,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.004292272,0.0006098747,0.006704703],"min":[-0.00429226458,-0.0258171558,-0.00047826767],"normalized":false},{"bufferView":116,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":117,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.0162778441,0.00052022934,0.005637586],"min":[-0.016277818,-0.0227723122,-0.0311462879],"normalized":false},{"bufferView":118,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":119,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.00128668547,0.00495553,0.02392003],"min":[-0.00128668547,-0.0588876,-0.00212204456],"normalized":false},{"bufferView":120,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":121,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[2.98768282E-06,6.68652356E-05,0.00419316441],"min":[-8.7171793E-07,-1.28671527E-05,-2.63601542E-05],"normalized":false},{"bufferView":122,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":123,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.0009175241,6.68652356E-05,0.000927105546],"min":[-0.0009175204,-0.00181686878,-0.0009429231],"normalized":false},{"bufferView":124,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":125,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.00299384817,0.000341653824,0.00323155522],"min":[-0.002993852,-0.003663659,-0.00483503938],"normalized":false},{"bufferView":126,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":127,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.00703858025,6.68652356E-05,0.0007731691],"min":[-0.007038612,-0.0186811686,-0.00520066172],"normalized":false},{"bufferView":128,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":129,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.002828326,6.68652356E-05,0.0007731691],"min":[-0.007038612,-0.0186811686,-0.005200647],"normalized":false},{"bufferView":130,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":131,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.00703858025,6.68652356E-05,0.0007731542],"min":[-0.00282829255,-0.01868093,-0.00520066172],"normalized":false},{"bufferView":132,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":133,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.0300208982,0.00679790974,2.17184424E-05],"min":[-0.0297110416,-1.28671527E-05,-0.0306674689],"normalized":false},{"bufferView":134,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":135,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.0293978043,0.0252900124,0.0218598917],"min":[-0.029397944,-0.0241668224,-0.06863149],"normalized":false},{"bufferView":136,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":137,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.001343511,0.0026049614,2.17184424E-05],"min":[-0.001343526,-0.00101351738,-8.414686E-05],"normalized":false},{"bufferView":138,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":139,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.000319404528,0.0026049614,2.17184424E-05],"min":[-0.001343526,-0.00101351738,-8.414686E-05],"normalized":false},{"bufferView":140,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":141,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.001343511,0.0026049614,2.17184424E-05],"min":[-0.000319402665,-0.00101351738,-8.41319561E-05],"normalized":false},{"bufferView":142,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":143,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[2.98768282E-06,0.0018273592,0.000223696232],"min":[-1.74343586E-06,-0.004432678,-0.000331640244],"normalized":false},{"bufferView":144,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":145,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[2.98768282E-06,6.68652356E-05,0.04504833],"min":[-8.7171793E-07,-1.28671527E-05,-2.63601542E-05],"normalized":false},{"bufferView":146,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":147,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.0198034942,0.0252900124,0.0218598917],"min":[-0.019803483,-0.019808054,-0.06959264],"normalized":false},{"bufferView":148,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":149,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[0.000321865082,6.68652356E-05,2.17184424E-05],"min":[-0.000321865082,-0.09688306,-0.0423107445],"normalized":false},{"bufferView":150,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":151,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[2.98768282E-06,0.006707549,0.00359795988],"min":[-8.7171793E-07,-1.28671527E-05,-0.0006483793],"normalized":false},{"bufferView":152,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"normalized":false},{"bufferView":153,"byteOffset":0,"type":"VEC3","componentType":5126,"count":44260,"max":[2.98768282E-06,0.006707549,0.00

BlendShapeProxyの各BlendShapeClipの値について

現状EditorGUIによって、各BlendShapeClipの値をいじれるようになっていますが、
Playモードのみ編集なのには何か理由がありますでしょうか?

可能であれば、
・Editモードでの編集と表情への反映
・AnimationClipで編集できるようにプロパティ化

などできるようになりますと、生のBlendShapeの値をいじる必要がなくなり幅が広まると思います。
ご検討のほどよろしくお願いします。

colliderGroupのoffset座標のz軸のシリアライズについて

OpenGL系でなくunity系の座標のままシリアライズされているように思うのですが、いかがでしょうか。
https://3d.nicovideo.jp/works/td44058 をuni0.45で出力しなおしたものを拙作(https://github.com/iCyP/VRM_IMPORTER)で インポートし、そのままエクスポートするとコライダーのZ軸が逆になってしまいます。コライダーの座標変換のみz軸を*-1して出力するとDLしたVRMと同じコライダーの位置に戻ります。ご確認お願い致します。

Normal mapが書き換わる

MToonにNormal mapを設定し、vrmを出力、再び読み込むと、Normal mapが書き換わっています。
OS:Windows10 64bit
Unityのバージョン:Unity-2018.2.0f2
UniVRMのバージョン:0.40

ExportしようとするとArgumentExceptionとなりExportできない

この記事を参考に手順を行ってみたところ途中でエラーメッセージが表示されうまくいきませんでした。

どのようにすればExportできるようになるのでしょうか。

手順

  1. blenderからfbxファイルをexport
  2. unityに読み込み
  3. rigの設定をhumanoidに
  4. configureからボーンの設定を確認
    • ✔️ configure という表示になっているので正しい状態になっていると判断
  5. VRM Exporterから必要事項を入力する
  6. Exportボタンを押下する
  7. Save VRMでファイル名を指定して保存
  8. Consoleウィンドウにエラーメッセージが出力される

期待する動作

Exportできる

環境

  • Unity 5.5.4p4
  • Blender 2.79
  • windows 10 Home

コンストレイントをサポートしてほしい

現在、VRMではSpringBoneによる揺れ物をサポートしていますが
それと同じように、拡張情報としてVRMでコンストレイントをサポートしてほしいです。
すでに、頭部などでLookAtとして特定の部位に対して実装されていると思います。
これを、セカンダリのように任意のジョイントに設定できる機能が欲しいです。
例えば、使いたい場所として体の、肘ボーンや膝ボーンやねじれ防止のツイストボーンをコンストレイントで追従させるというような箇所です。
それ以外にも、衣装の一部を連動させて動かしたいなどにもコンストレイントが可能になるとウェイトのみで処理しないといけない部分の問題が解決します。

サポートしてほしいコンストレイントとしては、Unity標準でサポートされているような以下のコンストレイントになります。
https://docs.unity3d.com/Manual/Constraints.html
・方向コンストレイント(Aim Constraints)
・位置コンストレイント(Position Constraints)
・回転コンストレイント(Rotation Constraints)
・スケールコンストレイント(Scale Constraints)

v0.41以降でインポートしたモデルをFBX Exporterで変換できない

再現手順:

  1. Unityをインストール(確認したバージョン: 2018.2.6f1)
  2. FBX Exporterをインストール(確認したバージョン: 1.3.0f1)
  3. UniVRMのv0.41以降をインストール
  4. VRoidで適当にモデルを作成してエクスポート
  5. エクスポートしたモデルをUnityにインポート。「NormalMap setings」のダイアログでは「Fix now」を選択
  6. インポートで作成されたprefabを適当にシーンに配置
  7. Hierarchyタブのツリーでモデルを右クリックし、「Export to FBX...」でエクスポート

エラーメッセージ:

ArgumentNullException: Argument cannot be null.
Parameter name: key
System.Collections.Generic.Dictionary`2[UnityEngine.Transform,UnityEngine.Matrix4x4].TryGetValue (UnityEngine.Transform key, UnityEngine.Matrix4x4& value) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:588)
FbxExporters.Editor.ModelExporter.ExportBoneTransform (Unity.FbxSdk.FbxNode fbxNode, Unity.FbxSdk.FbxScene fbxScene, UnityEngine.Transform unityBone, FbxExporters.Editor.SkinnedMeshBoneInfo boneInfo)
FbxExporters.Editor.ModelExporter.ExportSkeleton (UnityEngine.SkinnedMeshRenderer skinnedMesh, Unity.FbxSdk.FbxScene fbxScene, System.Collections.Generic.Dictionary`2& skinnedMeshToBonesMap)
FbxExporters.Editor.ModelExporter.ExportSkinnedMesh (UnityEngine.GameObject unityGo, Unity.FbxSdk.FbxScene fbxScene, Unity.FbxSdk.FbxNode fbxNode)
FbxExporters.Editor.ModelExporter.ExportMesh (UnityEngine.GameObject gameObject, Unity.FbxSdk.FbxNode fbxNode)
FbxExporters.Editor.ModelExporter.ExportInstance (UnityEngine.GameObject unityGo, Unity.FbxSdk.FbxNode fbxNode, Unity.FbxSdk.FbxScene fbxScene)
FbxExporters.Editor.ModelExporter.ExportComponents (Unity.FbxSdk.FbxScene fbxScene, Boolean exportAnim)
FbxExporters.Editor.ModelExporter.ExportAll (IEnumerable`1 unityExportSet, System.Collections.Generic.Dictionary`2 animationExportData)
FbxExporters.Editor.ModelExporter.ExportObjects (System.String filePath, UnityEngine.Object[] objects, IExportOptions exportOptions)
FbxExporters.Editor.ExportModelEditorWindow.Export ()
FbxExporters.Editor.ExportOptionsEditorWindow.OnGUI ()
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:232)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
UnityEditor.HostView.Invoke (System.String methodName, System.Object obj) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:295)
UnityEditor.HostView.Invoke (System.String methodName) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:288)
UnityEditor.HostView.InvokeOnGUI (Rect onGUIPosition) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:255)

上記の手順ではVRoidで出力したモデルを使いましたが、必ずしもVRoidで出力したモデルでなくても発生するようです(とりあえず青いユニティちゃんCRSで発生確認)。

v0.40では発生しないことから回避策として「UniVRM v0.40を使う」が知られているので、UniVRMのバージョンアップの妨げになっています。

設定した関連コンポーネントのプロパティが失われる

Unityバージョン:2017.3.1f1
UniVRMバージョン:v0.43

VRMエクスポート時に生成された
.blendshape以下のファイルの各プロパティ
.materials以下のファイルの各プロパティ
の情報が、別プロジェクトに移動した時に全て失われ、gitなどでチェックアウト時に再度セットアップが必要になります。
Unityプロジェクトのディレクトリを丸ごとコピーして別端末で開いたときも同様でした。

BoneNormalizerのブレンドシェイプベイクの処理に問題

BoneNormalizerのブレンドシェイプベイクの処理に問題があると感じています。
例えば、ニコニ立体ちゃんを読み込んで次のような操作をします。
(ここからダウンロードしました http://3d.nicovideo.jp/works/td32797)
faceオブジェクトのeye_Calmシェイプをウェイト80にして
Freeze T-Poseします。
normalizedのモデルに対して、faceのeye_blinkのウェイトを100にします。
そうすると、目がつぶれてしまいます。

私は、下記の要領で修正しました。
BoneNormalizer.csの241行目あたりに下記の処理を追加した。
// clear
for (int i = 0; i < srcMesh.blendShapeCount; ++i)
{
srcRenderer.SetBlendShapeWeight(i, 0f);
}

タンジェントがプリプロセッサで自動的生成されている

前回立てたIssuesの検証結果です。
UniVRMというよりUniGLTF側の問題かもしれませんが、前回の報告の結果も含めてこちらの方にIssueを立てておきます。

現状、タンジェントが自動生成されてしまっており(RecalculateTangentsが実行されているよう?)VRoid上で出力されているタンジェントと自動生成されたタンジェントで結果がことなってしまうため#46の問題が起きているようでした。
(GLTF_EXPORT_TANGENTS、UNIGLTF_IMPORT_TANGENTS)はデフォルトではオフになっているようですが、これがデフォルトで有効になるように変更していただけないでしょうか。
Unity、UE4向けにノーマルマップの出力をこれまで行ってきましたが、タンジェントが自動生成になっていると正しく読み込めないケースがあり基本的にはMayaのFBXエクスポート時にタンジェントをエクスポートする設定、エンジン側で読み込むという形をとっております。
そのため、UniVRMでもタンジェントは自動生成ではなくオブジェクトが持っているタンジェントを読み込んでいただけるとこのような問題が起きるのを防げます。

そのまま読み込むインポート設定ですと、出力時にエクスポート設定を行えばいいだけですがランタイム読み込み側で自動生成になっているとデータ作成側は対応不能になります。

ご検討よろしくお願いします。

glTF標準のマテリアル情報がほとんどエクスポートされない

現状だとUnity以外の実装もUnity向けの情報をVRM独自拡張から解析して変換しなければならないのが辛いです。glTF標準で表現できない情報であれば仕方ありませんが、たとえばUnityのRenderTypeタグのうち透明度に関わるものは

UnityのRenderTypeタグ glTFのmaterial.alphaModeプロパティ
Opaque OPAQUE (デフォルトなので出力は不要)
Transparent BLEND
TransparentCutout MASK

のように対応します。またVRM/Unlit系シェーダーは、すでに標準化されているKHR_materials_unlit拡張で(ZWriteの有無以外)ほぼ表現可能です。VRM/UnlitCutoutなどのシェーダーの_Cutoffプロパティは、glTFのmaterial.alphaCutoffに変換して表現できます。

互換性のために従来の情報を維持するのはかまいませんが、これらのglTF標準の情報もエクスポートできないでしょうか。VRMの独自拡張に非対応のglTFビューアーとの相互運用性も向上すると思われます。

MatcapテクスチャがMipmap関連の何かでリムがジャギってしまう問題

UniVRM v0.44のエディターインポートで読み込んだVRMをシーンに読み込むとMatCapテクスチャがMipmap関連の何かが原因でジャギってしまう問題が起きているようです。
ランタイムロードでは起きてないようです。
状態は、UniVRM v0.44でVRMファイルをインポートして新規シーンに配置しただけです。
この問題は、UniVRM v0.43でエディタ、ランタイムともの読み込みで起きていてv0.44テストバージョンで試したときは両者ともで解決していました。
MatCapテクスチャのGenerate Mip Mapをオフにすると綺麗になりますが、v0.44テストバージョンではオフにせずにキレイな状態になりました。
default

こちらが、UniVRM v0.43とv0.44テストバージョンでエディターインポート、ランタイムロードで比較した画像です。
両者とも、MatCapテクスチャのGenerate Mip Mapはオンの状態でAniso Levelも1の状態です。
univrm55
vrm22

VRMSpringBoneのコピーについて

VRM/Scripts/Format/VRMExportSettings.csの142行目。
AddComponentして、VRMSpringBoneのコピーを作成していると思いますが、
この際、パラメータコピーが行われてないのではないでしょうか?

例えば、下記のようなコピーが必要なのではないでしょうか。
dst.m_stiffnessForce = src.m_stiffnessForce;
dst.m_gravityPower = src.m_gravityPower;
dst.m_gravityDir = src.m_gravityDir;
dst.m_dragForce = src.m_dragForce;

Do not work in runtime

It's a pity that I build in Unity2017.4 and Unity2018.1(5.6 crash out) with windows10, only work in EditorMode faultlessly.Can you help me?Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.