RenderManのお勉強(光源)

ここでは、光源について扱います。光源の設定を活かすためには、物体表面の質感などを設定する必要があります。そのためには、RenderManは表面シェーダ(surface shader)を設定します。この目的のために用いられるのが、Surface命令です。
シェーダはRenderManにおける特徴的な機能ですので、後ほど詳しく扱うことになると思います。
これがあるために、RenderManは実際のCG制作現場で用いられています。


点光源(point light)

光源に色々な種類がありますが、ここでは点光源と呼ばれるものをあつかいます。これは、光源に大きさがなく、光源からの距離が遠くなるに従って、明るさが暗くなるようなものです。光源は一つだけなく、複数のものを置くことが出来ます。

点光源のサンプル

# pointlight01.rib : point light sample rib file
Display "pointlight01.tiff" "file" "rgba"
Projection "perspective" 
Translate 0 0 2
WorldBegin
	LightSource "pointlight" 1
	   "from" [-2 2 -2]
           "intensity" [7]

	Surface "plastic"
	Color [1 0 0]
	Sphere 1 -1 1 360
WorldEnd

点光源の実行例



点光源色の変更サンプル

# pointlight03.rib : point light sample rib file
Display "pointlight03.tiff" "file" "rgba"
Projection "perspective" 
Translate 0 0 2
WorldBegin
	LightSource "pointlight" 1
	   "from" [-2 2 -2]
	   "lightcolor" [1 1 0]
           "intensity" [7]
	Surface "plastic"
	Color [0 1 1]
	Sphere 1 -1 1 360
WorldEnd

点光源色の変更サンプルの実行例



複数の点光源のサンプル

# pointlight01.rib : point light sample rib file
Display "pointlight01.tiff" "file" "rgba"
Projection "perspective" 
Translate 0 0 2
WorldBegin
	LightSource "pointlight" 1
	   "from" [-2 2 -2]
           "intensity" [7]
	LightSource "pointlight" 2
	   "from" [2 2 -2]
           "intensity" [7]

	Surface "plastic"
	Color [1 0 0]
	Sphere 1 -1 1 360
WorldEnd

複数の点光源の実行例



説明

LightSourceの呼び出し方(point lightの場合)
LightSource "pointlight" sequencenumber パラメータの並び
LightSourceの呼び出し方(一般系)
LightSource name sequencenumber パラメータの並び

Surfaceの呼び出し方
Surface shadername パラメータの並び

  1. 点光源などの大きさのない光源の設定のためには、LightSource命令を使用します。
  2. nameには使用したい光源の種類(名前)を指定します。点光源の場合には、"pointlight"となります。
  3. sequencenumberには、光源を識別するための数字(0から65535まで)を書きます。基本的には光源毎に異なる番号を設定します。もし同じものがあった場合には、後に指定されたものが有効となります。
  4. 「"from"  [x y z]」により、点光源の位置が(x,y,z)になります。
  5. 「"intensity" [明るさ]」により、光源の明るさを指定することが出来ます。
  6. 「"lightcolor" [色指定]」により、光源の色を指定することが出来ます。色を指定しなかった場合には、光源色は白色となっています。この部分は、LightSourceで設定される他の光源でも同じになっています。
  7. 色変更のサンプルでは、物体表面色はシアン色ですが、光源色は黄色となっているので、緑色に見えています。
  8. pointlightに限りませんが、複数の光源を置く場合には、LightSourceなどの光源設定のための命令を複数個置くことで実現できます。
  9. 物体の表面の質感は、Surfaceで指定しています。ここでは、物体表面の質感を"plastic"(プラスチック風)に設定しています。細かく指定できるパラメータは何も指定していません。

平行光源(distantlight)

ここでは、太陽光線のような平行光源を扱います。点光源とことなり、平行光源では場所が変わっても光の来る方向と光の強さは変わりません。

平行光源のサンプル

# distantlight01.rib : distant light sample rib file
Display "distantlight01.tiff" "file" "rgba"
Projection "perspective" 
Translate 0 0 2
WorldBegin
	LightSource "distantlight" 1
	   "to" [-1 0 0]
           "intensity" [3]
	Surface "plastic"
	Color [1 0 0]
	Sphere 1 -1 1 360
WorldEnd

平行光源の実行例



説明

LightSourceの呼び出し方(distant lightの場合)
LightSource "distantlight" sequencenumber パラメータの並び
  1. 平行光源の設定を行うためには、nameに"distantlight"を指定します。
  2. 「"to" 光の方向」によって、光が来る方向を指定できます。この例では、(-1,0,0)方向(x軸の負の方向)から光が当たっています。
  3. 「"intensity" [明るさ]」によって、光源の明るさを指定できます。

環境光(ambientlight)

理屈上では、光が当たってない部分は真っ黒になります。しかし、このような画像を作ると違和感のあるものとなることがあります。このような状況を避けるために、環境光と呼ばれる仮想的な光源を利用することがあります。環境光は、全ての場所に一定の明るさの当てるものです。あまり明るくすると不自然なものとなりますので、注意が必要です。

環境光のサンプル

