Skip to content

Releases: vrm-c/UniVRM

v0.45

v0.44

11 Oct 11:25
Compare
Choose a tag to compare

詳細はこちら

sampleの修正

.Net4.6 にした場合にコンパイルが通らない部分がありました。

UniVRM-RuntimeLoaderSample_b7cb-0.44_67a6.unitypackage だけ更新しています。

v0.43

06 Sep 07:54
Compare
Choose a tag to compare

english

※大切なお知らせ※

0.41以前のUniVRMでは出力に誤りがあり、本バージョンでこの問題を修正した結果、以下の影響があります

  • 0.42以降で出力したデータにおいて、0.41以前のUniVRMで正しく読めないことがあります

UniVRMを用いてVRMデータをエクスポートする際は、影響をご確認の上ご利用ください
VRMデータをインポートするためにUniVRMをご利用いただいているかたは、UniVRMの更新をお願いいたします。

BlendShapeオブジェクトの保存バグの修正

v0.42で
以下の手順でBlendShape.Clipsが保存されない場合があります。

  • VRMをImport
  • Unityを終了
    (BlendShape.Clipsが、ディスクに保存されていない)
  • Unityを起動
  • 該当する model_name.BlendShapes/BlendShape のBlendShapeProxy.Clipsが空になってしまう

empty

↑空になった状態

valid

↑正常

v0.43はこの問題を修正しました。

v0.42で空になってしまったBlendShapeの復旧方法

v0.43にアップデート後に以下のどちらかの方法で復旧できます。

  1. VRMファイルを右クリックからreimportで再インポートを実行できます。
    reimport

  2. v0.42で空になった状態を復旧するメニューを追加しました。
    restore
    ↑右上の歯車のアイコンクリックで表示される Restore メニューを実行してください。
    正常な状態に復帰します(同じフォルダのBlendShapeClipsを集めて設定する)。

その他の修正

  • ランタイムロード時のノーマルマップ変換の修正 ousttrue/UniGLTF#21
  • 正規化時に非表示のボーンがあった時のエラー抑止とボーンウェイトの修正 #31 。非表示のボーンにウェイトがある場合はウェイトが無くなってしまうので、ウェイトのあるボーンは非表示にしないように注意してください。 (未マージ。次バージョン)
  • VRMSpringBone.Setup(force)引数追加 b99e7cb

v0.42

31 Aug 07:52
Compare
Choose a tag to compare

english

※大切なお知らせ※

0.41以前のUniVRMでは出力に誤りがあり、本バージョンでこの問題を修正した結果、以下の影響があります

  • 0.42以降で出力したデータにおいて、0.41以前のUniVRMで正しく読めないことがあります

UniVRMを用いてVRMデータをエクスポートする際は、影響をご確認の上ご利用ください
VRMデータをインポートするためにUniVRMをご利用いただいているかたは、UniVRMの更新をお願いいたします。

UVのバグ修正

v0.41以前のバージョンでUnity・GLTF間でUVを変換するコードに間違いがありました。

修正前

var converted_uv = new Vec2(uv.x, -uv.y); // 負になってしまう

修正後

var converted_uv = new Vec2(uv.x, 1.0f-uv.y);

インポート・エクスポート両方で影響があります。

修正による影響

  • v0.42でエクスポートしたVRMのUVが正しくなります。
  • v0.41以前で正しいUVのVRMをロードすると逆にVが負になってしまいます。
  • テクスチャにClamp指定があるとテクスチャの表示が乱れます。デフォルトはRepeat
v0.41以前のUVが負のVRM v0.42以降のUVが正しいVRM
UniVRM-0.41以前 でインポート 〇(負x負=正) ×(正x負=負)
UniVRM-0.42以降 でインポート 〇(バージョンチェックしています)
一般的なGLTFローダー ×
  • 開発者の方々はなるべく早くVRM-0.42への更新をよろしくお願いいたします。
  • ImporterでGLTFの/assets/generatorの文字列でUniGLTF-1.16(v0.42のバージョン)より前のバージョンは負のUVが入っているという判定をしています。v0.42はすべてのバージョンを正しくロードできます。

Tangentsのバグ修正

Mesh.RecalculateTangents
の呼び出し方が不適切でTangentsを生成できていませんでした。
呼び出しを修正しました。
ノーマルマップを使用する場合に影響があります。

