Blender keyboard and mouse macro for linux

メッシュにテクスチャ貼り付ける際、モバイル機のために効率化のため、手作業をしなければならないことがあります。つまり、通常3Dアニメーションではあまり使わないため、そのための細かな機能がBlenderになかったりすることがあります。通常はpythonを使ってAddonを作ることになるのですが、これは面倒で非直感的です。

いままでにボクはAI用navi-mesh(Blender標準よりも細かいnavi-data)やcustom-propertiesをjson出力するaddonを書いていますが、1,2週間かかり、しかもメンテナンスもあります。残念ながら、こんなことはやってられないことが多いのです。

そこで登場するのが、OS(Linux)に備わっているキーボード&マウス、マクロ再生です。しかし、ツールによっては機能が足りなかったりしてなかなか使い物にはなりませんでした。
以下が候補です。


xneeはgnome3ではクラッシュするようです。なんとなく開発に熱意がたりない。また、レガシーなxmacroはシンプルで好きなのですが、マウスの相対位置が指定できない(ボクが発見していない?)という欠陥があります。
xdotoolはマウスの相対位置の指定が可能です。しかし、再生のみでレコードができません。

この中ではxdotoolが、不満があるものの、ボクの用途には使えました。
検索をすればよいtutorialがありますので、すぐに使えます。

以下がサンプルです。

#!/bin/bash
for i in `seq 1 $1`
do
  sleep 0.3
  xdotool key c
  sleep 0.1
  # select
  xdotool click 1
  sleep 0.1
  # cancel c
  xdotool click 3
  sleep 0.5
  # u,v
  xdotool key u
  sleep 0.1
  xdotool key b
  sleep 0.1
  xdotool mousemove_relative --sync 60 0
  sleep 0.1
  # unselect
  xdotool key a
done


第1引数に繰り返す値を入れます。対象のObjectはいろいろな形ですが、Top viewからでは、ある単位のGridで正確に区切られています。そのメッシュに対してUVをProject from view(Bounds)を行い、そのつどX方向へ移動して次も同じ処理を繰り返すマクロです。
これはbashのスクリプトですが、キーボードショートカットへ登録して、実行可能にしておけばblender上で使うことが可能です。おせっかいかもしれませんがsleepの時間はそれぞれのコンピュータの速度に依存するので調整必須です。さらについで`seq 1 $1`はバッククォートで囲みます。

P.S.
ついでですが、ボクがWindowsやMacOSではなく、なぜLinuxを使うかというと、このような痒いところにも安定して手が届き比較的永く使えるからです;-)
P.S.2
ボクがUV編集でほかによく使うのはCopy Attributes menuのAddon。

コメント

このブログの人気の投稿

日本でコンピュータサイエンスを学ぶ難しさ

How to preview nif file on the ubuntu.