## SlimeVR Server設定
此篇文章為[自製 SlimeVR Tracker](https://hackmd.io/@bluenk/HJYUijwan)的接續文章。
:::info
:information_source: **在開始前請先將 Tracker 打開**
由於 IMU 會受溫度影響,如果沒有做溫度校正,請在開始做以下步驟前請先打開 Tracker 至少15分鐘,確保溫度上升到一個穩定點。
:::
稍早在測時零件時你應該就已經有安裝 SlimeVR Server 了,如果還沒有的話請到 [SlimeVR/SlimeVR-Server](https://github.com/SlimeVR/SlimeVR-Server) 下載。
打開程式後首先會看到這個歡迎畫面,沒看到這個畫面請按側邊欄的`快速設定`

按下開始設定後會要求你輸入Wifi資訊,由於我們在刷韌體時就已經將Wifi設定好了所以請按跳過`Wifi設定`

之後會寫一些給官方 Tracker 使用者的準備事項,對我們 DIY 的沒有意義所以大概看看就好。
### 分配追蹤器

這邊左右可能會有點混亂,圖中所說的左邊就是你的左邊,把圖中的人(?)當作鏡子中的自己
5+3 Set的建議配戴位置為:
* 胸部 (前/後)
* 臀部* (前/後)
* 左、右大腿 (前/左右側, 靠近膝蓋)
* 左、右腳踝 (前/左右側, 靠近腳踝)
* 左、右腳*
*為外接Tracker
其他配置的佩帶位置請參考[官方Docs](https://docs.slimevr.dev/server/putting-on-trackers.html#recommended-tracker-placement)
### 配戴校正
配置完後按下準備好了會詢問你要怎麼配戴校正,請選`手動配戴校正`

分別將每個Tracker設定好後按下`下一步`
### 重置教學
請不要跳過這個教學,因為你**百分之百會用到**!

### 軀幹比例校正
接這是**最重要**的步驟
這會需要用到你的 HMD,在開始前請先準備好並開啟 SteamVR 並==確定地板高度是正確==的。
> Quest 設定中可以校正地板高度: 設定 > 實體遊戲區 > 邊界 > 設定地板高度
接著站到你的遊戲區域中央,重置中心點。
:::warning
:warning: **SteamVR 啟動時多了一個黑視窗 ?**
啟動時會自動打開一個終端機 (SlimeVR-Feeder-App) 視窗,那是 SlimeVR 與 SteamVR 連結的程式,用於傳送按鍵綁定指令給 server。
若沒有要使用按鍵綁定,可以在 SteamVR 附加元件設定中關閉。
:::
首先要你填入真實身高,這邊選自動判定。如果判定的結果跟你實際身高差很多代表地板高度有問題。
> `v0.13.x` 後不再設定身高而是使用 HMD 高度,測量結果會比實際身高低10公分左右。
接著會請你錄製一連串的動作,過程中請不要移動腳部,SlimeVR 會運用這些資料來判斷你的軀幹比例與長度
雙腳與地面垂直,腳尖向正前方指不要內外八,蹲下時膝蓋也是一樣向正前方指

<iframe width="100%" height="400" src="https://www.youtube.com/embed/SYqfQdVseF4?si=w-cA9n5MgZp6MBOR&start=279" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
錄製完成後會計算你的骨架比例,確認數值沒問題就完成設定了!
---
### 介面說明

*設定內開啟開發者模式能夠看到更多資料(旋轉、溫度等)*
1. **左右偏擺重置** (快速重置/Yaw重置):
將所有 Tracker 的 Yaw 軸重置成與 HMD 面對一樣的方向,準確度比完整重置差,使用時將身體部位面向正前方。
> 使用時機:
> - 不方便站立時
> - 不要求準確度時可快速重置
2. **完整重置**:
將所有 Tracker 的 Yaw/Pitch/Roll 歸零,使用時須站直身體。
> 使用時機:
> - 使用配戴重置前
> - 要求準確度時
> - 小幅度調整 Tracker 配戴位置後
3. **配戴重置**:
複寫 Tracker 的配戴位置,使用前請先做一次完整重置,使用時做出滑雪姿勢。
> 使用時機:
> - 大幅調整 Tracker 配戴位置後
> - 完整重置後蹲下、坐下姿勢看起來不對
4. **清除配戴重置**:
清除配戴重置的複寫,使用 Tracker 設定的配戴位置。
5. **暫停追蹤**:
固定當前姿勢
> 使用時機: AFK、V睡
6. **清除偏移補償數據**:
需開啟偏移補償,清除偏移補償。
### 日常使用步驟
```flow
st=>start: 開始
e=>end: 結束
isTCAL=>condition: 有做溫度校正?
preHeat=>operation: 預熱Tracker
fullReset=>operation: 完整重置
mountReset=>operation: 配戴重置
enterCaliFBT=>operation: 按下 Calibrate FBT
comCaliFBT=>operation: 確認 Calibrate FBT
testTracking=>condition: 測試追蹤
fixFloor=>operation: 校正地面高度
st->isTCAL
preHeat->fixFloor->enterCaliFBT->fullReset->comCaliFBT->mountReset->e
isTCAL(yes@有)->fixFloor
isTCAL(no@沒有)->preHeat
testTracking(yes@沒問題)->e
testTracking(no@怪怪的)->fullReset
```
1. 等待每個Tracker預熱,依設定內的配戴位置戴上
2. **VRChat 校正FBT**:
面向前站直身體,雙腳與地面垂直腳尖指向正前方,打開 VRChat 快速選單按下 `Calibrate FBT`。
從這個步驟開始不要移動雙腳,後面的步驟會用到。
3. **完整重置** ( 敲左大腿Tracker 3下 or 按下綁定的按鍵 ):
完整重置後你會看到遊戲中的Tracker排列變的非常整齊,這時候對準 Avatar 雙手按下板機。
這步驟基本上就是把 SlimeVR 的 IK 跟 VRChat 的 IK 綁在一起,所以基本上只需要做這一次。
這些虛擬 Tracker 的位置是綁在骨骼上的,所以正常的話你會看到小白點(Tracker)埋在身體裡
*注: 建議把 VRChat 的 Tracker model 改成 `axis`,有偏移才看的出來*
4. **配戴重置** ( 敲右大腿Tracker 3下 or 按下綁定的按鍵 ):
做出滑雪姿勢(半蹲膝蓋向正前方指,手肘朝後微曲前臂向前)後敲右大腿Tracker,保持姿勢直到重置音效結束。

### 額外設定
#### SlimeVR Server
* **一般設定>SteamVR>SteamVR追蹤器**
依配置而有所不同,5+3請開胸、腰、膝蓋與腳部,其他請參考[Docs](https://docs.slimevr.dev/server/configuring-trackers.html#steamvr-trackers-to-enable-depending-on-your-set)

* **一般設定>追蹤機制>濾波**
預測型預設的 20% 還是會有一點延遲感,可以調高一點,不需要太擔心抖動問題,反正會被 VRChat 的 IK 同步平滑掉,從別人的視角是看不出來的。
> 建議設定: `預測型`,強度約 `70%`

* **一般設定>追蹤機制>偏移補償**
由於 IMU 的特性,Yaw 偏移是一定會有的。這時候我們就能用偏移補償來大幅減少需要重置的次數,偏移補償會利用重置時收集到的偏移數據做反向旋轉,因此需要重置數次後才會開始發揮效果。
僅適合用於低階 IMU(MPU6050、joycon...),對高階 IMU 通常只會造成反效果。
> 建議設定(有磁力計): `關閉`

#### VRChat
* **主選單 > 設定 > Tracking and IK > User Real Height**
打開下方的 `Metric Units Adjustment` 切換為公制單位,並填入你的真實身高。
* **快速選單 > 設定 > Tracking and IK > Lock Types**
選擇要將 IK 固定在哪個部位。
* `Lock Hip` 臀部追蹤不準確時,坐下/彎腰視點會偏移。
* `Lock Head` 臀部位置移動會比較明顯,但頭部上下看時角色身體會跟著移動。
* `Lock Both` 沒有上面兩個選項的缺點,但有些角色會變駝背,跳躍時上半身會像果凍一樣上下抖動。
> 建議設定: `Lock Hip`/`Lock Head` 都行,不要 `Lock Both` 就好。
* **主選單 > 設定 > Tracking and IK > Avatar Measurement**
> 建議設定:
> * 一般大小的 Avatar: `Height`
> * chibi Avatar ( mamefriends...等 ): `Arm span` + 調整 `arm ratio` (調到T-Pose時手臂能伸直)
#### SteamVR 控制器綁定
再也不用彎下腰敲 Tracker!
* **SteamVR 介面 > 設定 > 控制器 > 開啟綁定介面 > 選擇 SlimeVR Feeder App**
* `request_calibration` 為完整重置
* `fast_calibration` 為快速重置