コンテンツにスキップ

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

1. 準備するもの

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 処理失敗

もちふぃった〜をアップデート等すると解決
r26で発生を確認

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 を / で区切っているだけ**です。