Rendering学習日記

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

Mac OS X 10.6.6(Snow Leopard)にcgkitインストール

Mac OS Xに入っているPythonは、
Leopard → 2.5.1、
Snow Leopard → 2.5.5、2.6.1、
Lion → 2.5.5、2.6.6、2.7.1 が最初からインストールされています。

cgkitをダウンロードしインストール設定してみました。参考にしたのは下記のサイトです。
ありがとうございます。
Python cgkit 2.o on (Snow) Leopard
http://sites.google.com/site/lefranckcom/home/pythoncgkit2oonsnowleopard

■http://www.macports.org/install.phpからMacPorts-2.0.3.pkgをダウンロード
し、インストールします。

■ターミナルを開き、
$ sudo port install python26 scons boost +python26

と入力します。管理者パスワードを入れるとダウンロードがはじまります。
boost_python libraryなどコンパイルされインストールがはじまります。とても長く、しばらく時間がかかります。python27もインストールされました。

cgkitを使うためには、新たにインストールしたpython2.6を使っていきます。サポートライブラリをコンパイルするためです。以下PATHの設定を書き換えます。

$ cd ~
でホームディレクトリに行き、ls -aで.bash_profileがあるか確認します。

$ nano .bash_profile
でnanoエディタを開き
#PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"

PATH=/opt/local/bin/python2.6:$PATH
export PATH

これをなるべく上の行に書き加えます。保存して終了します。
PATHを反映させるために
$ source .bash_profile

$ echo $PATH
で書き加えたPATHが入っているか確認します。

$ python2.6
と打つとビルドした日付が出ます。
$ which python2.6
/opt/local/bin/python2.6

■Compiling the support library
cgkitを入手します。
http://sourceforge.net/projects/cgkit/files/cgkit/
cgkit-2.0.0alpha9.tar.gzをダウンロードします。
cgkit-2.0.0alpha9-py2.5-macosx10.4.dmgは使えません。

cgkit-2.0.0alpha9.tar.gzを解凍します。

$ cd cgkit-2.0.0alpha9/
$ cd supportlib/
$ cd src/
$ nano polyhedrongeom.cpp

line 401行目,
typedef GLvoid (CALLBACK *TessCallback)(...);

以下のように書き換えて保存します。
typedef GLvoid (CALLBACK *TessCallback)();

$ cd ..
一つ上に上がり、
$ nano SConstruct

SConstruct を開きline 38行目:
env.Append(CCFLAGS = ["-arch", "i386", "-arch", "ppc"])

env.Append(CCFLAGS = ["-arch", "x86_64"])
に書き換えます。64ビットでコンパイルできるようにします。

$ scons
と入力するとサポートライブラリのコンパイルがはじまります。

$ cd ..
一つ上に上がり、
$ cp config_template.cfg config.cfg
コピーをつくります。
config.cfgを開き

46行目:
BOOST_LIB = "boost_python"
のコメント#を消します。

118, 119行目を次のようにします。
INC_DIRS += ["/opt/local/include"]
LIB_DIRS += ["/opt/local/lib"]

以上を変更保存します。次にビルドします。

$ python2.6 setup.py build

続いて
$ sudo python2.6 setup.py install

以上でcgkitできあがりです。
チェックしてみましょう。
$ cd utilities/
$ python2.6 checkenv.py
-------------------------------------------------------------------
Python 2.6.7 (r267:88850, Jan 13 2012, 17:06:12)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
Platform: darwin
-------------------------------------------------------------------
Python version: 2.6........... OK
PyProtocols................... is installed
PyOpenGL...................... is installed
PIL........................... is installed
pygame........................ is installed
PyODE......................... is installed
PySerial...................... is installed
cgkit (base).................. 2.0.0alpha9 (Jan 24 2012, 00:13)
cgkit (C++ lib)............... OK
cgkit (all)................... OK

cgkitでOKが出ていれば成功です。
ところで、上記のPyProtocols...PyOpenGL...PIL..pygame...PyODE..PySerial..はmissingになっていると思います。まだ完全にcgkitは動いてくれません。後ほどMacPortsを使ってPyProtocols以外は、インストールすることができます。

続いて複数のpythonが入っているように設定を変えます。
現在切り替えられるpythonを確認するために
$ port select --list python

とすると、
Available versions for python:
none
python25-apple
python26
python26-apple
python27

複数のpythonがでてきます。現在activeなのはありません。バージョンを切り替えるには、
$ sudo port select --set python python26

で切り替わります。
Available versions for python:
none
python25-apple
python26 (active)
python26-apple
python27


