<< 2/8 >>

LightFlow チェック模様の色分け

MATSpiderでチェック模様の色分けをして、コピーを貼り付けています、

カラーパターンを作成し,出力アウトプットを設けて,ライブラリに登録。

diffuseなどカラーモデルを呼び出し,kcに設定する。

中身は,ちょっと整理していませんが,こんな感じです。
チェック模様です。
check3.jpg


#Pattern23
Pattern23_scl = 0.02500
Pattern23_Pattern2 = s.newPattern("check",[
"scale" , Pattern23_scl
])

color_1 = vector3( 0.20000 , 0.40000 , 0.60000)
color_2 = vector3( 0.7000 , 0.40000 , 0.20000)
Pattern23_Pattern22 = s.newPattern("gradient",[
"pattern" , Pattern23_Pattern2 ,
"color" , 1.00000 , color_1 , color_2
])

Pattern23 = Pattern23_Pattern22

Material15 = s.newMaterial("diffuse",[
"kr" , Pattern23
])


以下、サンプル。

#! /usr/bin/env python
from lightflowPM import *

from math import * #数学関数モジュールを使うときに書いておく。ここではpiを利用している。pi=3.14159265358979と円周率です。

s = scene()
s.lightOn( s.newLight( "ambient", [ "color", vector3( 0.3, 0.3, 0.3 ) ] ) ) #環境光を加える。
s.lightOn( s.newLight( "point", [ "position", vector3( 5.0, -5.0, 7.0 ), "color", vector3( 300.0, 300.0, 300.0 ) ] ) )
plastic = s.newMaterial( "standard",[ "kc", vector3( 1, 0, 0 ) ] ) #赤
plastic2 = s.newMaterial( "standard",[ "kc", vector3( 0, 1, 0 ) ] ) #緑
plastic3 = s.newMaterial( "standard",[ "kc", vector3( 0, 0, 1 ) ] ) #青
plastic4 = s.newMaterial( "standard",[ "kc", vector3( 1, 1, 0 ) ] )
plastic5 = s.newMaterial( "standard",[ "kc", vector3( 1, 0, 1 ) ] )
plastic6 = s.newMaterial( "standard",[ "kc", vector3( 0, 1, 1 ) ] )
plastic7 = s.newMaterial( "standard",[ "kc", vector3( 1, 1, 1 ) ] )
ground=s.newMaterial( "standard",[ "kc", vector3( 1, 1, 1 ) ] )

#Pattern23
Pattern23_scl = 0.02500
Pattern23_Pattern2 = s.newPattern("check",[
"scale" , Pattern23_scl
])

color_1 = vector3( 0.20000 , 0.40000 , 0.60000)
color_2 = vector3( 0.7000 , 0.40000 , 0.20000)
Pattern23_Pattern22 = s.newPattern("gradient",[
"pattern" , Pattern23_Pattern2 ,
"color" , 1.00000 , color_1 , color_2
])

Pattern23 = Pattern23_Pattern22

Material15 = s.newMaterial("diffuse",[
"kr" , Pattern23
])

s.materialBegin( plastic ) #赤の箱は原点にある。
s.addObject( s.newObject( "box", [ "position",vector3( -1.0, -1.0, -1.0 ),vector3( 1.0, 1.0, 1.0 )] ) )
s.materialEnd()


s.materialBegin( plastic2 )
s.transformBegin( transform().translation( vector3(-3.0,0,0))) #緑の箱をx方向に-3移動させた。

s.addObject( s.newObject( "box", [ "position",vector3( -1.0, -1.0, -1.0 ),vector3( 1.0, 1.0, 1.0 )] ) )

s.transformEnd()
s.materialEnd()


s.materialBegin( plastic3 )
s.transformBegin( transform().translation( vector3(3.0,0,0)))
s.transformBegin( transform().rotationAroundZ( pi/4 ))
s.addObject( s.newObject( "box", [ "position",vector3( -1.0, -1.0, -1.0 ),vector3( 1.0, 1.0, 1.0 )] ) )

s.transformEnd()
s.transformEnd()
s.materialEnd()


