UniVRM/docs/release/055/v0.46.md

103 lines
2.8 KiB
Markdown

# v0.46
## commit
`ce8c`
## バグ修正
### ImporterContext.Destroyの修正
Runtimeのリソース破棄に使えるように仕様変更しました。
詳細は、`APIの変更` - `ImporterContext.Destroy` を参照。
### BlendShapeProxyでマテリアルのクリア挙動を修正しました
毎フレームマテリアルの基準値にクリアしていたので、変化していないときにセットするのをやめると元に戻ってしまう。
* https://github.com/dwango/UniVRM/issues/72
### thumbnail設定の復旧
* https://github.com/dwango/UniVRM/issues/62
## Importer
### float値にNan、Infがあったときにパース出来るようにした
* ToDo: ExporterでNan Infを検知すべき
### Unity2018.3対応
```csharp
#if NET_4_6 || NET_STANDARD_2_0
```
### Import時に既存のファイル(BlendShapeClip, BlendShapeAvatar, Material)を上書きしない
* https://github.com/dwango/UniVRM/issues/56
改めて作成させるには対象のVRMから作成されたMaterialとBlendShapeClipとBlendShapeAvatarアセットを削除したのちに、vrmファイルをreimportしてください(右クリックのメニューなどからできます)。
## Exporter
### 非アクティブオブジェクトのスキップ
エクスポート時に非アクティブのノードのメッシュエクスポートをスキップするようにしました。
## Component
### VRMFirstPerson.Setupの最適化
設定が `auto` のとき SubMesh の index 配列(`mesh.getIndices`)が長い(10万以上)モデルで異常に負荷がかかるのを修正しました。
## APIの変更
### BlendShapeProxy.SetValue(key, value, immediately)
3引数 `SetValue` の代わりに2引数の明示的な関数を用意しました。
#### AccumulateValue
値を貯めて、後で `Apply` したときに反映する。
`SetValues` の最後にも `Apply` されます。
```csharp
void BlendShapeProxy.AccumulateValue(key, value)
// [Obsolete] SetValue(key, value, false)
```
#### ImmediatelySetValue
即反映する。
```csharp
void BlendShapeProxy.ImmediatelySetValue(key, value)
// [Obsolete] SetValue(key, value, true)
```
### ImporterContext.Destroy
```csharp
ImporterContext.Destroy(bool destroySubAssets)
```
が名前から期待される動作をしていないので `Obsolete` にして用途を明確にした関数を用意しました。
#### DestroyRootAndResources
runtimeインポーター向けのリソース解放。
追加したDisposeはこれを呼びます。
#### EditorDestroyRoot
editorインポート時のprefabの元になったGameObjectをシーンから削除。
旧Destroy(destroySubAssets=false)
#### EditorDestroyRootAndAssets
editorインポート時にエラーが発生した場合などに作ったアセットを削除する。
旧Destroy(destroySubAssets=true)