PILはいくつかのライブラリに依存しています。Python Imaging Libraryインストール
$ port search py26-pil
$ port deps py26-pil
$ sudo port install py26-pil

PyOpenGLインストール
$ port deps py26-opengl
$ sudo port install py26-opengl

PyODEインストール
$ port search py26-ode
$ port deps py26-ode
$ sudo port install py26-ode

pygameインストール
$ port search py26-game
$ port deps py26-game
$ sudo port install py26-game

PySerialインストール
$ port search py26-serial
$ port deps py26-serial
$ sudo port install py26-serial

PyProtocolsインストール
PyProtocols-0.9.3をダウンロード
http://peak.telecommunity.com/
PyProtocols-0.9.3フォルダに移動し、
$ python2.6 setup.py --without-speedups install

RenderManレンダラ
3delight-10.0.4-Darwin-Universal.pkgをインストールし、
cgkitサイトのチュートリアルから
demo1.py
demo2.py
demo3.py
を保存します。

サンプルファイルがある場所で
$ viewer.py demo1.py
で動作するか確かめます。
さらに
$ render.py -r3delight demo1.py
Exporting main.rib...
1 passes...
Compiling shaders...
Preprocessing time: 0s
Rendering "out.tif" (frame 0)...
3DL ERROR: Two different displays can't write to the same file (will keep 'file' and ignore 'framebuffer')
Rendering time: 0s

$ $ i-display out.tif
out.jpg
cgkit | - | -

LFexportGUI

Lightflowをblenderで使うプラグイン
LFexportGUI

ダウンロード先

http://www.zoo-logique.org/3D.Blender/index.php3?page=php/python.php3

blender2.28cあたりで動くだろうか。試してみる。
Lightflow | - | -

複数のバージョンのPythonインストール

複数バージョンのPythonをPCにインストールして利用する1つの方法
http://blog.livedoor.jp/gab_km/archives/1273488.html

これは助かります。ありがとうございます。
32bitと64bit混在でもいけるとありがたい。
イントールするPythonバージョンは古い方から新しい方へ
Python1.5.2→Lightflow
Python22jp→Metasequoia python
Python2.5 64bit→RenderMan import prman using the Python API
Python2.6 64bit→python cgkit

ちょっとインストールしなおしてみます。
Pathの順番は新しい方を先に書いておく。

以下、バッチファイル
python25.bat
@echo off
set PYTHONPATH=C:\Python25;C:\Python25\Scripts;%RMANTREE%\bin
C:\Python25\Python.exe %1 %2 %3 %4 %5 %6 %7 %8 %9

python15.bat
@echo off
set PYTHONPATH=C:\Program Files (x86)\Python
"C:\Program Files (x86)\Python\Python.exe" %1 %2 %3 %4 %5 %6 %7 %8 %9

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

Lightflow Install Fedora 16 Live USB 32bit

以下 Fedora 16の 32bit版Live USBを作り、Lightflowをインストールしました。 

以下の2ファイルをダウンロード

Downloads]$ ls
lf_redhat.tgz py152.tgz

移動します。
Downloads]$ mv lf_redhat.tgz /home/liveuser/

Downloads]$ mv py152.tgz /home/liveuser/

Downloads]$ cd ..

解凍します。
~]$ tar zxvf lf_redhat.tgz

~]$ tar zxvf py152.tgz

~]$ cd Lightflow/PM/Examples/

テストしてみます。エラーでます。
Examples]$ python ball1.py
Traceback (most recent call last):
File "ball1.py", line 3, in
from lightflowPM import *
ImportError: No module named lightflowPM

Examples]$ cd /home/liveuser/

以下の記述を追加保存します。
~]$ gedit .bash_profile


LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/Lightflow
PYTHONPATH=$PYTHONPATH:$HOME/Lightflow
LIGHTFLOWPATH=$HOME/Lightflow
LIGHTFLOW_SE_MEMORY=32000
LIGHTFLOW_VE_MEMORY=32000

export LD_LIBRARY_PATH PYTHONPATH LIGHTFLOWPATH LIGHTFLOW_SE_MEMORY LIGHTFLOW_VE_MEMORY

反映させます。
~]$ source .bash_profile

パスが通っているか確認します。
~]$ echo $LIGHTFLOWPATH
/home/liveuser/Lightflow

またテストします。
~]$ cd Lightflow/PM/Examples/
Examples]$ python ball1.py
Traceback (most recent call last):
File "ball1.py", line 3, in
from lightflowPM import *
ImportError: libstdc++-libc6.1-1.so.2: cannot open shared object file: No such file or directory