s.materialBegin( plastic4 )
s.transformBegin( transform().translation( vector3(0,0.75,3.0)))
s.transformBegin( transform().rotationAroundZ( pi/6 ))
s.addObject( s.newObject( "box", [ "position",vector3( -1.0, -1.0, -1.0 ),vector3( 1.0, 1.0, 1.0 )] ) )
s.transformEnd()
s.transformEnd()
s.materialEnd()

s.materialBegin( plastic5 )
s.transformBegin( transform().translation( vector3(-5.0,4.0,0)))

s.addObject( s.newObject( "box", [ "position",vector3( -1.0, -1.0, -1.0 ),vector3( 1.0, 1.0, 1.0 )] ) )

s.transformEnd()
s.materialEnd()

s.materialBegin( plastic6 )
s.transformBegin( transform().translation( vector3(3.0,3.0,0)))

s.addObject( s.newObject( "box", [ "position",vector3( -1.0, -1.0, -1.0 ),vector3( 1.0, 1.0, 1.0 )] ) )

s.transformEnd()
s.materialEnd()

s.materialBegin( plastic7 )
s.transformBegin( transform().translation( vector3(-0.9,-3.5,0)))
s.transformBegin( transform().rotationAroundZ( -pi/10 ))
s.addObject( s.newObject( "box", [ "position",vector3( -1.0, -1.0, -1.0 ),vector3( 1.0, 1.0, 1.0 )] ) )
s.transformEnd()
s.transformEnd()
s.materialEnd()

s.materialBegin( Material15 )
s.addObject( s.newObject( "patch", [ "points",vector3( -50, -50, -1.0 ),vector3( -50, 50, -1.0 ),vector3( 50, -50, -1.0 ),vector3( 50, 50, -1.0 )] ) )
s.materialEnd()

saver = s.newImager( "tga-saver", [ "file", "check3.tga" ] )
s.imagerBegin( saver )
#カメラは真正面の上の方から見ています。
camera = s.newCamera( "pinhole", [ "eye", vector3( 0, -10, 8 ), "aim", vector3( 0, 0, 0 ) ] )
s.imagerEnd()
s.render( camera, 600, 600 )

↑ですが,単にパターンを作成して,オブジェクトに割り当てても思ったとおりのものはできません。
必ず,diffuseやStandardなどのマテリアルに割り当てる必要があります。それから,マテリアルをオブジェクトに割り当てます。
  • -
  • -

Lightflowインストール

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モジュールはインストールできなかったので,最初のインストール時にチェックを外してインストールします。
pythoninst2.jpg

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を入れます。
path00.jpg
既に別のPythonをインストールしている場合はセミコロンを入れてパスを加えます。

同じように新規で以下のものを加えます。
LIGHTFLOWPATH
path01.jpg

LIGHTFLOW_SE_MEMORYとLIGHTFLOW_VE_MEMORY
path02.jpg

注意!! PATHはすでに書いてあるものを間違って消さないように、一番後ろに追加します。
path03.jpg

まとめると、以下のものを環境変数に加えます。
変数名を正確に入れてください。またコピーして入れる場合など空白スペースが入っていたりします。半角スペース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 続きを読む>>
  • -
  • -

LightFlowをWindows7で動かす

Windows7で動くかどうか、インストールしてみた。
64ビットOSに新たにPytohn1.5.2を入れ、きちんとパスを環境変数に記入してあげる。

Rendering with Radianceの中に出てくるサンプルファイルをLightflowで記述している。当時はレンダリングに時間かかっていましたが、マシンが速いとうれしい。
radiance.jpg

2000年の頃、以下の煙のアニメーションをペンティアム1GHzマシン使って1枚出すのに、2〜5分くらいかかっていたのを思い出す。150枚レンダリングするのに、30分で終わった。1枚平均12秒。マシンの進歩に驚く。ありがとうございます。
smoke0094.jpg

なお、通常、Python2.6を使うのであれば、環境変数をきちんと指定しておく。
c:\python26;c:\python26\Scripts
Python2.6で動いてくれれば、いいんだけど、今となってはさびしいところです。

LightFlowのコンバータについて その1