# ambientlight01.rib : distant light sample rib file
Display "ambientlight01.tiff" "file" "rgba"
Projection "perspective" 
Translate 0 0 2
WorldBegin
	LightSource "ambientlight" 1
           "intensity" [0.5]
	Surface "plastic"
	Color [1 0 0]
	Sphere 1 -1 1 360
WorldEnd

環境光の実行例



説明

LightSourceの呼び出し方(ambient lightの場合)
LightSource "ambientlight" sequencenumber パラメータの並び
  1. 環境光を利用するためには、nameに"ambientlight"を指定します。
  2. 「"intensity" [明るさ]」で環境光の明るさを指定します。

スポットライト(spotlight)

ここでは、スポットライトのような光源を扱います。

スポットライトのサンプル

# spotlight01.rib : spot light sample rib file
Display "spotlight01.tiff" "file" "rgba"
Projection "perspective" 
Translate 0 0 4
WorldBegin
	LightSource "spotlight" 1
	   "from" [0 0 -4]
	   "to" [0 0 0]
           "intensity" [8]
           "coneangle" [0.5]
           "conedeltaangle" [0.25]

	Surface "plastic"
	Color [1 0 0]
	Polygon 
	    "P" [ 4  4 0
                 -4  4 0
                 -4 -4 0
                  4 -4 0]
WorldEnd

スポットライトの実行例



スポットライトと環境光のサンプル

# spotlight02.rib : spot light sample rib file
Display "spotlight02.tiff" "file" "rgba"
Projection "perspective" 
Translate 0 0 4
WorldBegin
	LightSource "spotlight" 1
	   "from" [0 0 -4]
	   "to" [0 0 0]
           "intensity" [8]
           "coneangle" [0.5]
           "conedeltaangle" [0.25]
	LightSource "ambientlight" 2
	   "intensity" [0.1]

	Surface "plastic"
	Color [1 0 0]
	Polygon 
	    "P" [ 4  4 0
                 -4  4 0
                 -4 -4 0
                  4 -4 0]
WorldEnd

スポットライトと環境光のサンプルの実行例



説明

LightSourceの呼び出し方(spot lightの場合)
LightSource "spotlight" sequencenumber パラメータの並び
  1. 「"from" 光源の位置」によって、スポットライトのある位置を指定します。「"to" 注視点」によって、スポットライトが向いている位置を指定します。from-toによって、スポットライトの向きがわかります。「"coneangle" スポットライトの放射角度」によってスポットライトの光の放射角度を指定します。「"conedeltaangle" 光の減衰角度」によって、スポットライトの光が弱くなっていく角度を指定します。この2つの角度は弧度法(ラジアン)で指定します。
  2. この他にも"beamdistribution"と呼ばれるパラメータを指定することも出来ます。
  3. スポットライトの当たってない部分が真っ暗になっていると少し不自然なので、環境光を当てたサンプルも作ってみました。2つの画像を見比べて、環境光の役割を確認してください。

おまけ

Illuminate

Illuminate命令によって、光源のOn-Offの制御が出来ます。
Illuminateの呼び出し方
Illuminate sequencenumber onoff
sequencenubmerによって指定した光源を点灯させるときにはonoffに1を指定します。逆に、消灯するときにはonoffに0を指定します。

LightSourceに指定できる標準的な光源

光源名nameLight Sourceシェーダパラメータ
環境光ambientlightintensity,lightcolor
平行光源distantlightintensity,lightcolor,from,to
点光源pointlightintensity,lightcolor,from
スポットライトspotlightintensity,lightcolor,from,to,coneangle,conedeltaangle,beamdistribution

シェーダパラメータの初期値

名称初期値
lightcolor白(1,1,1)
intensity1
form原点(0,0,0)
to(0,0.1)
coneangleradians(30)
conedeltaangleradians(5)
beamdistribution2

標準で用意されている表面の質感(shadernameに指定できるシェーダ名)

シェーダ名設定できる項目
matteKa,Kd
metalKa,Ks,roughness
shinymetalKa,Ks,Kr,roughness,texturename
plasticKa,Kd,Ks,roughness,specularcolor
pintedplasticKa,Kd,Ks,roughness,specularcolor,texturename

項目の意味

Ka環境係数(ambient)
Kd拡散係数(diffuse)
Ks鏡面係数(specular)
Kr反射係数(reflection)
roughness表面荒さ
specularcolor鏡面色(specular color)
texturenameテクスチャマップ名

Topページに戻る
2008年02月02日(土) 17:15:28 Modified by m_riho

添付ファイル一覧(全7件)
b2b430d6.jpg (4.02KB)
Uploaded by m_riho 2008年01月05日(土) 02:06:30
06119fbc.jpg (4.03KB)
Uploaded by m_riho 2008年01月05日(土) 02:02:03
f1072a5a.jpg (5.45KB)
Uploaded by m_riho 2008年01月05日(土) 01:08:59
10391461.jpg (6.22KB)
Uploaded by m_riho 2008年01月05日(土) 00:46:35
31220596.jpg (5.86KB)
Uploaded by m_riho 2008年01月04日(金) 23:44:18
2fa0b23d.jpg (5.94KB)
Uploaded by m_riho 2008年01月04日(金) 23:09:45
8b7690ab.jpg (5.59KB)
Uploaded by m_riho 2008年01月04日(金) 23:09:02



スマートフォン版で見る