次のファイルをダウンロードします。
compat-libstdc++-6.2-2.9.0.14.i386.rpm
http://rpm.pbone.net/index.php3/stat/4/idpl/14760/com/compat-libstdc++-6.2-2.9.0.14.i386.rpm.html

[root@localhost liveuser]# cd Downloads/
[root@localhost Downloads]# ls
compat-libstdc++-6.2-2.9.0.14.i386.rpm

移動します。
[root@localhost Downloads]# mv compat-libstdc++-6.2-2.9.0.14.i386.rpm /home/liveuser
[root@localhost Downloads]# cd ..

インストールします。
[root@localhost liveuser]# rpm -ivh compat-libstdc++-6.2-2.9.0.14.i386.rpm
Preparing... ########################################### [100%]
1:compat-libstdc++ ########################################### [100%]

またまたテストします。
Examples]$ python ball1.py
ball1.py:3: RuntimeWarning: Python C API version mismatch for module lightflowPM: This Python has API version 1013, module lightflowPM has version 1007.
from lightflowPM import *

Lightflow Rendering Tools
Copyright (c) 1995-2000 by Jacopo Pantaleoni. All rights reserved

Segmentation fault (core dumped)


Python-1.5.2をビルドします。
Python-1.5.2]$ ./configure

コンパイラが入っていないので、以下のものをインストールします。
Various Compilers install

makeします。
Python-1.5.2]$ make