Tangentsの処理の見直し

  • TangentsはNormalとUVから計算して生成できる
  • 計算することでGLTF・Unity間の座標軸の違いを吸収できる
  • Tangentsを記録しないと容量が節約できる

以上の理由からTangentsをエクスポートしないことにしました。
(問題がある場合は、https://github.com/ousttrue/UniGLTF/issues にご指摘ください)

GLTFの改善

/bufferViews/*/byteStrideを出力しない

OpenGLのinterleaved vbo形式を出力するときに必要なようです。

// interleaved形式の例
struct Vertex
{
  public Vector3 Position;
  public Vector3 Normal;
}
Vertex[] Vertices;

UniGLTFでは頂点属性ごとに別れた配列を出力するのでByteStrideが不要でした。

When this is not defined, data is tightly packed. When two or more accessors use the same bufferView, this field must be defined.

また、GLTFではIndexにByteStrideを出力してはいけないことがわかりました。

GLTF Materialの対応を改善しました

詳細

また、MToon設定時になるべくGLTFのマテリアルにもパラメーターを引き継ぐようにしました。KHR_material_unlit, AlphaMode, DoubleSided

VRMの拡張子をglbに変更して他のツールでロードするときに影響があります。

VRMのJsonShcemaを作成しました

構成変更

  • VRM/UniHumanoid => VRM/UniGLTF/UniHumanoid
  • VRM/Scripts/DepthFirstScheduler(旧UniTask) => VRM/UniGLTF/DepthFirstScheduler

BlendShapeを個別アセットに変更

Prefabのサブアセットとしていましたが、独立したアセットに変更しました。

正規化前のBlendShapeの状態が基準となる

モデルの正規化前にBlendShapeを操作しておくことで、正規化時にBlendShapeの状態をBakeできるようになりました。

UniHumanoidのBVH判定を修正

BVHの骨格推定を修正しました。
ロードに失敗するときは https://github.com/ousttrue/UniHumanoid/issues

v0.41

16 Aug 08:51
Compare
Choose a tag to compare

english

主な更新

  • [Exporter]ノーマルマップのエクスポートが正しくなかったのを修正(DXT5対応)
  • [Exporter]runtimeでのエクスポート時にマテリアルパラメーターが無くなってしまうのを修正(ShaderPropertyを列挙できないことに対策)
  • [BlendShape] BlendShapeClipを削除した時にリストがMissingになる不具合を修正
  • [BlendShape]MaterialAnimationのUV値の操作
  • [BLendShape]MainTex_ST_Sで横、Matex_ST_Tで縦が動く機能
  • [BLendShape]Add BlendShapeClip をしたときに BlendShapeName にファイル名を入れる
  • [SpringBoneColliderGroup]NullCheckの強化

Editor更新

  • [Editor] VRMメニューにバージョン追加
  • [Editor] unitypackageファイル名にgitのhashを追加
  • [Editor] UnitTest追加

API更新

  • [Importer] show引数を追加。VrmImporter.LoadVrmAsync終了時に非表示を選択できるようになった
  • [Importer] glbと同じパスにテクスチャを展開することに依存したコードを拡張
  • [Importer] TaskのバージョンチェックをUNITY_2018_1_OR_NEWER -> UNITY_2017_1_OR_NEWERに変更
  • [Exporter] interface整理
GameObject m_model;
string path;
var vrm = VRMExporter.Export(m_model);
var bytes = vrm.ToGlbBytes();
File.WriteAllBytes(path, bytes);
  • [UniGLTF] extesnsionの実装方法を継承からpartial classに変更
  • [BlendShapeProxy] public void SetValues(IEnumerable<KeyValuePair<BlendShapeKey, float>> values) を追加
  • Rename UniTask => DepthFirstScheduler

JSONに関する修正

/nodes/*/extras/rootBoneを廃止します。

この項目はSkinnedMeshRenderer.rootBoneを記録することを意図していたのですが、
GLTF仕様の/skins/*/skeletonと重複していることがわかりました。

UniVRMをプログラムで利用される場合は、
SkinnedMeshRenderer.updateWhenOffscreen=false
の場合に影響があり得ます。

今後も、JSONレベルの変更はこちらに明記してまいります。

便利関数として、まとめてSkinnedMeshRenderer.updateWhenOffscreen=trueをする
ImporterContext.EnableUpdateWhenOffscreen
を追加しましたのでご利用ください。

v0.40

18 Jul 15:13
Compare
Choose a tag to compare

english

主な修正点

  • (Exporter)secondary以外にアタッチされたVRMSpringBoneも集めるようにした(アタッチしていた場所を記録していないので、Import時にすべてsecondaryにアタッチされます)
  • (Importer)LoadVRMAsyncにOnErrorコールバックを追加
  • (UniGLTF)同じ名前のメッシュがあるときにリネームするコードのバグを修正
  • (UniGLTF)Export対象にTexture2DでないTextureが含まれるときに許可
  • (Exporter)ボーンウェイトが無いSkinnedMeshでRootBoneがセットされていない場合に、RootBoneにスケルトンのルートがセットされてメッシュの位置が不正になるバグを修正(顔だけ違う場所に行ってしまうなど)
  • (UniGLTF)glTF_VRM_MaterialにSerializableを追加
  • (Importer)AssetPostProcessorを停止するシンボルVRM_STOP_ASSETPOSTPROCESSOR
  • (Editor)OSXのコンパイルエラーを修正
  • (UniGLTF)Assets直下にvrmを置いてインポートした時にテクスチャがすべて同じになるバグを修正

v0.39リリース作業にミスがあったため、修正版をv0.40として再リリースしています

  • 現象。Assetsフォルダ直下にVRMを置いたときに、Textureのインポートに失敗する不具合。パスの判定にバグがあります。

v0.39パッケージは、手違いで下記の修正コミットが入る前の状態でした。

v0.38

31 May 13:09
Compare
Choose a tag to compare

バグ修正

エクスポートしたファイルが最低でも50MBになってしまうバグを修正しました。v0.37でVRMを作成された方はご注意ください。

v0.37

30 May 11:48
Compare
Choose a tag to compare

パフォーマンス改善

  • Importer(v0.36)を修正しました(RestoreOlderVersionValuesが非常に遅かった)
  • ImporterのAssetへの保存を修正。MeshをSubAssetにせずにひとつずつ別のファイルに保存します(PrefabのSubAssetにするとデータが大きいときに非常に遅かった)
  • Exporterのバッファの扱いを改善(Bufferを都度拡張していたため非常に遅かった)

その他修正

  • 非同期ローダーのTask版。#6
  • meta取得時にThumbnailテクスチャを取れるようにしました
  • VRMExporterをEditorからScriptsに移動しました
  • ExporterのbytesBuffer.BytesLengthが不正な値になるのを修正しました。#12

v0.36

21 May 10:36
Compare
Choose a tag to compare

GLTFに準拠するための修正

  • json.images[i].extra.name => json.images[i].name

  • json.meshes[i].primitives[j].targets[k].extra.name => json.meshes[i].primitives[j].extras.targetNames[k]

  • json.accessors[i].min/maxがvalidator通るようにした

  • json.nodes[i].extra => json.nodes[i].extras
    ここまで、UniGLTF-1.6

  • json.extensionsUsed追加

VRMの修正・更新

  • VRMBlendShapeProxyのapplyのロジック修正

  • Material.textureのoffsetとscaleの読み書き

  • MToon更新MToon-1.1

  • MeshRendererの正規化に対応(別のオブジェクトを子オブジェクトにして正規化するとうまくいかない件)

  • 同名で異なるマテリアルをImport時にリネーム

  • ShaderをResourcesに移動(Shader Preloading忘れ対策)

  • json.extensions.VRM.exporterVersionを追加しました。VRMをエクスポートしたExporterのバージョンを記録します(UniVRM-0.36など)

v0.35

20 Apr 07:24
d2df01b
Compare
Choose a tag to compare
  • [バグ修正]エクスポーターのバグを修正しました

v0.34
正規化せずにエクスポートしたときに元のモデルをシーンから削除するバグ(正規化のために複製したモデルを削除する処理の誤動作)

  • [バグ修正] ブレンドシェイプのエディタで値が保存されない時があるのを修正しました(SetDirty)。Unity終了時に変更値がアセットに保存されない場合がありました

  • [ブレンドシェイプ]Material色の値蓄積API対応

  • [ブレンドシェイプ]BlendShapeClipEditorのプレハブ参照の改善

  • [インポート] import時にテクスチャをpng形式で保存

  • [コンポーネント] VRMLookAtHeadの同値チェックを削除