Poser覚書> その他 > PoserPhysics

PoserPhysics2012でおしりペンペン実験

  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
    print "Poser Physics Error : " + str(msg)
   

 上記をコピペしてファイルとして保存すればOK。ただし、保存するときに、エンコードをUTF-8に指定しよう。

 念のため、やり方を1から書いておく。

  1. Poserシーン内にフィギュアを呼び出す。ちょっと空中に浮くくらいの位置に移動させておくと、見本動画のような動きになると思う。
  2. 総フレーム数を100程度に増やす。(画面下のFrame 0001 of 0030の「0030」をクリックすれば総フレーム数を変更できる)
  3. PoserのFileメニューから、保存したPythonスクリプトを実行。
  4. できあがり

 まあ、そんな感じ。この仕組をまともな方向に昇華すれば「殴られた敵がふっとばされる」などといった、アクションものにありがちな動きを面白おかしく作ることができるのだ。

エラーが出るとき

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

次のPoserPhysics2012に新機能追加へ


Poser覚書> その他 > PoserPhysics もくじ