gcc -g -O2 -I./../Include -I.. -DHAVE_CONFIG_H -c -o fileobject.o fileobject.c
fileobject.c:590:1: error: conflicting types for ‘getline’
/usr/include/stdio.h:677:20: note: previous declaration of ‘getline’ was here
make[1]: *** [fileobject.o] Error 1
make[1]: Leaving directory `/home/liveuser/Python-1.5.2/Objects'
make: *** [Objects] Error 2


fileobject.cを開き、getlineをgetline1に4箇所置き換えます。
Python-1.5.2]$ cd Objects/
[liveuser@localhost Objects]$ gedit fileobject.c

再びmakeします。
Objects]$ cd ..
[liveuser@localhost Python-1.5.2]$ make


[root@localhost Python-1.5.2]# make altinstall
Python-1.5.2]$ python1.5
Python 1.5.2 (#1, Jan 12 2012, 20:40:44) [GCC 4.6.2 20111027 (Red Hat 4.6.2-1)] on linux3
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>> ^Z
[1]+ Stopped python1.5
[liveuser@localhost Python-1.5.2]$

以下を実行するとレンダリングできました。
Examples]$ python1.5 ball1.py

Lightflow Rendering Tools
Copyright (c) 1995-2000 by Jacopo Pantaleoni. All rights reserved


Pinhole Camera On
Objects : 1

Rendering 300 x 300 pixels
00:00:00 - 87.1%

画像を確認します。
[liveuser@localhost Examples]$ eog ball1.tga

さらにレンダリング。Windowsより速いです。
[liveuser@localhost Examples]$ python1.5 mechanic.py

Lightflow Rendering Tools
Copyright (c) 1995-2000 by Jacopo Pantaleoni. All rights reserved


Pinhole Camera On
Objects : 3
00:00:00 - CSEADS 100/100 - boxes 26 - depth 1 - objects 18
00:00:00 - CSEADS 100/100 - boxes 26 - depth 1 - objects 6
LfSoftLight::Init()
00:00:01 - cell 418176 / 418176
LfSoftLight::Init()
00:00:01 - cell 418176 / 418176

Rendering 400 x 400 pixels
00:00:18 - 95.2%

LfDOFImager():
row 400 / 400

[liveuser@localhost Examples]$ eog mechanic.tga
mechanic.jpg
できました。うれしいですね。
Lightflow | - | -

続きLightflow for ubuntu Linux32bit from USBメモリ(成功)

前回から、いろいろ調べて
原因わかりました。

$ python ball1.py
以下エラー出ます。
from lightflowPM import *
ImportError: libstdc++-libc6.0-1.so.2: cannot open shared object file: No such file or directory

この中のlibstdc++-libc6.0-1.so.2を探しましたがありません。

あったのは、libstdc++-libc6.1-1.so.2ですが、これをシンボリックリンクしてもSegmentation fault (コアダンプ)が出ます。

原因はダウンロードしたlf_debian.tgzを使ってたからでした。
DebianやUbuntuでも、Linux RedHat 6.1 Version (1608 Kb)
lf_redhat.tgzをダウンロードして使ってください。

lf_redhat.tgzを解凍しLightflowフォルダから
パスの設定後(他の記事を参考)
$ python ball1.py
Traceback (most recent call last):
File "ball1.py", line 3, in
from lightflowPM import *
ImportError: libstdc++-libc6.1-1.so.2: cannot open shared object file: No such file or directory

libstdc++-libc6.1-1.so.2が出てきます。

以下をダウンロードしインストールします。
libstdc++2.9-glibc2.1_2.91.66-4_i386.deb
http://archive.debian.org/debian/pool/main/e/egcs1.1/libstdc++2.9-glibc2.1_2.91.66-4_i386.deb

$ dpkg -i libstdc++2.9-glibc2.1_2.91.66-4_i386.deb

後はPython1.5.2をビルドして、レンダリングすればOKです。ビルドは他の記事を参考にしてください。

ありがとうございます。
bspline5.jpg
Lightflow | - | -

LightFlow Install Vine Linux on VirtualBox

Lightflowのサイトから
http://www.lightflowtech.com/

Linux RedHat 6.1 Version (1608 Kb)
lf_redhat.tgzをダウンロード

http://www.python.org/download/releases/1.5/
Python 1.5.2 sources (2.5 MB)をダウンロード

lf_redhat.tgz をカレントホームディレクトリ (~) に置いておいたとして、

$ cd ~
@localhost ~]$ tar zxvf lf_redhat.tgz

で展開されます。~/Lightflow/ ディレクトリがあると思います。インストール方法については Lightflow/README に書いてあるので、それを読んで自分でインストールできる人は好きな方法でインストールして下さい。

/usr/lib などにファイルをコピーしたくなかったので、ここでは README に書いてある方法の Solution 2: Personal Install を行いました。これは自分のホームディレクトリに Lightflow のファイルを置いたまま使えるようにする方法です。Lightflow はホーム (~) にあるものとして、~/.bash_profile に次の行を追加しました。
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/Lightflow
PYTHONPATH=$PYTHONPATH:$HOME/Lightflow
LIGHTFLOWPATH=$HOME/Lightflow
LIGHTFLOW_SE_MEMORY=32000
LIGHTFLOW_VE_MEMORY=32000

export LD_LIBRARY_PATH PYTHONPATH LIGHTFLOWPATH LIGHTFLOW_SE_MEMORY LIGHTFLOW_VE_MEMORY



@localhost ~]$ tar zxvf py152.tgz

@localhost Examples]$ cd Lightflow/PM/Examples/

@localhost Examples]$ python ball1.py
Traceback (most recent call last):
File "ball1.py", line 3, in
from lightflowPM import *
ImportError: No module named lightflowPM

@localhost Examples]$ cd ~
@localhost ~]$ ls -a
.bash_profile

@localhost ~]$ leafpad .bash_profile

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/Lightflow
PYTHONPATH=$PYTHONPATH:$HOME/Lightflow
LIGHTFLOWPATH=$HOME/Lightflow
LIGHTFLOW_SE_MEMORY=32000
LIGHTFLOW_VE_MEMORY=32000

export LD_LIBRARY_PATH PYTHONPATH LIGHTFLOWPATH LIGHTFLOW_SE_MEMORY LIGHTFLOW_VE_MEMORY

@localhost ~]$ source .bash_profile

@localhost ~]$ echo $LIGHTFLOWPATH
/home/*****/Lightflow

@localhost ~]$ cd Lightflow/PM/Examples/

@localhost Examples]$ python ball1.py
Traceback (most recent call last):
File "ball1.py", line 3, in
from lightflowPM import *
ImportError: libstdc++-libc6.1-1.so.2: cannot open shared object file: No such file or directory


以下のファイルをダウンロードしてきます。
compat-libstdc++-6.2-2.9.0.14.i386.rpm
http://rpm.pbone.net/index.php3/stat/4/idpl/14760/com/compat-libstdc++-6.2-2.9.0.14.i386.rpm.html


@localhost ~]$ sudo rpm -ivh compat-libstdc++-6.2-2.9.0.14.i386.rpm
準備中... ########################################### [100%]
1:compat-libstdc++ ########################################### [100%]


@localhost ~]$ cd Lightflow/PM/Examples/

@localhost Examples]$ python ball1.py
ball1.py:3: RuntimeWarning: Python C API version mismatch for module lightflowPM: This Python has API version 1013, module lightflowPM has version 1007.

@localhost Examples]$ cd ~
@localhost ~]$ cd Python-1.5.2/
@localhost Python-1.5.2]$ ./configure
............
............
creating ./config.status
creating Makefile
creating Objects/Makefile
creating Parser/Makefile
creating Python/Makefile
creating Modules/Makefile.pre
creating Modules/Setup.thread
creating config.h

@localhost Python-1.5.2]$ make
bash: make: コマンドが見つかりません
以下のファイルをダウンロードしてきます。
make-3.81-8vl6.i686.rpm

http://ftp.yz.yamagata-u.ac.jp/pub/linux/Vine/Vine-6.0/i386/Vine/RPMS/

ftp.yz.yamagata-u.ac.jp/pub/linux/Vine/Vine-6.0/i386/Vine/RPMS/make-3.81-8vl6.i686.rpm


@localhost ~]$ sudo rpm -ivh make-3.81-8vl6.i686.rpm
[sudo] password for *****:
準備中... ########################################### [100%]
1:make ########################################### [100%]

@localhost ~]$ cd Python-1.5.2/
@localhost Python-1.5.2]$ make
...........
...........
fileobject.c:590: error: conflicting types for ‘getline’
/usr/include/stdio.h:653: note: previous declaration of ‘getline’ was here
make[1]: *** [fileobject.o] Error 1
make[1]: Leaving directory `/home/makura/Python-1.5.2/Objects'
make: *** [Objects] Error 2

