mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-05-14 14:29:52 -05:00
Merge pull request #1793 from ousttrue/doc/v0_103_1
release UniVRM-0.103.1
This commit is contained in:
commit
86f945d7c2
|
|
@ -26,15 +26,3 @@ fast_spring_bone
|
|||
0_95_highlevel
|
||||
0_96_1_use_gamma_colorspace
|
||||
```
|
||||
|
||||
## VRM-1.0(β)
|
||||
|
||||
```{toctree}
|
||||
:maxdepth: 2
|
||||
|
||||
vrm1_runtime_load
|
||||
vrm1_get_humanoid
|
||||
vrm1_expression
|
||||
vrm1_lookat
|
||||
vrm1_firstperson
|
||||
```
|
||||
|
|
|
|||
|
|
@ -1,7 +0,0 @@
|
|||
# 🚧Humanoid
|
||||
|
||||
## Humanoid Bone の取得方法
|
||||
|
||||
### Humanoidコンポーネント(vrm-1.0)
|
||||
|
||||
### Animator経由(vrm-0.xとvrm-1.0共通)
|
||||
|
|
@ -42,10 +42,10 @@
|
|||
|
||||
</header>
|
||||
<main>
|
||||
<a href="https://github.com/vrm-c/UniVRM/releases/download/v0.103.0/UniVRM-0.103.0_faa1.unitypackage" class="btn">
|
||||
<a href="https://github.com/vrm-c/UniVRM/releases/download/v0.103.1/UniVRM-0.103.1_0585.unitypackage" class="btn">
|
||||
<div class="btn">
|
||||
<h1>Download</h1>
|
||||
<h2>UniVRM-0.103.0</h2>
|
||||
<h2>UniVRM-0.103.1</h2>
|
||||
</div>
|
||||
</a>
|
||||
</main>
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
api/index
|
||||
build
|
||||
implementation/index
|
||||
vrm1/index
|
||||
```
|
||||
|
||||
```{toctree}
|
||||
|
|
|
|||
34
docs/vrm1/index.md
Normal file
34
docs/vrm1/index.md
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
# VRM-1.0 の API
|
||||
|
||||
`vrm-0.103.1`
|
||||
|
||||
`VRM-1.0` ではフォーマットの更新とともに、 `Unity Component` が変わります。
|
||||
また、`VRM-0.X` をロードして新しいコンポーネントで動かすことができます。
|
||||
この場合 `VRM-0` ライセンスで扱ってください。
|
||||
|
||||
```csharp
|
||||
RuntimeGltfInstance instance = await VrmUtility.LoadAsync(path);
|
||||
```
|
||||
|
||||
👇
|
||||
|
||||
```csharp
|
||||
Vrm10Instance vrm10Instance = await Vrm10.LoadPathAsync(path);
|
||||
```
|
||||
|
||||
`VRM-0.x` から設計を変更して `Vrm10Instance` にすべての情報を格納する方式になりました。
|
||||
|
||||
```{admonition} Vrm10Instance
|
||||
:class: info
|
||||
Expression や LookAt, FirstPerson などまとめて入っています。
|
||||
```
|
||||
|
||||
```{toctree}
|
||||
:maxdepth: 2
|
||||
|
||||
vrm1_load
|
||||
vrm1_controlrig
|
||||
vrm1_expression
|
||||
vrm1_lookat
|
||||
vrm1_firstperson
|
||||
```
|
||||
46
docs/vrm1/vrm1_controlrig.md
Normal file
46
docs/vrm1/vrm1_controlrig.md
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# ControlRig 正規化されていないモデルを操作する
|
||||
|
||||
VRM-1.0 は正規化が仕様から除かれました。
|
||||
|
||||
```{admonition} 正規化
|
||||
:class: info
|
||||
|
||||
ヒエラルキーからの 回転、スケールの除去。
|
||||
その状態での Binding 行列再生成。
|
||||
です。
|
||||
すべてのノードの回転が 0 のときが初期姿勢(T-Pose)であるという仕様で、
|
||||
プログラムから統一的にモデルを操作することが可能でした。
|
||||
```
|
||||
|
||||
正規化されていないモデルも含めて統一的にポーズを付けるインターフェスとして、 `ControlRig` が新規に導入されました。 `v0.103`
|
||||
|
||||
基本的な使い方は下記のとおりです。
|
||||
`UnityEngine.Animator.GetBoneTransform` の代わりに使う想定です。
|
||||
|
||||
```csharp
|
||||
Vrm10RuntimeControlRig rig = instance.Runtime.ControlRig
|
||||
|
||||
// 使用例
|
||||
var transform = rig.GetBoneTransform(HumanBodyBones.Head);
|
||||
transform.localRotation = rotation;
|
||||
```
|
||||
|
||||
```{admonition} ランタイムロード専用
|
||||
:class: warn
|
||||
|
||||
`v0.103` 現在この機能は Editor で Asset 生成されたモデルでは動作しません。
|
||||
初期姿勢を確実に取得する方法を検討中です。
|
||||
```
|
||||
|
||||
vrm-0.x でプログラムから HumanoidBone に回転クォータニオンを代入していた
|
||||
場所を `Vrm10RuntimeControlRig.GetBoneTransform` で置きかえることで
|
||||
同じポーズを当てることができます。
|
||||
|
||||
## 動作の説明
|
||||
|
||||
毎フレーム `Vrm10Instance` が `Vrm10RuntimeControlRig` からVRM-1.0のヒエラルキーにポーズを転送します。
|
||||
|
||||
`Vrm10RuntimeControlRig` が初期姿勢を記憶していて、
|
||||
`正規化ポーズ localRotation => 初期姿勢を加味 => 元のヒエラルキーの localRotation` に変換という処理をします。
|
||||
|
||||
初期姿勢は `T-Pose` ですが、 `VRM-0.X` のように正規化されている必要がありません。
|
||||
|
|
@ -1,46 +1,23 @@
|
|||
# RuntimeLoad
|
||||
|
||||
## Runtime Normalization (from `v0.92.0`)
|
||||
`Assets\VRM10\Samples\VRM10Viewer\VRM10ViewerUI.cs`
|
||||
|
||||
`VRM-1.0` は、ノードの `回転・スケールの削除` をしません。
|
||||
後方互換性のため、 `RuntimeLoad` 時に動的に `回転・スケールの削除` する機能を提供します。
|
||||
|
||||
> `VRM-0.x` のエクスポート時の正規化に相当する処理です
|
||||
|
||||
以下のように doNormalize に true を付与してください。
|
||||
## RuntimeLoad
|
||||
|
||||
```csharp
|
||||
using (var loader = new Vrm10Importer(vrm,
|
||||
// normalize option
|
||||
doNormalize: true))
|
||||
{
|
||||
RuntimeGltfInstance instance = await loader.LoadAsync();
|
||||
return instance;
|
||||
}
|
||||
Vrm10Instance vrm10Instance = await Vrm10.LoadPathAsync(path);
|
||||
```
|
||||
|
||||
## Migration(VRM-0 to VRM-1)
|
||||
|
||||
`VRM-1.0` は、 `VRM-0.x` もロードできます。
|
||||
その場合、あたらしい meta への変換が発生し互換性の無い部分はすべて `不許可` の値になります。
|
||||
このため、変換前のライセンスにアクセスする API を提供します。
|
||||
変換前のライセンスにアクセスできます。
|
||||
|
||||
サンプルの `Assets\VRM10\Samples\VRM10Viewer\VRM10ViewerUI.cs` も参照してください。
|
||||
|
||||
```csharp
|
||||
static IMaterialDescriptorGenerator GetVrmMaterialDescriptorGenerator(bool useUrp)
|
||||
{
|
||||
if (useUrp)
|
||||
{
|
||||
return new Vrm10UrpMaterialDescriptorGenerator();
|
||||
}
|
||||
else
|
||||
{
|
||||
return new Vrm10MaterialDescriptorGenerator();
|
||||
}
|
||||
}
|
||||
|
||||
async Task<RuntimeGltfInstance> LoadAsync(string path)
|
||||
async Task<Vrm10Instance> LoadAsync(string path)
|
||||
{
|
||||
GltfData data = new AutoGltfFileParser(path).Parse();
|
||||
|
||||
|
|
@ -48,8 +25,7 @@ async Task<RuntimeGltfInstance> LoadAsync(string path)
|
|||
if (Vrm10Data.TryParseOrMigrate(data, doMigrate: true, out Vrm10Data vrm))
|
||||
{
|
||||
// vrm
|
||||
using (var loader = new Vrm10Importer(vrm,
|
||||
materialGenerator: GetVrmMaterialDescriptorGenerator(m_useUrpMaterial.isOn)))
|
||||
using (var loader = new Vrm10Importer(vrm))
|
||||
{
|
||||
// migrate しても thumbnail は同じ
|
||||
var thumbnail = await loader.LoadVrmThumbnailAsync();
|
||||
|
|
@ -67,7 +43,7 @@ async Task<RuntimeGltfInstance> LoadAsync(string path)
|
|||
|
||||
// モデルをロード
|
||||
RuntimeGltfInstance instance = await loader.LoadAsync();
|
||||
return instance;
|
||||
return instance.GetComponent<Vrm10Instance>();
|
||||
}
|
||||
}
|
||||
else{
|
||||
Loading…
Reference in New Issue
Block a user