mixi2007年01月06日 15:48記す

●Lightflowのためのファイルコンバータについて

いろいろと調べてみました。

HamaPatchは,メタセコイアのポリゴン数が多いファイルを読み込むことができないようです。試しにサンプルの麒麟をフリーズしてから読もうとしたができなかった。hamapatchそのものが落ちました。
hamapatchでできるサブディビジョンやスムージングは,*.pyで出力してもなめらかにはなりません。
Bsplineと表記されており,meshではないです。また,ある程度ポリゴンが多くないとなめらかには表せません。

続いて3DWinは,*.pyの出力ができます。
メタセコイアで3DSで出力する際。座標軸をRaydreamにしてY軸反転して出力したものを3DWinで変換しました。
けれども,面が裏返しなのかよくわかりませんが,いくら光源の明るさを大きくとってもきれいになりません。

次にLWOで出力するために,座標軸をLightwaveにしてからZX交換,X軸反転してみました。
光源もうまく調整ができる。
しかしながら,Lightflow側で,軽いデータはレンダリングしてくれますが,重いデータとなると難しいです。
猫のサンプルを変換すると2.5MBになる。Python15.dllでエラーが出て終了してしまいました。
ということで,現存するコンバータを調べてみましたが,データ量が大きいと厳しい状況です。
今のところ,metalightのように*.lfmのバイナリに変換してくれるソフトはないですし,残念です。。

metalightに復活して欲しいところです。

また,hamapatchもアップデート望みたいところですね。

いろいろなソフトウェアが連携できると楽しいです。
面白いし,いろいろなことに可能性を感じますが,
最終的には,自分で工夫することが大切なんでしょうか。
勉強ですね。 続きを読む>>
  • -
  • -

LightFlowのコンバータについて その2

mixi 2007年01月06日 15:57記す

補足です。以下のようにできますが,*.pyの出力でうまくできません。

Metasequoia
  ↓
エクスポート*.lwo(ZX交換,X軸反転)
  ↓
3Dwin
  ↓
import LightWave
  ↓
export Lightflow *.py
  ↓
レンダリング(Python15でエラー)

3DWinはシェアウェアですが,ダウンロードしてそのまま,データ変換ができます。ただし,シェアウェア登録をしていないとマテリアル,質感がデータ変換されません。
  • -
  • -

LightFlowのコンバータについて その3

mixi 2007年01月06日 20:33記す

●Lightflowのためのファイルコンバータについて その2
古いハードディスクのディレクトリを探したら,ありました。
メタセコイア用のプラグイン。
メタセコイアLEでは,使えません。プラグインは登録しないと使えませんが,Metasequoia2.40でも出力できました。

以下,転載です。
----------------------------------------
Lightflow mesh file exporter v0.0.2
for Metasequoia2
----------------------------------------
Lightflow用のバイナリmeshファイル形式でオブジェクトを
エクスポートします。

■インストール
ファイルを解凍し、作成されたLfbinExport.dllをメタセコイヤ2
のPlugin\Exportフォルダにコピーしてください。

■アンインストール
LfbinExport.dllを削除するだけでOKです。

■使用方法

1.メタセコイヤ上で適当なオブジェクトを作成
2.ファイル|名前をつけて保存 を実行し
ファイルの種類の欄で"lightflow mesh file"を
選んでください。
3.適当な名前をつけて保存してください。

4.Pythonスクリプト等では


s.addObject( s.newObject("mesh",["file","test.lfm",0]) )

等と記述してインポートしてください。

オブジェクトのindexは、メタセコイヤのオブジェクトパネルの
上から順番に0,1,2、・・・と割り振られています。

UV座標は書き出されますが、マッピング用の画像等は書き出
されません。Python側で再指定してください。
(lightflowは現時点ではTARGAフォーマット(拡張子はtga)にしか対応していない
ようです)

-----------------------------------------------------
簡単なオブジェクトを作ってためしてみましたが,注意点としては,そのままメタセコイアで作成すると大きいので,大きさを1とか2くらい小さいものにして最初は試してみるとよいかもしれません。
サンプルのmakefile.pyが参考になりました。