fileobject.cの関数getlineがstdio.hとかぶっているようです。
エディタでgetlineを検索し、4箇所をgetline1と変えました。


@localhost Python-1.5.2]$ cd Objects/
@localhost Objects]$ leafpad fileobject.c
エディタを開きます。
getlineを検索します。
getline1に変更します。
続けて検索するのでctrl+gを押します。4つ変更します。Getlineは大文字なので変更しません。

@localhost Objects]$ cd ..
再びmake
@localhost Python-1.5.2]$ make
...........
@localhost Python-1.5.2]$ sudo make altinstall
...........

@localhost Python-1.5.2]$ python1.5
Python 1.5.2 (#1, Jan 12 2012, 07:52:51) [GCC 4.4.5 20101001 (Vine Linux 4.4.5-6 on linux2
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>> ^Z
[1]+ 停止 python1.5

Python-1.5.2起動しました。


@localhost Python-1.5.2]$ cd ~
@localhost ~]$ cd Lightflow/PM/Examples/
@localhost Examples]$ python1.5 ball1.py

Lightflow Rendering Tools
Copyright (c) 1995-2000 by Jacopo Pantaleoni. All rights reserved


Pinhole Camera On
Objects : 1

Rendering 300 x 300 pixels
00:00:00 - 87.1%

Examples]$ ls ball1.*
ball1.py ball1.tga

@localhost Examples]$ eog ball1.tga

LightFlow起動しました。


@localhost Examples]$ python1.5 mechanic.py

Lightflow Rendering Tools
Copyright (c) 1995-2000 by Jacopo Pantaleoni. All rights reserved


Pinhole Camera On
Objects : 3
00:00:00 - CSEADS 100/100 - boxes 26 - depth 1 - objects 18
00:00:00 - CSEADS 100/100 - boxes 26 - depth 1 - objects 6
LfSoftLight::Init()
00:00:01 - cell 418176 / 418176
LfSoftLight::Init()
00:00:01 - cell 418176 / 418176

Rendering 400 x 400 pixels
00:00:28 - 86.9%

LfDOFImager():
row 400 / 400

@localhost Examples]$ eog mechanic.tga
mechanic.jpg
Lightflow | - | -

Lightflow for ubuntu Linux32bit from USBメモリ(失敗編)

Ubuntu 9.10 - Karmic Koala - from USB memory

homeでlf_debian.tgzを解凍します。Lightflowフォルダができます。
.profileの設定は前の記事を参照してください。

@ubuntu:~/Lightflow/PM/Examples$ python ball1.py
以下エラー出ます。
from lightflowPM import *
ImportError: libstdc++-libc6.0-1.so.2: cannot open shared object file: No such file or directory

libstdc++-libc6.1-1.so.2 : It's a "14 year old" file, older than any Ubuntu. But still available from the Debian archives.


http://archive.debian.net/woody/i386/libstdc++2.9-glibc2.1/download

@ubuntu:~$ dpkg -i libstdc++2.9-glibc2.1_2.91.66-4_i386.deb
dpkg: 要求した操作はスーパーユーザの権限が必要です

