PoserPhysics2012 を使って、おしりペンペン動画を作ってみた。
▲ フィギュアは GND Anastasia を使用。
いい歳してそんな動画作ってて大丈夫かと言われようが、お構いなしに作った。物理演算機能という高尚な機能を、こんな低俗なことに使ってしまう、仕方のない私なのであった。
実は「フィギュアの手などを空中に固定する」というのは、PoserPhysics2012のGUIだけでは出来ない。Pythonスクリプトを組み合わせる必要があるのだ。
今回、テストに使ったPythonスクリプトを公開するので、好きに改造しておもしろ動画を作ってみて欲しい。
# -*- coding: utf-8 -*-
# PoserPhysics2012用スクリプト
#
# 選択したフィギュアの両手を空中に固定する# PoserPhysics2012モジュールをロード
import PhysicsToolsP9
from PhysicsToolsP9 import *def callback():
# 現在のフレーム数
chk = poser.Scene().Frame()
# 現在選択中のフィギュア名
fig = poser.Scene().CurrentFigure().Name()# フレーム数 30,50,70,90,100でフィギュアのhipに力を加える
if chk == 30 or chk == 50 or chk == 70 or chk == 90 or chk == 100:
p.applyForce("%s/hip" % fig,[0,random.randint(-10,10),100],verbose=1);
print "spank"try:
#物理シミュレーションの準備
p = PoserPhysicsEngine()
p.importDefaults()
#フレームごとにコールする関数を設定
p.setPerFrameCallback(callback)
p.setupSimulation()#選択中のフィギュア名を取得
figurename = poser.Scene().CurrentFigure().Name()#フィギュアの両手をワールドに固定する。パーツ名なInternalNameで指定。
p.createFixedJoint(figurename+"/rHand", None)
p.createFixedJoint(figurename+"/lHand", None)#シミュレーション開始
p.runSimulation()#エラー発生時の処理
except PhysicsToolsError, msg:
print "Poser Physics Error : " + str(msg)
上記をコピペしてファイルとして保存すればOK。ただし、保存するときに、エンコードをUTF-8に指定しよう。
念のため、やり方を1から書いておく。
まあ、そんな感じ。この仕組をまともな方向に昇華すれば「殴られた敵がふっとばされる」などといった、アクションものにありがちな動きを面白おかしく作ることができるのだ。
Traceback (most recent call last):
File "C:\Program Files\Smith Micro\Poser Pro 2012\Runtime\Python\poserScripts\ScriptsMenu\2 PoserPhysics tool\work\hanged_hands.py", line 7, in <module>
import PhysicsToolsP9
ImportError: No module named PhysicsToolsP9
こんな感じのエラーが出る場合は、いったんPoserPhysicsのGUI(Poser画面上部メニューScript→PoserPhysicsにある)を起動してからPythonを実行しよう。
原因としては、PhysicsToolsP9.pycというファイルがある場所にパスが通ってねえよ、ということなんだと思うが、スッキリした形での解決策がよくわからない。というわけで、民間療法っぽいけども、そういう感じで回避して欲しいと思う。
関連:
ゲージュツ的ボディのキャラクターセット、GND Anastasia
Poserで物理演算アニメーションが出来るPythonスクリプト PoserPhysics2012