<< 7/8 >>
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 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 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
続き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です。ビルドは他の記事を参考にしてください。
ありがとうございます。
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
できました。うれしいですね。
LFexportGUI
Lightflowをblenderで使うプラグイン
LFexportGUI
ダウンロード先
http://www.zoo-logique.org/3D.Blender/index.php3?page=php/python.php3
blender2.28cあたりで動くだろうか。試してみる。
LightFlow for linux 64bit その2
前回64bitでうまくいかなかった。やっとできたのでメモする。
CentOS 64bit環境でpython1.5を32bitビルド試みたが、64bitになってしまう。結局Virtualboxに入れたCentOS i686(32bit)版でビルドしたpython1.5をコピーして、LightFlowが起動した。
以下試みる。CentOS 64bitでビルドしても64bit.
export CFLAGS=-m32
export CXXFLAGS=-m32
echo $CFLAGS
echo $CXXFLAGS
yum install glibc-2.12-1.80.el6_3.5.i686
yum install libstdc++*
yum install libstdc++*.i686
./configure --enable-32bit
make ARCH="-m32"
32bit環境の以下をコピー
/usr/local/bin python1.5
/usr/local/lib python1.5/
/usr/local/include python1.5/
64bit環境にインストールする。
sudo cp python1.5 /usr/local/bin
さらに次のファイルをダウンロードします。
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]# rpm -ivh compat-libstdc++-6.2-2.9.0.14.i386.rpm
Preparing... ########################################### [100%]
1:compat-libstdc++ ########################################### [100%]
その他、.bashrcに記入
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
以下を実行するとレンダリングできました。
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%
Windowsより速いです。
Lightflow C++-Tutorial for beginners
C++でのやり方。参考になりました。
ありがとうございます。
http://www.knoerig.de/lightflow_en.html
Rudi's Homepage - Lightflow
Lightflow C API sample ball2
2018/10/22
sample ball2
main2.cpp
#includeの両側に半角スペースが入っています。
#include < Lightflow/LfLocalSceneProxy.h >
int main()
{
LfLocalSceneProxy* s = new LfLocalSceneProxy();
LfArgList list;
list.Reset();
list << "position" << LfPoint( 5.0, -5.0, 4.0 );
list << "color" << LfColor( 300.0, 300.0, 300.0 );
s->LightOn( s->NewLight( "point", list ) );
list.Reset();
list << "basis" << "sin";
list << "scale" << 0.6;
list << "depth" << 0.2;
list << "turbulence.omega" << 0.5 << 0.7;
list << "turbulence.octaves" << LfInt( 6 );
LfInt bump = s->NewPattern( "multifractal", list );
list.Reset();
list << "ka" << LfColor( 0, 0, 0.05 );
list << "kc" << LfColor( 1, 1, 1 );
list << "kd" << 0.5;
list << "km" << 0.1;
list << "displacement" << bump;
LfInt plastic = s->NewMaterial( "standard", list );
s->MaterialBegin( plastic );
list.Reset();
list << "radius" << 1.0;
LfInt sphere = s->NewObject( "sphere", list );
list.Reset();
list << "surfaces" << sphere;
list << "tolerance" << 0.02 << 0.1 << 0.05;
s->AddObject( s->NewObject( "surface-engine", list ) );
s->MaterialEnd();
list.Reset();
list << "file" << "ball2.tga";
LfInt saver = s->NewImager( "tga-saver", list );
s->ImagerBegin( saver );
list.Reset();
list << "eye" << LfPoint( 0, -4, 0 );
list << "aim" << LfPoint( 0, 0, 0 );
LfInt camera = s->NewCamera( "pinhole", list );
s->ImagerEnd();
s->Render( camera, 300, 300 );
delete s;
}
$ /usr/local/gcc-2.95/bin/g++ -I ./include -lLightflow main2.cpp -o simplescene2
$ ./simplescene2
$ convert ball2.tga ball2.jpg
$ eog ball2.jpg
main22.cpp
#includeの不等号両側に半角スペースが入っています。
#include < Lightflow/LfLocalSceneProxy.h >
int main()
{
LfLocalSceneProxy* s = new LfLocalSceneProxy();
LfArgList list;
list.Reset();
list << "position" << LfPoint( 5.0, -5.0, 4.0 );
list << "color" << LfColor( 300.0, 300.0, 300.0 );
s->LightOn( s->NewLight( "point", list ) );
list.Reset();
list << "basis" << "sin";
list << "scale" << 0.6;
list << "depth" << 0.2;
list << "turbulence.omega" << 0.5 << 0.7;
list << "turbulence.octaves" << LfInt( 6 );
LfInt bump = s->NewPattern( "multifractal", list );
list.Reset();
list << "kr" << LfVector3(0.3,0.3,0.5);
list << "kd" << 0.3;
list << "km" << 0.3;
list << "shinyness" << 0.8;
list << "fresnel" << LfInt(1) << LfFloat(0.5) << LfFloat(0.5);
list << "caustics" << LfInt(1) << LfInt(1);
list << "displacement" << bump;
LfInt bumpmetal = s->NewMaterial( "physical", list );
s->MaterialBegin( bumpmetal );
list.Reset();
list << "radius" << 1.0;
LfInt sphere = s->NewObject( "sphere", list );
list.Reset();
list << "surfaces" << sphere;
list << "tolerance" << 0.02 << 0.1 << 0.05;
s->AddObject( s->NewObject( "surface-engine", list ) );
s->MaterialEnd();
list.Reset();
list << "file" << "ball2.tga";
LfInt saver = s->NewImager( "tga-saver", list );
s->ImagerBegin( saver );
list.Reset();
list << "eye" << LfPoint( 0, -4, 0 );
list << "aim" << LfPoint( 0, 0, 0 );
LfInt camera = s->NewCamera( "pinhole", list );
s->ImagerEnd();
s->Render( camera, 300, 300 );
delete s;
}
$ /usr/local/gcc-2.95/bin/g++ -I ./include -lLightflow main22.cpp -o simplescene22
$ ./simplescene22
$ convert ball2.tga ball2.jpg
$ eog ball2.jpg
Lightflow C API sample ball3
main3.cpp
#includeの両側に半角スペースが入っています。
#include < Lightflow/LfLocalSceneProxy.h >
int main()
{
LfLocalSceneProxy* s = new LfLocalSceneProxy();
LfArgList list;
list.Reset();
list << "position" << LfPoint( 5.0, -5.0, 4.0 );
list << "color" << LfColor( 300.0, 300.0, 300.0 );
s->LightOn( s->NewLight( "point", list ) );
list.Reset();
list << "kr" << LfColor( 1.0, 0.9, 0.8 );
list << "kaf" << 0.3;
list << "density" << 0.3;
list << "sampling" << 40.0;
list << "shadow-caching" << LfPoint( -1.2, -1.2, -1.2 ) << LfPoint(
1.2, 1.2, 1.2 );
LfInt gas = s->NewInterior( "dust", list );
s->InteriorBegin( gas );
list.Reset();
LfInt cloud = s->NewMaterial( "transparent", list );
s->InteriorEnd();
s->MaterialBegin( cloud );
list.Reset();
list << "radius" << 1.2;
s->AddObject( s->NewObject( "sphere", list ) );
s->MaterialEnd();
list.Reset();
list << "ka" << LfColor( 0, 0, 0.5 );
list << "kc" << LfColor( 1, 0.5, 0.5 );
list << "kd" << 0.5;
list << "km" << 0.1;
LfInt plastic = s->NewMaterial( "standard", list );
s->MaterialBegin( plastic );
list.Reset();
list << "radius" << 0.5;
s->AddObject( s->NewObject( "sphere", list ) );
s->MaterialEnd();
list.Reset();
list << "file" << "ball3.tga";
LfInt saver = s->NewImager( "tga-saver", list );
s->ImagerBegin( saver );
list.Reset();
list << "eye" << LfPoint( 0, -4, 0 );
list << "aim" << LfPoint( 0, 0, 0 );
LfInt camera = s->NewCamera( "pinhole", list );
s->ImagerEnd();
s->Render( camera, 300, 300 );
delete s;
}
$ /usr/local/gcc-2.95/bin/g++ -I ./include -lLightflow main3.cpp -o simplescene3
$ ./simplescene3
$ convert ball3.tga ball3.jpg
$ eog ball3.jpg
<< 7/8 >>