@ubuntu:~$ sudo dpkg -i libstdc++2.9-glibc2.1_2.91.66-4_i386.deb
未選択パッケージ libstdc++2.9-glibc2.1 を選択しています。
(データベースを読み込んでいます ... 現在 117128 個のファイルとディレクトリがインストールされています。)
(libstdc++2.9-glibc2.1_2.91.66-4_i386.deb から) libstdc++2.9-glibc2.1 を展開しています...
libstdc++2.9-glibc2.1 (2.91.66-4) を設定しています ...

libc-bin のトリガを処理しています ...
ldconfig deferred processing now taking place

@ubuntu:/usr/lib$ sudo ln -sf libstdc++-libc6.1-1.so.2 libstdc++-libc6.0-1.so.2

libstdc++-libc6.0-1.so.2が作成されました。

@ubuntu:~/Lightflow/PM/Examples$ python ball1.py
ball1.py:3: RuntimeWarning: Python C API version mismatch for module lightflowPM: This Python has API version 1013, module lightflowPM has version 1007.
from lightflowPM import *
Segmentation fault (コアダンプ)

残念ながらpython2.6は不意に終了しました。

Python1.5.2をダウンロード
http://www.python.org/download/releases/1.5/

@ubuntu:~$ cd Python-1.5.2/
@ubuntu:~/Python-1.5.2$ ./configure

@ubuntu:~/Python-1.5.2$ make
(cd Modules; make -f Makefile.pre Makefile)

gcc -g -O2 -I./../Include -I.. -DHAVE_CONFIG_H -c -o fileobject.o fileobject.c
fileobject.c:590: error: conflicting types for ‘getline’
/usr/include/stdio.h:651: note: previous declaration of ‘getline’ was here
make[1]: *** [fileobject.o] エラー 1
make[1]: ディレクトリ `/home/ubuntu/Python-1.5.2/Objects' から出ます
make: *** [Objects] エラー 2

python1.5.2/Objects/fileobject.cをgeditで開き
検索でgetlineを探す。
getline1に4箇所書き換える。

再び
@ubuntu:~/Python-1.5.2$ make

@ubuntu:~/Python-1.5.2$ sudo make altinstall
ビルド成功

@ubuntu:~/Python-1.5.2$ python1.5
Python 1.5.2 (#1, Jan 10 2012, 22:42:45) [GCC 4.4.1] on linux2
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>>

python1.5.2実行可能
ubuntu@ubuntu:~/Lightflow/PM/Examples$ python1.5 ball1.py
Segmentation fault (コアダンプ)

うまくいかないようだ。

---------------------------------------------------------------------
以下はコアダンプの出力設定確認
unlimit -a

コアダンプを出力する設定方法
* デバッグ対象プログラムを起動前にulimitコマンドを実行する(-c以降に最大出力サイズを指定する)
ulimit -c 10000000

@ubuntu:~/Lightflow/PM/Examples$ python1.5 ball1.py
Segmentation fault (コアダンプ)

coreが出力される。

@ubuntu:~/Lightflow/PM/Examples$ gdb python1.5 core

GNU gdb (GDB) 7.0-ubuntu
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
...
Reading symbols from /usr/local/bin/python1.5...done.

warning: Can't read pathname for load map: Input/output error.
Reading symbols from /lib/tls/i686/cmov/libdl.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/tls/i686/cmov/libdl.so.2
Reading symbols from /lib/tls/i686/cmov/libm.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/tls/i686/cmov/libm.so.6
Reading symbols from /lib/tls/i686/cmov/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/tls/i686/cmov/libc.so.6
Reading symbols from /lib/ld-linux.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /home/ubuntu/Lightflow/lightflowPM.so...done.
Loaded symbols for /home/ubuntu/Lightflow/lightflowPM.so
Reading symbols from /home/ubuntu/Lightflow/libLightflow.so...(no debugging symbols found)...done.
Loaded symbols for /home/ubuntu/Lightflow/libLightflow.so
Reading symbols from /lib/tls/i686/cmov/libpthread.so.0...(no debugging symbols found)...done.
Loaded symbols for /lib/tls/i686/cmov/libpthread.so.0
Reading symbols from /usr/lib/libstdc++-libc6.0-1.so.2...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/libstdc++-libc6.0-1.so.2
Core was generated by `python1.5 ball1.py'.
Program terminated with signal 11, Segmentation fault.
#0 0x00286e05 in ?? () from /lib/tls/i686/cmov/libc.so.6

