mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-04-24 23:18:04 -05:00
ITextureDeserializer の説明
This commit is contained in:
parent
c395f9c40e
commit
a28bf729b9
|
|
@ -1,4 +1,4 @@
|
|||
# v0.106 SpringBone の手動更新
|
||||
# `v0.106` SpringBone の手動更新
|
||||
|
||||
from {doc}`v0.106.0</release/100/v0.106.0>`
|
||||
|
||||
|
|
|
|||
61
docs/api/0_76_texture_deserializer.md
Normal file
61
docs/api/0_76_texture_deserializer.md
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
# `v0.76` ITextureDeserializer(テクスチャーローダー)
|
||||
|
||||
このインタフェースを使うとテクスチャーロードをカスタマイズできます。
|
||||
|
||||
## UnityTextureDeserializer
|
||||
|
||||
UniVRM の実装は、`UnityTextureDeserializer` です。
|
||||
|
||||
<https://github.com/vrm-c/UniVRM/blob/master/Assets/VRMShaders/GLTF/IO/Runtime/Texture/Importer/UnityTextureDeserializer.cs>
|
||||
|
||||
[ImageConversion.LoadImage](https://docs.unity3d.com/ja/2020.3/ScriptReference/ImageConversion.LoadImage.html) を使用して `png` や `jpeg` をロードできます。
|
||||
通常の `glTF` はテクスチャー形式として `png` と `jpeg` を格納できます。
|
||||
|
||||
`ImageConversion.LoadImage` はメインスレッドをブロックします。
|
||||
大きなテクスチャーや大量のテクスチャーをロードすると画面が固まることがあります。
|
||||
|
||||
`png` や `jpeg` から `raw pixel` を取得する部分をスレッドに乗せて非同期処理にすることで
|
||||
パフォーマンスを向上させる余地があります。
|
||||
|
||||
## 差し替え方法
|
||||
|
||||
`new UniGLTF.ImporterContext` の引き数で指定することができます。
|
||||
|
||||
```cs
|
||||
public ImporterContext(
|
||||
GltfData data,
|
||||
IReadOnlyDictionary<SubAssetKey, UnityEngine.Object> externalObjectMap = null,
|
||||
ITextureDeserializer textureDeserializer = null, // 👈 これ
|
||||
IMaterialDescriptorGenerator materialGenerator = null)
|
||||
```
|
||||
|
||||
`new VRM.VRMImporterContext` の引き数で指定することができます。
|
||||
|
||||
```cs
|
||||
public VRMImporterContext(
|
||||
VRMData data,
|
||||
IReadOnlyDictionary<SubAssetKey, Object> externalObjectMap = null,
|
||||
ITextureDeserializer textureDeserializer = null, // 👈 これ
|
||||
IMaterialDescriptorGenerator materialGenerator = null,
|
||||
bool loadAnimation = false)
|
||||
```
|
||||
|
||||
`new UniVRM10.Vrm10Importer` の引き数で指定することができます。
|
||||
|
||||
```cs
|
||||
public Vrm10Importer(
|
||||
Vrm10Data vrm,
|
||||
IReadOnlyDictionary<SubAssetKey, UnityEngine.Object> externalObjectMap = null,
|
||||
ITextureDeserializer textureDeserializer = null, // 👈 これ
|
||||
IMaterialDescriptorGenerator materialGenerator = null,
|
||||
bool useControlRig = false
|
||||
)
|
||||
```
|
||||
|
||||
## UnityAsyncImageLoader に置き換える例
|
||||
|
||||
ISSUE に使用例をいただきました。
|
||||
|
||||
<https://github.com/vrm-c/UniVRM/issues/1982>
|
||||
|
||||
[UnityAsyncImageLoader](https://github.com/Looooong/UnityAsyncImageLoader)を使ってパフォーマンスを向上できます。
|
||||
|
|
@ -26,4 +26,5 @@ fast_spring_bone
|
|||
0_95_highlevel
|
||||
0_96_1_use_gamma_colorspace
|
||||
0_106_spring_manual_update
|
||||
0_76_texture_deserializer
|
||||
```
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user