Releases: vrm-c/UniVRM
v0.45
v0.44
詳細はこちら
- https://github.com/dwango/UniVRM/wiki/ReleaseNote-v0.44(ja)
- https://github.com/dwango/UniVRM/wiki/ReleaseNote-v0.44(en)
sampleの修正
.Net4.6
にした場合にコンパイルが通らない部分がありました。
UniVRM-RuntimeLoaderSample_b7cb-0.44_67a6.unitypackage
だけ更新しています。
v0.43
※大切なお知らせ※
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が空になってしまう
↑空になった状態
↑正常
v0.43はこの問題を修正しました。
v0.42で空になってしまったBlendShapeの復旧方法
v0.43にアップデート後に以下のどちらかの方法で復旧できます。
-
v0.42で空になった状態を復旧するメニューを追加しました。
↑右上の歯車のアイコンクリックで表示されるRestore
メニューを実行してください。
正常な状態に復帰します(同じフォルダのBlendShapeClipsを集めて設定する)。
その他の修正
- ランタイムロード時のノーマルマップ変換の修正 ousttrue/UniGLTF#21
正規化時に非表示のボーンがあった時のエラー抑止とボーンウェイトの修正 #31 。非表示のボーンにウェイトがある場合はウェイトが無くなってしまうので、ウェイトのあるボーンは非表示にしないように注意してください。(未マージ。次バージョン)- VRMSpringBone.Setup(force)引数追加 b99e7cb
v0.42
※大切なお知らせ※
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の対応を改善しました
/materials/*/alphaMode
/materials/*/doubleSided
- KHR_material_unlit
- texture sampler(repeat, clamp, mirror)
- ousttrue/UniGLTF#12
- 半透明テクスチャの扱い #28
また、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
主な更新
- [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
主な修正点
- (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
v0.37
パフォーマンス改善
- Importer(v0.36)を修正しました(RestoreOlderVersionValuesが非常に遅かった)
- ImporterのAssetへの保存を修正。MeshをSubAssetにせずにひとつずつ別のファイルに保存します(PrefabのSubAssetにするとデータが大きいときに非常に遅かった)
- Exporterのバッファの扱いを改善(Bufferを都度拡張していたため非常に遅かった)
その他修正
v0.36
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
- [バグ修正]エクスポーターのバグを修正しました
v0.34
正規化せずにエクスポートしたときに元のモデルをシーンから削除するバグ(正規化のために複製したモデルを削除する処理の誤動作)
-
[バグ修正] ブレンドシェイプのエディタで値が保存されない時があるのを修正しました(SetDirty)。Unity終了時に変更値がアセットに保存されない場合がありました
-
[ブレンドシェイプ]Material色の値蓄積API対応
-
[ブレンドシェイプ]BlendShapeClipEditorのプレハブ参照の改善
-
[インポート] import時にテクスチャをpng形式で保存
-
[コンポーネント] VRMLookAtHeadの同値チェックを削除