(gdb) where
#0 0x00286e05 in ?? () from /lib/tls/i686/cmov/libc.so.6
#1 0x00281d3b in vfprintf () from /lib/tls/i686/cmov/libc.so.6
#2 0x0028bf3f in fprintf () from /lib/tls/i686/cmov/libc.so.6
#3 0x0105ad3f in LfScene::LfScene(long) ()
from /home/ubuntu/Lightflow/libLightflow.so
#4 0x00f62cbf in LfLocalSceneProxy::LfLocalSceneProxy(long) ()
from /home/ubuntu/Lightflow/libLightflow.so
#5 0x00d78295 in scene_new(_object *, _object *) ()
from /home/ubuntu/Lightflow/lightflowPM.so
#6 0x0807f03c in call_builtin (func=0x9d60c08, arg=0x9d4f4f0, kw=0x0)
at ceval.c:2359
#7 PyEval_CallObjectWithKeywords (func=0x9d60c08, arg=0x9d4f4f0, kw=0x0)
at ceval.c:2324
#8 0x080817c4 in eval_code2 (co=,
globals=, locals=, args=0x0,
argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, owner=0x0)
at ceval.c:1654
#9 0x08082c5b in PyEval_EvalCode (co=0x9d79918, globals=0x9d58638,
locals=0x9d58638) at ceval.c:324
#10 0x0805fed2 in run_node (n=0x9d6e098, filename=,
globals=0x9d58638, locals=0x9d58638) at pythonrun.c:887
#11 0x08060dd2 in PyRun_SimpleFile (fp=0x9d4f008,
filename=0xbf939580 "ball1.py") at pythonrun.c:570
#12 0x08051b58 in Py_Main (argc=2, argv=0xbf9387b4) at main.c:287
#13 0x0805162b in main (argc=2, argv=0xbf9387b4) at python.c:12
(gdb)

つづきに原因がわかったのでこちらへ。
Lightflow | - | -

LightFlow for linux 64bit

Ubuntu 64bitでPython-1.5.2をビルド。

@ubuntu:/usr/local/bin$ file python1.5
python1.5: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped

from lightflowPM import *
ImportError: /usr/local/lib/python1.5/lightflowPM.so: wrong ELF class: ELFCLASS32


@ubuntu:/usr/local/lib/python1.5$ file lightflowPM.so
lightflowPM.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped

lightflowPM.soは32bit

python1.5は64bit

つづく。
Lightflow | - | -

Lightflow for Linux 最初の設定(抜粋)

Installation Guide.


1.Untar the base packet (e.g. to /usr/local/).

2.The python interface requires python >= 1.5, so install it first if you want to use it.

3.Copy or link LightflowPM.so to /usr/lib/phython1.5/site-packages (or wherever this directory is): ln -s /usr/local/LightFlow/LightflowPM.so /usr/lib/python1.5/site-packages

4. The same for the C++-library: ln -s /usr/local/LightFlow/Lightflow/libLightflow.so /usr/lib

5.Install the content of Lightflow_Include.tar.bz; the includes should be in /usr/include/Lightflow.

6. Extend the startup configuration script of your shell (e.g. bashrc) by setting LIGHTFLOWPATH to Lightflows base directory: export LIGHTFLOWPATH=/usr/local/LightFlow

7.Have a look at the doc's under PM/doc and CS/doc, python-examples are under PM/Examples.

