VCI拡大縮小について

※この記事は、[VCI(VirtualCast Interactive) Advent Calendar 2023] の15日目の記事です。

VCIのアイテムを拡大縮小する時でよく見るミスと自分の回避方法を紹介します！

:::note warn
バーチャルキャストバージョン2.5.2bまでの資料です、バーチャルキャストのアップデートで仕様変更する可能性があります、その場合はバーチャルキャスト最新の公式資料を参考してください。
:::

# VCIのアイテムを拡大縮小する時でよく見るミス

## 拡大縮小すると元の大きさに戻れなくなる

<iframe width="560" height="315" src="https://www.youtube.com/embed/I0l3GRwJJQk?si=v-fnxf3tgmVZEHBB" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

上の動画の右と左みたいに Subitem 掴んで拡大縮小すると一瞬で大きくなったり小さくなったり、そして元のサイズに戻れなくなる

### 原因

https://wiki.virtualcast.jp/wiki/vci/component/sdk/subitem

上の公式 wiki によると Subitem 拡大縮小出来る Scale 範囲は 0.2 ~ 10.0 の間です、この範囲に超た状態で拡大縮小すると自動でこの範囲内に修正されます

動画左 Subitem 元の Scale は 100 だから自動で 10 に修正されて小さくなる
動画右 Subitem 元の Scale は 0.01 だから自動で 0.2 に修正されて大きくなる
そして 0.2 ~ 10.0 範囲内で拡大縮小する

### 回避方法

Scale を 1 以外に設定する時は主に Unity に Import したモデルのサイズを調整したい時や Import した FBX モデルのデフォルト Scale は 1 じゃない（よく見るのは 100 ）時

そういう時は直接モデルオブジェクトに Subitem をつけるではなく、下の画像の通り空のオブジェクトを生成して Scale=1 の Subitem にする
![DocImg1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542363/d5cb33ab-84ab-787d-a95c-cc865d794d9a.png)
そしてその空のオブジェクトの中にモデルオブジェクトを入れてモデルオブジェクトの Scale でサイズを調整する
![DocImg2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542363/3e65028a-5fb7-52b2-8d58-258bb9b67ced.png)

## 拡大縮小すると位置がずれる

<iframe width="560" height="315" src="https://www.youtube.com/embed/x5CEg63kcas?si=vgTmh8AxoRQjwk83" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

### 原因
バーチャルキャストの拡大縮小は Subitem の原点を中心にしています、モデルが Subitem の原点から離れると拡大縮小する時位置も一緒にずれます

### 回避方法
ます Unity の Scene の画面左上を確認してください、もし Center が書いているボタンがあるならそれをクリックして Pivot に変えてください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542363/dca3d36b-092e-8ee6-764e-1700083eab8d.png)

:::note
このボタンは何処に操作軸を表示する設定です
Center はオブジェクト見た目の中心を基準に操作軸を表示
Pivot はオブジェクトの原点を基準に操作軸を表示
:::

これで Subitem の原点が分かるようになる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542363/e9a2fefe-e46b-31f7-a9f9-cd60593d482e.png)

Subitem とモデルの Position を設定して Subitem の原点をモデルの中に入れたらOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542363/5923ae8a-8444-46c1-932c-4ab5d3341ff5.png)

## 拡大縮小の速度が異常に早い

<iframe width="560" height="315" src="https://www.youtube.com/embed/t5cTkXR08N4?si=8L0j-Za1qaCaPgTT" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

Subitem の Scale は 1 なのに上の動画の右みたいに拡大縮小が早すぎで上手くサイズ調整出来ない

:::note warn
以下の原因と回避方法は実験結果からの推測です、バーチャルキャスト公式と違う見解の可能性があります、これに対して公式が何が発表したら公式の最新資料を参考してください
:::

### 原因
これ原理は分からないですけど、複数サイズのコライダーが同じ Subitem に入れると、Subitem 内コライダーの"順番"で拡大縮小の速度変わるらしい

### 回避方法
動画右拡大縮小異常の Subitem 内オブジェクト下の通りです
![DocImg3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542363/d11e21e9-d72a-6fd8-75cf-905667f350ad.png)

モデル以外に大きコライダーの BigColider と小さいコライダーの SmallColider があります、Hierarchy のオブジェクトを掴んで順番を入れ替えて**一番大きいコライダーを一番最後にする**、下の画像のように
![Docimg4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542363/d672b9c2-6fc9-7131-d639-693fc509d065.png)

この配置は動画左 Subitem の配置になります、拡大縮小速度が正常になります

実は同じオブジェクト内に複数コライダーコンポーネントがある時も似た現象が出できます、その場合は下の画像の赤い丸内の三つ点アイコンをクリックして、メニューの Move Up と Move Down で順番設定できます
![Docimg5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542363/97754ba5-78cb-432a-4f4b-cf68088d5b59.png)

# 最後まで読んだあなたに

拡大縮小サンプルVCIの限定公開URLです、ありがとうございました！

https://virtualcast.jp/products/72b8a422c2ebc295e58af88d454b88870911a78357a619bb4a761a3a86df352a

[VCI(VirtualCast Interactive) Advent Calendar 2023]:https://qiita.com/advent-calendar/2023/vci