forked from vrm-c/vrm.dev
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #38 from vrm-c/merge/20240523
Merge/20240523
- Loading branch information
Showing
11 changed files
with
332 additions
and
73 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# VRM-0.x の EidtorImport 動作 | ||
|
||
[vrmAssetPostprocessor](https://github.com/vrm-c/UniVRM/blob/master/Assets/VRM/Editor/Format/vrmAssetPostprocessor.cs) を起点に、 | ||
vrm の prefab を生成します。 | ||
|
||
:::info | ||
`alicia.vrm` から `alicia.prefab` を生成します。 | ||
::: | ||
|
||
## step1 | ||
|
||
[TextureExtractor](https://github.com/vrm-c/UniVRM/blob/master/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/TextureExtractor.cs) で texture の画像ファイルを書き出します。 | ||
|
||
## step2 | ||
|
||
prefab を構築します。 | ||
|
||
:::info 調査中 | ||
[\[URP\] UrpでVrm0のEditorImportがエラーになる · Issue #2286 · vrm-c/UniVRM · GitHub](https://github.com/vrm-c/UniVRM/issues/2286) | ||
::: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# GLTF / VRM-1.0 の EidtorImport 動作 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
# v0.122 KHR_texture_basisu 拡張対応 | ||
|
||
:::warning これは実験的機能です | ||
::: | ||
|
||
[KHR_texture_basisu 拡張](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_texture_basisu/README.md) に対応する機能です。 | ||
|
||
KHR_texture_basisu 拡張を使用した glTF / VRM ファイルを用意することで、実行時ロードと描画の効率化が図れます。 | ||
|
||
## 対応するモデルと環境 | ||
|
||
モデルファイルに含まれる KTX basisu テクスチャは、予め上下反転しておく必要があります。 | ||
|
||
| | Editor Import | Runtime Import | | ||
| --- | --- | --- | | ||
| 通常のテクスチャ | - | TBD | | ||
| 上下反転したテクスチャ | - | ✅ | | ||
|
||
:::warning | ||
Unity は内部的にすべてのテクスチャを上下反転しています。 | ||
したがって Runtime に圧縮テクスチャをインポートしようとした場合、上下反転した状態で圧縮しておくのが効率的です。 | ||
ただし上下反転した状態では glTF として正しい状態にはならないため、Unity 以外のツールでの利用には注意が必要です。 | ||
|
||
- https://docs.unity3d.com/Packages/com.unity.cloud.ktx@3.4/manual/creating-textures.html | ||
- https://github.com/atteneder/KtxUnity/issues/18 | ||
::: | ||
|
||
## 導入方法 | ||
|
||
### 1. KTX for Unity パッケージを導入 | ||
[KTX for Unity](https://docs.unity3d.com/Packages/com.unity.cloud.ktx@3.4/manual/index.html) パッケージが必要です。 | ||
[パッケージ公式の導入方法](https://docs.unity3d.com/Packages/com.unity.cloud.ktx@3.4/manual/get-started.html) に従ってインストールしてください。 | ||
|
||
:::note | ||
UniVRM は KTX for Unity パッケージの存在を検知して、自動的に対応コードを有効化します。 | ||
具体的には [`USE_COM_UNITY_CLOUD_KTX` シンボルが有効化されます](https://github.com/vrm-c/UniVRM/blob/master/Assets/VRMShaders/GLTF/IO/Runtime/VRMShaders.GLTF.IO.Runtime.asmdef#L18)。 | ||
::: | ||
|
||
### 2. インポート時にオプションを有効化 | ||
glTF ファイルをパースして得られる `GltfData` クラスに存在する `ExtensionSupportFlags` プロパティを設定します。 | ||
具体的には以下の 2 点です。 | ||
|
||
- `GltfData.ExtensionSupportFlags.ConsiderKhrTextureBasisu` | ||
- `true` に設定 | ||
- モデルに定義されている `KHR_texture_basisu` 拡張を考慮してインポートすることを明示するフラグです。 | ||
- `GltfData.ExtensionSupportFlags.IsAllTexturesYFlipped` | ||
- `true` に設定 | ||
- モデルに含まれるテクスチャが Unity 専用に上下反転されていることを明示するフラグです。 | ||
|
||
これらを設定した `GltfData` を、通常の手順でインポートします。 | ||
以下がサンプルコードです。 | ||
|
||
```csharp | ||
public class LoadYFlippedBasisuModel : MonoBehaviour | ||
{ | ||
async void Start() | ||
{ | ||
await LoadGltfModelAsync(); | ||
await LoadVrm10ModelAsync(); | ||
} | ||
|
||
async Task LoadGltfModelAsync() | ||
{ | ||
var path = @"C:\foo\bar\baz.gltf"; | ||
using var data = new AutoGltfFileParser(path).Parse(); | ||
|
||
// NOTE: KHR_texture_basisu 拡張のロードを有効化します。これは Runtime でのみ有効です。 | ||
data.ExtensionSupportFlags.ConsiderKhrTextureBasisu = true; | ||
|
||
// NOTE: 上下反転されたテクスチャを含むモデルの場合、このフラグを有効化します。 | ||
// 現在はこのフラグを有効化しないと読み込めません。 | ||
data.ExtensionSupportFlags.IsAllTexturesYFlipped = true; | ||
|
||
using var loader = new ImporterContext(data); | ||
var model = await loader.LoadAsync(new RuntimeOnlyAwaitCaller()); | ||
model.ShowMeshes(); | ||
} | ||
|
||
async Task LoadVrm10ModelAsync() | ||
{ | ||
var path = @"C:\foo\bar\baz.vrm"; | ||
using var data = new AutoGltfFileParser(path).Parse(); | ||
|
||
data.ExtensionSupportFlags.ConsiderKhrTextureBasisu = true; | ||
data.ExtensionSupportFlags.IsAllTexturesYFlipped = true; | ||
|
||
var vrm10Data = Vrm10Data.Parse(data); | ||
using var loader = new Vrm10Importer(vrm10Data); | ||
var model = await loader.LoadAsync(new RuntimeOnlyAwaitCaller()); | ||
model.ShowMeshes(); | ||
} | ||
} | ||
``` | ||
|
||
## 参考 | ||
|
||
- テクスチャのイメージバイナリを読み込むコード | ||
- https://github.com/vrm-c/UniVRM/blob/v0.121.0/Assets/VRMShaders/GLTF/IO/Runtime/Texture/Importer/KtxTextureDeserializer.cs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,7 @@ | ||
# v0.122.0 🚧WIP🚧 | ||
# v0.122.0 ktx2 y-flip | ||
|
||
https://github.com/vrm-c/UniVRM/milestone/85 | ||
|
||
:::tip (experimental) basisu 向けに import 時にtexture をY-Flip する機能 | ||
[v0.122 KHR_texture_basisu 拡張対応](/api/runtime-import/import_basisu/) | ||
::: |
Empty file.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Oops, something went wrong.