8.Now the examples above should work (python-scripts have to be made executable before run, C++-examples (e.g. tree.tar.gz) have to be compiled (use make).
Lightflow | - | -

Lightflow for Linux その2

LightFlowはすでに開発closedしてから、12年も経過しているので
今の状況では使えないところですが・・・・やっとできました。

■(以前のまとめ抜粋)Lightflow インストール Linuxでのインストール方法
http://rman.sakura.ne.jp/sfx/lf_man/lightflow-install.html

Linux勉強としてVirtualBoxを使ってLightFlowをインストールしてみました。
いろいろやってみるとPythonのバージョン違いで走らない状況?
困難?が待っていました。


■Vine Linux3.2の場合

libstdc++-libc6.1-1.so.2: cannot load shared object file: No such file or directory

compat-libstdc++-6.2-2.9.0.14.i386.rpm

# rpm -ivh compat-libstdc++-6.2-2.9.0.14.i386.rpm


上記のパッケージをとってインストールしここまでで終了。

■Debianの場合
debian-6.0.3

libstdc++-libc6.1-1.so.2: cannot load shared object file: No such file or directory

libstdc++2.9-glibc2.1_2.91.66-4_i386.deb
http://archive.debian.org/debian/pool/main/e/egcs1.1/libstdc++2.9-glibc2.1_2.91.66-4_i386.deb

$ dpkg -i libstdc++2.9-glibc2.1_2.91.66-4_i386.deb

上記のパッケージをとってここまでやって、以下実行。

■Lightflow実行
@debian:/usr/local/Lightflow/PM/Examples$ python ball1.py
ball1.py:3: RuntimeWarning: Python C API version mismatch for module lightflowPM: This Python has API version 1013, module lightflowPM has version 1007.
from lightflowPM import *

Lightflow Rendering Tools
Copyright (c) 1995-2000 by Jacopo Pantaleoni. All rights reserved


Error (LfFault):
LfFileIOBStream
error opening tmp_ve_VSE3HY
ここで終了。残念。

■試しにPython1.6.1の解凍しビルドすることをやってみる。
解凍うまくいかず
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors

拡張子は .gz となっていますが,実際は .tar ファイルのようなので,
次のようにして変更してください.

mv AAA.tar.gz AAA.tar


> どのようにして解凍すればよいのか

tar xvf AAA.tar




■Python1.6.1のビルド
./configure
make
make install

上書きしてしまったような
■Lightflow実行
@debian:/usr/local/Lightflow/PM/Examples$ python ball1.py
WARNING: Python C API version mismatch for module lightflowPM:
This Python has API version 1009, module lightflowPM has version 1007.

Lightflow Rendering Tools
Copyright (c) 1995-2000 by Jacopo Pantaleoni. All rights reserved


Error (LfFault):
LfFileIOBStream
error opening tmp_ve_7F11r0
ここで終了。残念。

■試しにPython1.5.2の解凍
mv py152.tgz py152.tar
tar xvf py152.tar
■Python1.5.2のビルド(Debian6.0.3)
./configure
make
make install
エラー出しながらもできたような。Python-1.5.2$ python
Python 1.6.1 (#1, Jan 9 2012, 15:26:06) [GCC 4.4.5] on linux2
Copyright (c) 1995-2001 Corporation for National Research Initiatives.
All Rights Reserved.
Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.
All Rights Reserved.
できていませんでした。

makeができておらず、
gcc -g -O2 -I./../Include -I.. -DHAVE_CONFIG_H -c -o fileobject.o fileobject.c
fileobject.c:590: error: conflicting types for ‘getline’
/usr/include/stdio.h:651: note: previous declaration of ‘getline’ was here
make[1]: *** [fileobject.o] エラー 1
make[1]: ディレクトリ `/home/mac/Python-1.5.2/Objects' から出ます
make: *** [Objects] エラー 2

どうやら、
fileobject.cの関数getlineがstdio.hとかぶっているようです。

/usr/include/stdio.h:651: note: previous declaration of ‘getline’ was here

エディタでgetlineを検索し、4箇所をgetline1と変えました。
改めて
./configure
make
sudo make altinstall
した。

root@debian:/home/mac/Downloads/Python-1.5.2# python1.5
Python 1.5.2 (#1, Jan 9 2012, 21:03:48) [GCC 4.4.5] on linux2
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterda

Python1.5.2動きました。
(Vine Linux3.2でのPython1.5.2のビルドはすんなりいきました。)


■ここからがうれしいところ(^^)。

root@debian:/usr/local/Lightflow/PM/Examples# python1.5 ball10000.py

Lightflow Rendering Tools
Copyright (c) 1995-2000 by Jacopo Pantaleoni. All rights reserved


Pinhole Camera On
Objects : 10000
00:00:01 - CSEADS 100/100 - boxes 48672 - depth 2 - objects 10000

Rendering 300 x 300 pixels
00:00:03 - 87.1%

root@debian:/usr/local/Lightflow/PM/Examples# gimp ball10000.tga

■無事、Debian Linux6.0.3でLightflowが起動。
古いVine Linux(3.2より古いもの?)でLightflowが動いていたのは、Python1.5.2だったためです。
Windowsと同じでLinuxにおいてもPython1.5.2でLightflowは動きます。
make altinstallするとpythonのバージョン別に使い分けができます。

Lightflow起動は

# python1.5 ball1.py

ball1.tgaが生成されます。
レンダリングが速くて快適ですね。
長年わからなかったのが解決してうれしいです。
ありがとうございます。

root@debian:/usr/local/Lightflow/PM/Examples# python1.5 mechanic.py

以下Rendering Time:17s
mechanic.jpg
Lightflow | - | -
1/2 >>