CamTerm

Linuxでもちふぃったが動くまで

Tag: VRChat, 改変

1. 準備するもの

  • もちふぃった
https://booth.pm/ja/items/7657840
  • blender (native)
https://store.steampowered.com/app/365670/Blender/

2. setup

1. もちふぃったの.unitypackageをインポート

2. BlenderへのPathを通す

# Blender用のディレクトリを作る (例)
cd ~/ALCOM/Projects/Project/
mkdir -p BlenderTools/blender-4.0.2-windows-x64
cd BlenderTools/blender-4.0.2-windows-x64

# exeファイルを起動する代わりにblenderを起動 (例)
echo "#\!/usr/bin/bash\n~/.steam/steam/steamapps/common/Blender/blender \"{@//\\\\\\//}\"" > blender.exe
chmod 744 blender.exe

丁寧に教えてくださり、ありがとうございます(.alcomtemplateの件も感謝です)

https://x.com/kuroclef/status/1991861380736250006

3. パッケージのインストール

- scipy

- robust-weight-transfer

# ディレクトリへ移動 (例)
cd ~/.steam/steam/steamapps/common/Blender/5.0/python/bin/

# scipyのインストール
./python3.11 -m pip install -U pip
./pip3 install scipy

# robust-weight-transferのダウンロード
cd ~/Downloads/
curl -OL https://github.com/sentfromspacevr/robust-weight-transfer/releases/download/v1.1.6/robust-weight-transfer-v1.1.6.zip

SteamからBlenderを起動し、ポップアップを適当に回避

その後、Edit > Preference > Addonを開く

右上の下矢印から Install from Disk を押し、先ほどダウンロードした.zip形式のフォルダからインストール

https://github.com/sentfromspacevr/robust-weight-transfer/releases
https://signyamo.blog/b4-5r_robust-wt/

3. トラブルシューティング

✗ ペア1 処理失敗

もちふぃった〜をアップデート等すると解決

Appendix. A "{@//\\//}"って何?

テストコード

❯ cat test.sh                                                     
#!/usr/bin/bash
for loop in ${@//\\//}; do
	echo $loop
done

❯ ./test.sh "test" "/usr/bin /home/camellian" "C:\\ProgramData"
test
/usr/bin
/home/camellian
C:/ProgramData
  • "$@"は"$*"とおおよそ同義

- 今回の用途ではコマンドライン変数を引き継ぐため利用

  • "$@"では1つの要素として連結されている部分を展開

ちゃっぴーとのお話

✅ 結論:${@//\\//} は Bash の「パラメータ展開置換構文」  
  
Bash には次の構文があります:  
${variable/pattern/replacement}  
  
その派生形で:  
${variable//pattern/replacement}  
は **“pattern の全一致を replacement に置換する”** という意味です。  
  
ここで、${@//\\//} は次のように解釈されます:  
  
$@ **全置換の区切り文字//** pattern=**\\** **区切り文字/** replacement=**/**  
  
 "//\\//" には **3つのスラッシュ区切りがある**ように見えるけど、  
実際は **pattern と replacement を / で区切っているだけ**です。