*.lfmを含んだオブジェクトを移動しようと思って,transformをつけてみましたが,うまくいきませんでした。
メタセコイア上で配置まで考えて作成しないといけない面倒さがありますね。*.lfmの移動・回転・拡大縮小ができないのでしょうか。大量に複製したいときはどうするのでしょう。課題です。こちらで解決 lfmファイルの移動・回転・拡大縮小

MATSpiderを開発されたMaeさんが公開していたものですが,すでにネットでは公開されておりません。
  • -
  • -

LightFlowのコンバータについて その4

lfmの拡大縮小、回転については、変数として設ければよい。

s.materialBegin( plastic )

s.addObject( s.newObject( "mesh", [ "file", "cu.lfm", 0 ] ) )

s.materialEnd()

上を以下のように、cu_objと指定して変換でもって囲ってあげるとよい。

s.materialBegin( plastic )
s.transformBegin( transform().rotationAroundZ( pi/4 ))
cu_obj=s.addObject( s.newObject( "mesh", [ "file", "cu.lfm", 0 ] ) )
s.transformEnd()
s.materialEnd()
  • -
  • -

Metalightを使う

LightFlowのコンバータとして、人気があったMetalightがありました。
今は閉鎖されてしまいましたが、LightFlowとメタセコイアを連携するソフトでした。残念です。

●入手先、インターネットアーカイブより・・・・ダウンロード
metalight2.zip 1906KB
http://web.archive.org/web/20040627025436/http://total-effects.oc.to/soft/metalight2/metalight2.zip

Metalightのチュートリアル・・・・ダウンロード
http://www.geocities.co.jp/SiliconValley-Cupertino/5243/graphic/MetalightTutorial.lzh

●metalight2 のインストール方法
Windows 7で起動しました。以下のようにちょっといじらないと動きません。

1.古いバージョンのURLMON.DLLを入手します。 (1999/05/05のタイムスタンプのものを入手。ウィルス混入等あるので。探すときは気を付けること)
2.バイナリエディタを使って、metalight2.exeを開きます。ファイル内から"URLMON.DLL"を検索します。(EmEditor Professional 2010を使いました。フリーでもバイナリエディタはいくつかあるでしょう)
3.見つかった文字列"URLMON.DLL"を適当な名前に書き換えます。たとえばURLMMM.DLLと書き換える。バイナリエディタでmetalight2.exeを上書き保存します。
4.旧バージョンのurlmon.dllを↑と同じ名前にリネームし、metalightのディレクトリに置く。 ここではurlmmm.dllにしました。
5.metalight2.exeを起動します。

後は、LightFlowのパス設定などをして、実験してみてください。
  • -
  • -

Meatalightを使う その2

メタセコイアでオブジェクトごとに分けて、保存する。
Metalightで、オブジェクトを読み込み、ライトを設定、カメラを設定、材質を設定する。Lightflowでレンダリングしてみる。

エクスポートからPythonファイルを出力する。

見てみたところ、ambientlightが勝手に0,0,0になっている。metalightからlightflowへ直接レンダリングした場合と、pythonファイルを出力してからlightflowでレンダリングした場合では、ちょっと違う。

レンダリング速度も、直接python形式で出力したものの方が速いです。

以下は、34秒。ありがとうございます。
image34s.jpg
metalightでカメラ調整、ライト調整、簡単なマテリアル設定を行ってしまい、後はエディタで調整するのが良いかも。メタセコイアのオブジェクトごとにスムージングしたlfmファイルが出力されるところが良いです。 続きを読む>>
  • -
  • -

LightFlowのためのPythonファイル

Pythonは、基本的にインデントで制御しているので、きちんと書式を整えておかないとエラーを出してくれる。
LightFlowのファイルもPythonだから、注意しなくてはならない。

エディタで開いて、まったく見た目は同じファイルでも動かないことがありました。

原因は、改行コードがMacintoshになっていたこと。
エディタで別名で保存で、Windowsの改行コードにして保存しなおした。

ダウンロードしたサンプルファイルできました。
ありがとうございます。
focus.jpg 続きを読む>>
  • -
  • -

<< 2/8 >>