Rendering学習日記

日々、3DCGの世界は進歩しています。勉強して理解したことをまとめていきます。RenderMan互換レンダラーやグローバル・イルミネーション。いろんなことに好奇心を持って、面白くなる。目指せShader書き!!
ありがとうございます。

MQOSystem Python パスを調べる

Metasequoia(メタセコイア)のPythonAPIを勉強する。中々、難しいところです。
まずは、いろいろなPythonモジュールを利用できるように、Python 2.2.3 日本語環境用インストーラ(Win32)、python223jp-20030608.exeをインストールしておく。
以下のようなスクリプトをメタセコイアで起動して、パスが通っているところを調べる。
メタセコイアマスターガイドを参考にした。リストで出力されるので、リスト長さを調べて真ん中で二つに分けてprintln出力している。
#path01.py
MQSystem.clearLog() #ログ消去
import sys
l=sys.path
a=len(l)/2
MQSystem.println(str(l[:a]))
MQSystem.println(str(l[a:]))

出力結果
['C:\\Program Files (x86)\\Python', 'C:\\Python22jp', 'c:\\Python22jp\\Lib', 'c:\\Python22jp\\DLLs']
['c:\\Python22jp\\Lib\\lib-tk', 'C:\\Program Files (x86)\\Metaseq24\\Script', 'C:\\Program Files (x86)\\Metaseq24', 'c:\\Python22jp\\lib\\site-packages']

たぶん、C:\\Program Files (x86)\\Python', 'C:\\Python22jp'の部分は、PYTHONPATHとして環境設定に書き込んでた部分。他は、Python 2.2.3 日本語環境用インストーラ(Win32)をインストールしたことでパスが追加されている。

ありがとうございます。
  • -
  • -

カメラ位置を求める

メタセコイアのPython scriptサンプルをちょっと変更してみる。
右クリックでカメラ位置をぐりぐり変更してから、スクリプトを実行すると位置が表示される。カメラ情報を取得し、カメラ設定をどのようにするかいろいろと考えることができます。
#camera_pos.py
doc = MQSystem.getDocument()
scene = doc.getScene(0)

pos = scene.getCameraPos()
angle = scene.getCameraAngle()
lookat = scene.getLookAtPos()
upvec = scene.getLookAtUpVec()
center = scene.getRotationCenter()
fov = scene.fov

MQSystem.println("pos: " + str(pos))
MQSystem.println("angle: " + str(angle))
MQSystem.println("lookat: " + str(lookat))
MQSystem.println("upvec: " + str(upvec))
MQSystem.println("center: " + str(center))
MQSystem.println("fov: %(#).3f" % {"#":fov})
MQSystem.println("----------------------------------")


Pythonでメタセコイアの使い方の幅が広がります。いろいろと勉強ですね。ありがとうございます。
  • -
  • -

視点の初期化

メタセコイアには、メニュー「表示」→「視点の設定」→「初期化」がついていますが、
これをスクリプトにしてみた。
setCameraAngle(angle)が使えるのかと思ったら、うまく動かない。とりあえず、"""〜"""までコメントアウトにしていますが、スクリプトを実行するとデフォルトの視点位置に戻ります。
#デフォルトにする
#default_home.py
MQSystem.clearLog()
doc = MQSystem.getDocument()
scn = doc.getScene(0)

"""
angle = scn.getCameraAngle()
angle.head= -20.0
angle.pitch= 45.2
angle.bank= 0.0
scn.setCameraAngle(angle)
angle = scn.getCameraAngle()
"""

mqpt = scn.getCameraPos()

mqpt.x = 649.519
mqpt.y = 750.000
mqpt.z = 1125.000
scn.setCameraPos(mqpt)
pos = scn.getCameraPos()

mqpt = scn.getLookAtPos()
mqpt.x = 0.0
mqpt.y = 0.0
mqpt.z = 0.0
scn.setLookAtPos(mqpt)
lookat = scn.getLookAtPos()

angle = scn.getCameraAngle()

scn.fov=15.189
fov=scn.fov

MQSystem.println("pos: " + str(pos))
MQSystem.println("angle: " + str(angle))
MQSystem.println("lookat: " + str(lookat))
MQSystem.println("fov: " + str(fov))
  • -
  • -
<< 4/40 >>