mixiのLightflowコミュで自分が書き込んだ記事を掲載します。::
■Lightflow インストール
まず,Lightflowの本家で配っているPython1.5.1はXPで起動しませんでした。そこで,Pythonの本家でPython1.5.2をダウンロードします。
・Python 1.5.2 installer for Windows (5.0 MB)
http://www.python.org/download/releases/1.5/
・Tcl/Tkモジュールはインストールできなかったので,最初のインストール時にチェックを外してインストールします。
C:\Lightflowディレクトリをつくり,ダウンロードしたLightFlowをおきます。
・Python1.5.2はc:\program files\pythonにインストールされているので,この中のDllsフォルダにLightflowPM.dllを置きます。 (Windows7でも動きます。64bitだと、Pythonのインストールと実行先は、C:\Program Files (x86)\Pythonになる。)
・次にWindowsディレクトリのsystemフォルダにLightflow.dllを置きます。
マイコンピュータのアイコンを右クリックし,詳細設定→環境変数を開き,
新規をクリックして,変数名PYTHONPATH 変数値C:\Program files\Pythonを入れます。
既に別のPythonをインストールしている場合はセミコロンを入れてパスを加えます。
同じように新規で以下のものを加えます。
LIGHTFLOWPATH
LIGHTFLOW_SE_MEMORYとLIGHTFLOW_VE_MEMORY
注意!! PATHはすでに書いてあるものを間違って消さないように、一番後ろに追加します。
まとめると、以下のものを環境変数に加えます。
変数名を正確に入れてください。またコピーして入れる場合など空白スペースが入っていたりします。半角スペース1つ入っているだけで、エラーで動きませんから、注意してください。
変数名 変数値
PYTHONPATH C:\Program files\Python ユーザ環境変数欄に追加
LIGHTFLOWPATH C:\Lightflow ユーザ環境変数欄に追加
LIGHTFLOW_SE_MEMORY 32000 ユーザ環境変数欄に追加
LIGHTFLOW_VE_MEMORY 32000 ユーザ環境変数欄に追加
PATH ;%LIGHTFLOWPATH%;%PYTHONPATH% を追加する。システム環境変数
すべて記入したら,OK,OKを押します。
一度,再起動して,
スタート→アクセサリ→コマンドプロンプトを右クリックしてコピーします。
C:\Lightflowディレクトリを開いて,
C:\Lightflow\PM\Examplesフォルダを開き,右クリックして「貼り付け」をします。コマンドプロンプトが作成されます。
このコマンドプロンプトアイコンを右クリックして「プロパティ」を開けます。
作業フォルダの欄にC:\Lightflow\PM\Examplesと入れます。
OKを押します。
コマンドプロンプトアイコンをダブルクリックして,
>"c:\program files\python\python" ball1.py
と打ち込んで,レンダリングが始まれば,できました。
■下記のエラーメッセージの場合
c:\Lightflow\PM\Examples>python ball1.py
Traceback (innermost last):
File "ball1.py", line 3, in ?
from lightflowPM import *
ImportError: No module named lightflowPM
Python1.5.2のc:\program files\pythonのDllsフォルダにLightflowPM.dllをコピーしてください。
レンダリング後にTGA画像が作成されています。
CPUの処理速度が上がった分。速くなりましたね。
閉鎖したサイトにあったものをまとめました。大変役に立ちます。ありがとうございます。
■Lightflow インストール Linuxでのインストール方法
http://rman.sakura.ne.jp/sfx/lf_man/lightflow-install.html
Windows7 64bitにVirtualBox 64bitをインストールし、VirtualBoxの中にDebian6.0.3をインストール、LightFlowをインストールしてみました。
2012年1月9日
http://rman.sakura.ne.jp/sb/log/eid440.html
続きを読む>>
Ribelato-1.0.0.24.win.zipをダウンロードし、
libフォルダにrib.generator.dllを入れておくと、
たとえば、立方体
Patch "bilinear" "P" [-0.5 0.5 -0.5 0.5 0.5 -0.5 -0.5 -0.5 -0.5 0.5 -0.5 -0.5]
Patch "bilinear" "P" [-0.5 -0.5 -0.5 0.5 -0.5 -0.5 -0.5 -0.5 0.5 0.5 -0.5 0.5]
Patch "bilinear" "P" [-0.5 0.5 -0.5 -0.5 -0.5 -0.5 -0.5 0.5 0.5 -0.5 -0.5 0.5]
Patch "bilinear" "P" [0.5 0.5 -0.5 -0.5 0.5 -0.5 0.5 0.5 0.5 -0.5 0.5 0.5]
Patch "bilinear" "P" [0.5 -0.5 -0.5 0.5 0.5 -0.5 0.5 -0.5 0.5 0.5 0.5 0.5]
Patch "bilinear" "P" [-0.5 -0.5 0.5 0.5 -0.5 0.5 -0.5 0.5 0.5 0.5 0.5 0.5]
以上をたとえばBoxGeom.ribという名前で保存しておく。
呼び出し方は、同じディレクトリに置いて、
Input ("BoxGeom.rib")
で良い。
同じく、平面は
Patch "bilinear" "P" [-5.0 -5.0 0.0 5.0 -5.0 0.0 -5.0 5.0 0.0 5.0 5.0 0.0]
以上をたとえばPlaneGeom.ribで保存しておく。
呼び出し方は、同じディレクトリに置いて、
Input("PlaneGeom.rib")
で良い。
Pythonコマンドラインから、
>>> from cgkit.all import *
ちょっと時間がかかる・・・・。とりあえず球体!!!
>>> s=Sphere()
45度の回転行列を求める。
>>> s.rot=mat3().fromEulerXYZ(0.25,0,0)
>>> s.rot
(1, 0, 0)
(0, 0.968912, -0.247404)
(0, 0.247404, 0.968912)
>>> s.rot=mat3().fromEulerXYZ(0,0.25,0)
>>> s.rot
(0.968912, 0, 0.247404)
(0, 1, 0)
(-0.247404, 0, 0.968912)
>>> s.rot=mat3().fromEulerXYZ(0,0,0.25)
>>> s.rot
(0.968912, -0.247404, 0)
(0.247404, 0.968912, 0)
(0, 0, 1)
>>> for slot in s.iterSlots():
... print slot
...
angularvel
cog
dynamics
inertiatensor
linearvel
mass
pos
rot
scale
static
totalmass
transform
visible
worldtransform
>>> s.radius
1.0
>>> s.pos
(0, 0, 0)
>>> s.rot
(1, 0, 0)
(0, 1, 0)
(0, 0, 1)
>>> s.static
False
>>> s.transform
[1, 0, 0, 0]
[0, 1, 0, 0]
[0, 0, 1, 0]
[0, 0, 0, 1]
同じオブジェクトをたくさん並べてみよう
影も計算するように設定しました。
whileのインデントはきちんと整えること。
#box1.pyg
Output ("box02.tif", "tiff", "rgb", "camera", "float gain", 1, "float gamma",
1, "string filter", "gaussian", "float[2] filterwidth", (2, 2))
Attribute ("string projection", "perspective")
Attribute ("float fov", 20)
Attribute ("int[2] resolution", (640, 480))
#placecam 10 5 -10 0 0 0
Rotate (-19.47, 1.00, 0.00, 0.00)
Rotate (45.00, 0.00, 1.00, 0.00)
Translate (-10.00, -5.00, 10.00)
Attribute ("string geometryset", "+shadows")
World ()
Light ("light1", "pointlight", "float intensity", 350, "point from", (-10, 10, -10),"string shadowname", "shadows")
Light ("light2", "pointlight", "float intensity", 350, "point from", (10, 10, -10),"string shadowname", "shadows")
mypos=-3
while mypos<=3:
PushTransform ()
Attribute ("color C", (1, 1, 0))
Shader ("surface", "plastic")
Translate ( 0, 0.5, mypos)
Input ("BoxGeom.rib")
PopTransform ()
mypos+=1.3
Attribute ("color C", (1, 1, 1))
Rotate (90.00, 1.00, 0.00, 0.00)
Shader ("surface", "plastic")
Input("PlaneGeom.rib")
Render()
mixi RenderManコミュから転載:
MayaからプラグインのRIBexportでカメラは
Transform [ ]で出ていますが、
いろいろと調べてみました。
RIBでの視野変換を以下のようにやるとして、
Rotate RX 1 0 0
Rotate RY 0 1 0
Rotate RZ 0 0 1
Translate -TX -TY TZ
Scale SX SY -SZ
行列は下から上へ、の順で乗算していき、逆行列を求めれば良いです。
Translateの行列は、TX,TX,-TZで求め
Rotate Yは、180-RYで求めました。
以下はMayaのPerspのデフォルト位置を例として
Python CGkitで求めてみました。
Translate X: 28
Translate Y: 21
Translate Z: 28
Rotate X: -27.938
Rotate Y: 45
Rotate Z: 0
Scale X: 1
Scale Y: 1
Scale Z: 1
C:\Python25>python
>>> from cgkit.all import *
>>> tr=mat4(1).translation(vec3(28,21,-28))
>>> import math
>>> rx=mat4(1).rotate(-27.938*math.pi/180,vec3(1,0,0))
>>> rx
[1, 0, 0, 0]
[0, 0.883455, 0.468516, 0]
[0, -0.468516, 0.883455, 0]
[0, 0, 0, 1]
>>> ry=mat4(1).rotate((180-45)*math.pi/180,vec3(0,1,0))
>>> ry
[-0.707107, 0, 0.707107, 0]
[0, 1, 0, 0]
[-0.707107, 0, -0.707107, 0]
[0, 0, 0, 1]
>>> v=tr*ry*rx
>>> v
[-0.707107, -0.331291, 0.624697, 28]
[0, 0.883455, 0.468516, 21]
[-0.707107, 0.331291, -0.624697, -28]
[0, 0, 0, 1]
>>> v.inverse() 逆行列
[-0.707107, -2.77556e-017, -0.707107, 0]
[-0.331291, 0.883455, 0.331291, -0.000275937]
[0.624697, 0.468516, -0.624697, -44.8219]
[0, 0, 0, 1]
>>> v.inverse().transpose() 転置行列
[-0.707107, -0.331291, 0.624697, 0]
[-2.77556e-017, 0.883455, 0.468516, 0]
[-0.707107, 0.331291, -0.624697, 0]
[0, -0.000275937, -44.8219, 1]
>>> s2=mat4(1).scaling(vec3(1,1,-1))
>>> s3=mat4(1).scaling(vec3(-1,1,-1))
>>> s2*v.inverse().transpose()*s3 スケールを両側からかけてみました。
[0.707107, -0.331291, -0.624697, 0]
[2.77556e-017, 0.883455, -0.468516, 0]
[-0.707107, -0.331291, -0.624697, 0]
[0, -0.000275937, 44.8219, 1]
よって
ConcatTransform [0.707107 -0.331291 -0.624697 0
2.77556e-017 0.883455 -0.468516 0
-0.707107 -0.331291 -0.624697 0
0 -0.000275937 44.8219 1]
ということで、cgkitで視野変換学べます。
ありがとうございます。