2013年5月6日月曜日

MacでBlenderのスクリーンショットを定期的に撮るTIPS

自分がBlenderで作業しているときは、定期的にスクリーンショットを撮るようにしてるんだけど、
これが結構忘れがち。
自動で撮るようにできんかなあとあれこれ調べて一応できたからメモメモ。
(ちなみにショートカットはcmd+shift+3 or 4 or 4+spaceね。)

先に言っておくとBlenderは画面最大で使ってること前提ね。
ただたんに画面全体撮るだけだから、他に開いてるウィンドウも映ることあるっす。

使ったのはシェルスクリプト。
いじるのも初めてだったので結構ハマったね。

参考にしたサイト様は2つあって、ひとつはcrontabを使ってる人のページ。
ここではcrontabを使って定期的にスクリーンショットを撮る方法を紹介してるんだけど、
「Blenderが起動している間」っていう条件の付与の仕方が分からなかった(´・ω・`)

そんでアップルスクリプトやらシェルスクリプトやら、そっちでやろうと思ったのさ。
そこでこんなページを見つける。
つまり、このプロセス監視で「Blenderが起動している間」という条件をつけつつ
「screencapture」コマンドを使ってSSが撮れるって寸法SA。

で、できたコードが以下。
見れば分かとこは自分で変えていってね><
アプリケーションフォルダにBlenderフォルダ置いてない人とかね。
撮影は15分間隔毎に設定してます。変えたい人はssintervalの式をいじろう。
#!/bin/sh

#Blenderの起動
open /Applications/Blender/blender.app
#起動するまでちょっと待つ
sleep 2

#撮影間隔(秒)
ssinterval=$((60*15))
echo $ssinterval '秒ごとに撮るでー'

while true
do
    ALIVE=`ps -ef | grep "/blender.app" | grep -v grep | wc -l`
    if [ ${ALIVE} = 0 ]; then
 echo '撮り終わったで。'
 break;
    else
 echo '撮るでー'
 # -x つけると音がしなくなる
 /usr/sbin/screencapture -m -C -T0 ~/ss/スクリーンショット\ `date +%Y-%m-%d`\ `date +%H.%M.%S`.png
    fi

    sleep $ssinterval
done
…すごい時間かけた割にはあっさりしたコードだね。
これをemacsでもmiでもいいからコピペして保存して、拡張子を「.sh」に変えて。
「sh」コマンドで走らせれば動くはず。
いちいちターミナル起動するのたるい!って人はこちら。
「.sh」ファイルを「.app」ファイルにする「.app」を作ったらしい。うmややこしい。
しかし、「.app」にして実行すると、このアプリのアイコンがDockでぴょんぴょん跳ねるのよね。邪魔。これなら潔くTerminalが開いてくれるほうがいいかなあと思って、
自分は最初に書いてある、実行権限を与えて「.command」に拡張子を変更する方法で留めてる。
あ、一応書いておくと実行権限は「chmod」コマンドで下のとおりに打てばいいはず。
chmod -x hoge.sh

作った「.command」ファイルはDockにいれといてもいいし、Alfredでスペース叩いてから指定してもいい。
ここらへんもうちょい改善していきたいんだけどね。
Blender側から起動できればいいんだけど…できんのかな?

以上、MacのBlenderでスクリーンショットを自動で撮るTIPSでしたとさ。
「screencapture」コマンドさえ代用できればwinでもいけるかも。
一番いいのはアドオンで実装されることなんだけどなー。

0 件のコメント: