Rendering学習日記

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

<< cgkit works under CentOS6.2 on virtualbox | main | Fujiyama Renderer 0.2.8 for Windows 64bit >>

Python3.3 and cgkit install for Windows7 32bit

cgkitをPython3.3環境、Windows7 32bit環境にインストールしてみました。少し難がありますが
何とか動きます。
cgkitはPython2.6や2.7環境では問題なく動きます。PyProtocolのインストールが面倒なだけでした。
Python3環境ではPyProtocolが必要なくなり、インストールが簡単になりましたが、微調整が必要なところです。
Python環境とRenderMan互換レンダラー(Pixie)をインストールしていきましょう。

■以下をWindows7 32bit環境にインストールします。
 python-3.3.5.msi
 cgkit-2.0.0.win32-py3.3.exe
 pygame-1.9.2a0-hg_56e0eadfc267.win32-py3.3.msi
 PyOpenGL-3.1.0.win32.exe
 ode-0.13.1.win32-py3.3.exe
 Pillow-2.5.0.win32-py3.3.exe
 numpy-1.9.0b1-win32-superpack-python3.3.exe

だいたいのバイナリデータはこちらからダウンロードしました。
http://www.lfd.uci.edu/~gohlke/pythonlibs/

■インストールが終わったら、Python3.3の環境設定です。
コンピュータ右クリック→プロパティ→システムの詳細設定→環境変数→システム環境変数内のPATHをクリック→「編集」をクリック
変数値の行の最後に以下のパスを記入します。

;C:\Python33;C:\Python33\Scripts;

■再起動します。

■サンプルをcgkitのチュートリアルページからscriptをとってきます。
http://cgkit.sourceforge.net/tutorials/demo1.html

■OpenGL表示のviewerを起動してみましょう。
D:\Aplication\cgkit>viewer.py demo1.py
Traceback (most recent call last):
File "C:\Python33\Scripts\viewer.py", line 699, in
viewer.run()
File "C:\Python33\lib\site-packages\cgkit\tool.py", line 198, in run
self.action()
File "C:\Python33\Scripts\viewer.py", line 389, in action
self.handleEvents(events)
File "C:\Python33\Scripts\viewer.py", line 424, in handleEvents
key = e.str
AttributeError: 'Event' object has no attribute 'str'

■画面は表示されますが、altキーを押して画面操作をしようとするとウインドウが閉じてしまい、
エラーが表示されます。

■ここでエディタを使ってviewer.pyの424行を変更します。
key = e.str

key = e.unicode
に変更してください。

■再度viewerを動かすとできます。
D:\Aplication\cgkit>viewer.py demo1.py

■続いてレンダリングをやってみましょう。事前に3delightをインストールしておきましょう。
32bit版3Delightはなくなっていました。ここではPixie Renderer(2009年開発停止)を利用します。
http://sourceforge.net/projects/pixie/files/
Pixie-2.2.6-Setup.exeをダウンロードしインストールします。

■シェーダコンパイラsdrcが
「このアプリケーションのサイド バイ サイド構成が正しくないため、アプリケーションを
開始できませんでした。詳細については、アプリケーションのイベント ログを参照する
か、コマンド ライン ツール sxstrace.exe を使用してください。」
と出るので、2010年にビルドしたPixie_2010-05-25_Win32.zipをダウンロードします。
https://github.com/scorpion007/pixie/downloads
解凍して、C:\Program Files\pixieフォルダの中身と入れ替えます。
uninstall.dat等はそのままにしておきます。

■cgkitでサンプルをPixieを使ってレンダリングしてみましょう。
D:\Aplication\cgkit>render.py -rpixie demo1.py
Exporting main.rib...
Traceback (most recent call last):
File "C:\Python33\Scripts\render.py", line 361, in
render.run()
File "C:\Python33\lib\site-packages\cgkit\tool.py", line 198, in run
self.action()
File "C:\Python33\Scripts\render.py", line 237, in action
bakestvar = bakestvar
File "C:\Python33\lib\site-packages\cgkit\cmds.py", line 981, in save
exp.exportFile(os.path.basename(filename), **options)
File "C:\Python33\lib\site-packages\cgkit\ribexport.py", line 172, in exportFi
le
explgt = self.adapt(obj, ILightSource)
File "C:\Python33\lib\site-packages\cgkit\ribexport.py", line 672, in adapt
return protocols.adapt(obj, interface)
File "C:\Python33\lib\site-packages\cgkit\protocols.py", line 53, in adapt
if interfaces.has_key(interface):
AttributeError: 'dict' object has no attribute 'has_key'

とエラーが出ます。
C:\Python33\Lib\site-packages\cgkit\protocols.pyをエディタで開きます。
53行目を変更します。
if interfaces.has_key(interface):

if interface in interfaces:
protocols.pyを保存します。

■再度レンダリングします。
D:\Aplication\cgkit>render.py -rpixie demo1.py
Exporting main.rib...
1 passes...
Traceback (most recent call last):
File "C:\Python33\Scripts\render.py", line 361, in
render.run()
File "C:\Python33\lib\site-packages\cgkit\tool.py", line 198, in run
self.action()
File "C:\Python33\Scripts\render.py", line 237, in action
bakestvar = bakestvar
File "C:\Python33\lib\site-packages\cgkit\cmds.py", line 981, in save
exp.exportFile(os.path.basename(filename), **options)
File "C:\Python33\lib\site-packages\cgkit\ribexport.py", line 280, in exportFi
le
rpass.doPass(frameNr)
File "C:\Python33\lib\site-packages\cgkit\ribexport.py", line 832, in doPass
lid = self.exporter.applyLightSource(lgt)
File "C:\Python33\lib\site-packages\cgkit\ribexport.py", line 364, in applyLig
htSource
explgt.shaderSource())
File "C:\Python33\lib\site-packages\cgkit\ribexport.py", line 557, in writeSha
der
f = file(filename, "wt")
NameError: global name 'file' is not defined

とエラーが出ます。
C:\Python33\lib\site-packages\cgkit\ribexport.pyをエディタで開きます。
557行を変更します。
f = file(filename, "wt")

f = open(filename, "wt")
ribexport.pyを保存します。

■再度レンダリングすると無事に黄色の球体が表示されます。
D:\Aplication\cgkit>render.py -rpixie demo1.py
Exporting main.rib...
1 passes...
Compiling shaders...
Compiling glmaterial.sl
Compiling glpointlight.sl
Preprocessing time: 1s
Rendering "out.tif" (frame 0)...
Rendering time: 7s

■テクスチャがあるサンプルをレンダリングしてみましょう。調整が必要です。
以下からサンプルをダウンロードします。(simplescene.py, uvmap.png)
http://cgkit.sourceforge.net/tutorials/renderman.html

■レンダリングしてみます。
D:\Aplication\cgkit>render.py -r3delight simplescene.py
Exporting main.rib...
3 passes...
Converting "uvmap.png"
Traceback (most recent call last):
File "C:\Python33\Scripts\render.py", line 361, in
render.run()
File "C:\Python33\lib\site-packages\cgkit\tool.py", line 198, in run
self.action()
File "C:\Python33\Scripts\render.py", line 237, in action
bakestvar = bakestvar
File "C:\Python33\lib\site-packages\cgkit\cmds.py", line 981, in save
exp.exportFile(os.path.basename(filename), **options)
File "C:\Python33\lib\site-packages\cgkit\ribexport.py", line 271, in exportFi
le
rpass.doPass(frameNr)
File "C:\Python33\lib\site-packages\cgkit\ribexport.py", line 1267, in doPass
self.copyImageMap(map)
File "C:\Python33\lib\site-packages\cgkit\ribexport.py", line 1297, in copyIma
geMap
img = Image.open(texmap)
NameError: global name 'Image' is not defined

PILがないということなので
C:\Python33\lib\site-packages\cgkit\ribexport.pyをエディタで開きます。

68行目あたりに追加行。
from PIL import Image
を加えます。

■再度レンダリングします。できました。
D:\Aplication\cgkit>render.py -rpixie simplescene.py
Exporting main.rib...
3 passes...
Converting "uvmap.png"
Compiling shaders...
Compiling gldistantlight.sl
Compiling glmaterial.sl
Compiling glpointlight.sl
Compiling glspotlight.sl
Preprocessing time: 0s
Rendering "out.tif" (frame 0)...
Rendering time: 6s


Windows7 32bitとPython3.3環境でのcgkit関連のインストールは
まだ課題があります。テクスチャを貼ったviewer.pyがPILとうまくつながってくれません
D:\Aplication\cgkit>viewer.py simplescene.py
Texname: 1
Loading "uvmap.png"... Traceback (most recent call last):
File "C:\Python33\Scripts\viewer.py", line 699, in
viewer.run()
File "C:\Python33\lib\site-packages\cgkit\tool.py", line 198, in run
self.action()
File "C:\Python33\Scripts\viewer.py", line 384, in action
self.draw(self.cam, self.width, self.height)
File "C:\Python33\Scripts\viewer.py", line 676, in draw
renderer.paint(root)
File "C:\Python33\lib\site-packages\cgkit\glmaterial.py", line 104, in loadTe
Data
img = Image.open(fullname)
File "C:\Python33\lib\site-packages\cgkit\_Image.py", line 148, in open
raise ImportError("No module named Image. Please install PIL (http://www.py
honware.com/products/pil/index.htm).")
ImportError: No module named Image. Please install PIL (http://www.pythonware.c
m/products/pil/index.htm).

D:\Aplication\cgkit>viewer.py simplescene.py
Texname: 1
Loading "uvmap.png"... Traceback (most recent call last):
File "C:\Python33\Scripts\viewer.py", line 699, in
viewer.run()
File "C:\Python33\lib\site-packages\cgkit\tool.py", line 198, in run
self.action()
File "C:\Python33\Scripts\viewer.py", line 384, in action
self.draw(self.cam, self.width, self.height)
File "C:\Python33\Scripts\viewer.py", line 676, in draw
renderer.paint(root)
File "C:\Python33\lib\site-packages\cgkit\glmaterial.py", line 104, in loadTe
Data
img = Image.open(fullname)
AttributeError: 'module' object has no attribute 'open'

他objのインポートなど微調整が必要です。
引き続き、検証します。
ありがとうございます。
cgkit | - | -