VDRファイルフォーマット解説
第100225版

 vidroでは拡張子がVDRのオリジナルフォーマットで記述されたシーンファイル(中身はテキスト形式)を読み込んでレンダリングを行います。また、MQO, OBJ, LWO, 3DS, DXF, FBX, COLLADA形式を直接読み込んでレンダリングすることもできます。シーンファイルを用いない場合、適当に作られた天球光源の中に物体が置かれます。マテリアルはオブジェクトファイル内にデータがあればそのマテリアルが使われますが、同名のマテリアルがVDRシーンファイルに記述されていた場合、そちらが優先して使われます。マテリアルの記述が一切無いならば反射率0.5の拡散反射体として読み込まれます。複雑な照明やマテリアルを使いたい場合はVDRシーンファイルを用いる必要があります。以下ではvidroで扱うVDRファイルについて解説していきます。

●オブジェクトファイル

 vidroで扱う物体はFBX, MQO, 3DS, LWO, OBJ, DXF, COLLADAファイルから読み込みます(COLLADAは仮対応)。これらのファイルを開いたとき、読み込む項目は以下になります。

ジオメトリ
形状 UV スムージング
FBX Mesh, Nurb, Patch
MQO 3角形, 4角形, バイナリ頂点
(要片面化・フリーズ)
3DS キーフレーム情報は未対応
LWO FACE, PTCH
OBJ f
DXF 3DFACE × ×

Position Focus Upside Focal Length Clip 平行投影 DOF
FBX
MQO × × ×
3DS × ×
LWO × × × × × × ×
OBJ × × × × × × ×
DXF × × × × × × ×

マテリアル
Emission Diffuse Specular Reflection Transparency Normal Map
Weight Texture Weight Texture Weight Texture Reflectance Exponent Weight Texture IOR Weight Texture IOR
FBX ×
MQO × × × × ×
3DS × × × × × ×
LWO ×
OBJ × × ×
DXF × × × × × × × × × × × × × ×

●画像ファイル

 vidroでは物体、光源、絞りなど様々なものに画像をマッピング出来ます。対応している画像フォーマットは以下になります。

HDRI LDRI

 法線マップ以外のLDRI(PNG, BMP, TIFF, JPEG, GIF, WMF, EMF, ICO)はガンマ値2.2で補正して読込を行います。マッピングは物体にはUVマッピングを、平行光源・レンズには平面マッピングを、点光源・天球光源には球状の緯度経度マッピングを行います。

●VDRシーンファイル

 シーンファイルの拡張子は.vdrですが、中身はテキストによって記述されます。ファイル内の空行は無視されます。大文字・小文字は区別しません。単語はスペース又はタブで区切られます。ファイル名やマテリアル名などの文字列はダブルクォーテーションで囲みます。
 シーンデータファイルに記述する項目はまず1行目に"vidro******"(******はバージョン番号)を記述します。この文字列がない場合、シーンデータファイルとして読込を行いません。それ以後は"new<データチャンク名>"キーワードでデータチャンクを記述していきます。newキーワードで記述できるデータチャンクはMaterial, Space, Volume, PointLight, ParallelLight, Eye, Objectです。チャンクは階層構造になっており、SpaceはVolumeとObjectを子に持ち、VolumeはPointLight, ParallelLight, Eyeを子に持ちます。
 vidroのシーンの構造について述べます。シーンはまず"Space"を持ちます。"Space"は1つの3次元空間であり、この空間内は幾つかの"Volume"によって分割されます。"Volume"はパーティシペイティングメディアや光源等に関する情報を管理する単位で、"Volume"同士の境界面はポリゴンオブジェクトによって定義されます。ポリゴンオブジェクトは"Object"によって定義され、"Material"で定義した材質情報が割り当てられます。"Space"は複数定義することも可能です。

<例>

vidro100225

new Material "name"
 ・・・・・・・

new Space "name"

  new Volume "name"
   ・・・・・・・

    new PointLight "name"
     ・・・・・・・

    new ParallelLight "name"
     ・・・・・・・

    new Eye "name"
     ・・・・・・・

  new Object "name"
   ・・・・・・・

"name"に各チャンクの名前を記述し、・・・・・・・の部分に各チャンクのパラメータを記述していきます。指定できるパラメータは以下の項目があります。

Material

Space

Volume

PointLight

ParallelLight

Eye

Object


Materialチャンク

<例>

new Material "MTL0"
  Specular            1.0 1.0 1.0
  SpecularReflectance 0.5 0.25 0.1
  Exponent            10 10

new Material "MTL1"
  Diffuse             1.0 1.0 1.0 "block.png"
  Normal              "block_normal.png"

new Material "MTL2"
  Volume              0 1
  IOR                 1 1.66
  Transparency        1.0 1.0 1.0

new Material "MTL3"
  Reflection          1.0 1.0 1.0 "reflection.tif"
  ReflectionIOR       20 10 5

new Material "MTL4"
  Volume              0 1
  Transparency        1.0 1.0 1.0

new Material "MTL5"
  Emission            100.0 100.0 100.0

 Materialチャンクは物体表面のマテリアルを記述する。"new Material"の後のダブルクォーテーションで囲まれた文字列がマテリアル名となる。マテリアル名は省略不可。ここで記述したマテリアル名は後述するオブジェクトファイルの読込のときに利用され、オブジェクトファイル内で同名のマテリアルが使用されたときに割り当てられる。Materialチャンクは以下のパラメータを持つ。パラメータの記述を省略した場合は初期値が適用される。

■Volume
値の型: "<ボリューム名>" "<ボリューム名>"
デフォルト値: 最初に定義されたボリューム名 最初に定義されたボリューム名

 オブジェクトの表側のボリュームと裏側のボリュームのボリューム名を指定する。ひとつめが表側、2つめが裏側のボリュームである。光がこのマテリアルを透過する際に、ボリュームを切り換えるのに使う。マテリアルが割り当てられるオブジェクトが属するSpaceと、ボリュームに関連付けられているSpaceとは同じでなければならない。そうでない場合は"Transparency"が無効になる。

■IOR
値の型: <実数> <実数>
デフォルト値: 1.0 1.0

 オブジェクトの表側と裏側のボリュームの絶対屈折率。スカラ値で指定する。鏡面反射・屈折は屈折率を用いたフレネル反射が行われるため、表裏の屈折率が同じだと完全に透過し、違いが大きいほど反射成分大きくなり、透過しにくくなる。"Jump"によってマテリアルの裏側が別の空間と繋がっている場合はその空間の絶対屈折率が使われる。

■Transparency
値の型: <0以上1以下の実数> <0以上1以下の実数> <0以上1以下の実数> "<画像ファイル名>"
デフォルト値: 0.0 0.0 0.0 ""


完全鏡面反射・屈折

 透過係数。RGB値と画像ファイル名で指定する。画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込む。画像はオブジェクトにUVマッピングされる。この値が大きいほどマテリアルは薄く透き通るようになり、0で非透過、1で完全に透過になる。透過した光は前述の屈折率"IOR"に従って完全鏡面反射・屈折が計算されるので、ガラスや水のように反射屈折するマテリアルを作ることができる。

■Reflection
値の型: <0以上1以下の実数> <0以上1以下の実数> <0以上1以下の実数> "<画像ファイル名>"
デフォルト値: 0.0 0.0 0.0 ""


完全鏡面反射

 完全鏡面反射係数。鏡、金属、クリア塗装のような効果をマテリアルに与える。RGB値と画像ファイル名で指定する。画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込む。画像はオブジェクトにUVマッピングされる。ReflectionIORによるフレネル反射にこの値が乗算される。反射しなかった成分はSpecular, Diffuse, Emissionにかかる。

■Specular
値の型: <0以上1以下の実数> <0以上1以下の実数> <0以上1以下の実数> "<画像ファイル名>"
デフォルト値: 0.0 0.0 0.0 ""


荒い鏡面反射

 荒い鏡面反射係数。RGB値と画像ファイル名で指定する。画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込む。画像はオブジェクトにUVマッピングされる。反射モデルはAnisotropic Phongモデル。

■Diffuse
値の型: <0以上の実数> <0以上の実数> <0以上の実数> "<画像ファイル名>"
デフォルト値: 0.0 0.0 0.0 ""


拡散反射

 拡散反射係数。RGB値と画像ファイル名で指定する。画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込む。画像はオブジェクトにUVマッピングされる。拡散反射モデルはLambertモデル。

■Emission
値の型: <0以上の実数> <0以上の実数> <0以上の実数> "<画像ファイル名>" "<画像ファイル名>" "<画像ファイル名>"
デフォルト値: 0.0 0.0 0.0 "" "" ""


発光

 発光放射輝度。RGB値と画像ファイル名で指定する。画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込む。画像ファイルは3つ指定し、最初の画像はオブジェクトにUVマッピングされるテクスチャである。2つ目の画像は光の放射分布を制御するマップで、法線方向を北極として半球状に緯度経度マッピングされる。3つ目の画像はポータルのような効果を作るためのもので、外光となる環境マップを指定する。この環境マップは天球光源に指定するものと同じくワールド座標系に緯度経度マッピングされる。発光放射輝度はこれらのマップの値を乗算した値となる。Emissionの値がSky LightやParallel Lightに比べて大きいとvidroが判定した場合、このマテリアルが割り当てられたオブジェクトからコースティクスフォトンが放射され、直接照明はシャドウレイによって計算されるようになる。

■ReflectionIOR
値の型: <実数> <実数> <実数>
デフォルト値: 0.0 0.0 0.0

 完全鏡面反射における相対屈折率。RGB値で指定する。完全鏡面反射は屈折率を用いたフレネル反射が計算される。反射しなかった成分はDiffuse, Specular, Emissionにかけられる。

■SpecularReflectance
値の型: <0以上1以下の実数> <0以上1以下の実数> <0以上1以下の実数>
デフォルト値: 0.5 0.5 0.5

 荒い鏡面反射における垂直入射の反射率。RGB値で指定する。荒い鏡面反射はこの値を基にフレネル反射の近似計算が行われる。

■Exponent
値の型: <0以上の実数> <0以上の実数>
デフォルト値: 32 32

 荒い鏡面反射の滑らかさ。接線方向の値と従法線方向の値をそれぞれ指定する(異方性反射)。この値が大きいほど物体表面は滑らかになり、小さいほど荒くなる。BRDFはAnisotropic Phongモデルであり、ここで設定した値が指数パラメタとして使われる。接線ベクトルは後述する"Axis"の値によって計算される。

■Axis
値の型: <実数> <実数> <実数>
デフォルト値: 0.0 1.0 0.0

 異方性反射等で用いる接線ベクトルの回転軸ベクトル。このベクトルと法線ベクトルとの外積が接線ベクトルとなり、シェーディングで用いられる。

■Jump
値の型: "<マテリアル名>" "<マテリアル名>"
デフォルト値: 現在のマテリアル名 現在のマテリアル名


どこでもドア

完全鏡面透過が起こる際、"Jump"によって透過側が別空間へ繋がっているマテリアルを定義する。1つめのマテリアル名が面の裏側から表側へ透過する際のジャンプ先、2めのマテリアル名が表から裏へ透過する際のジャンプ先のマテリアルである。光が透過する際に、ここで指定したジャンプ先マテリアルが割り当てられたオブジェクト表面へ"ジャンプ"する。可換性はユーザ自身で保障する必要がある。

■Normal
値の型: "<画像ファイル名>"
デフォルト値: ""

 法線マップ画像。ここで指定した画像を法線マッピングに用いる。他の画像ファイルの読み込みと異なり、以下の式を用いて法線ベクトルに変換して読み込む。

x = 2*R - 1
y = 2*G - 1
z = 2*B - 1

 尚、PNG,BMP,JPEG,GIF等のLDRIの場合、ガンマ補正は行わない。

■ViewToneMin
値の型: <実数> <実数> <実数>
デフォルト値:
0.0 0.0 0.0

 ノンフォトリアリスティックレンダリング(NPR)用の設定。"ViewTone"で変換する輝度の基準となる小さい方の値。 RGB値で指定する。ここで指定された輝度と"ViewToneMax"で指定された色を基準として輝度変換が行われる。

■ViewToneMax
値の型: <実数> <実数> <実数>
デフォルト値:
1.0 1.0 1.0

 ノンフォトリアリスティックレンダリング(NPR)用の設定。"ViewTone"で変換する輝度の基準となる大きい方の値。 RGB値で指定する。ここで指定された輝度と"ViewToneMin"で指定された色を基準として輝度変換が行われる。

■ViewTone
値の型: <実数> <実数> <実数> <実数> "<画像ファイル名>" <実数> <実数> <実数> "<画像ファイル名>"
デフォルト値:
0.00 0.0 0.0 0.0 "" 0.0 0.0 0.0 ""
1.00 0.0 0.0 0.0 "" 1.0 1.0 1.0 ""



Photorealistic Rendering Non-Photorealistic Rendering


Non-Photorealistic Rendering

 ノンフォトリアリスティックレンダリング(NPR)用の設定。ここで物体表面の輝度を指定された値に変換する。 記述の仕方はVolumeでの"ViewTone"や"LightingTone"と同じである。最初の実数が変換前の輝度の基準値で、"ViewToneMin"と"ViewToneMax"で指定された輝度との間でこの値に基づいて線形補間された輝度が変換対象の色として選択される。 次に、NPRの重みをRGB値と画像ファイルで指定する。 画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込まれる。 この値が0に近いとフォトリアルに近づき、1に近いとNPRに近づく。0.5だと半々の値が出力される。 次に変換後の輝度値をRGB値と画像ファイル名で指定する。 同じように画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込まれる。 これらの画像は出力画像上の座標ににマッピングされる。 "ViewTone"は輝度毎に設定する必要があり、複数行に渡って記述される。 記述する順番は最初の実数の値が小さい順で記述されなければならない。 デフォルト値はアニメ調のNPR変換が行われる。 LightingToneとの違いはLightingToneが入射光のみにNPR変換が行われるのに対し、"ViewTone"はそのサーフェスにおける最終的な輝度値にNPR変換が行われる点である。

■LightingToneMin
値の型: <実数> <実数> <実数>
デフォルト値:
0.0 0.0 0.0

 ノンフォトリアリスティックレンダリング(NPR)用の設定。"LightingTone"で変換する輝度の基準となる小さい方の値。 RGB値で指定する。ここで指定された輝度と"LightingToneMax"で指定された色を基準として輝度変換が行われる。

■LightingToneMax
値の型: <実数> <実数> <実数>
デフォルト値:
2.0 2.0 2.0

 ノンフォトリアリスティックレンダリング(NPR)用の設定。"LightingTone"で変換する輝度の基準となる大きい方の値。 RGB値で指定する。ここで指定された輝度と"LightingToneMin"で指定された色を基準として輝度変換が行われる。

■LightingTone
値の型: <実数> <実数> <実数> <実数> "<画像ファイル名>" <実数> <実数> <実数> "<画像ファイル名>"
デフォルト値:
0.00 1.0 1.0 1.0 "" 0.5 0.5 0.5 ""
1.00 1.0 1.0 1.0 "" 1.5 1.5 1.5 ""


Photorealistic Rendering

Non-photorealistic Rendering

 ノンフォトリアリスティックレンダリング(NPR)用の設定。ここで物体表面の入射光を指定された値に変換する。 記述の仕方は"ViewTone"と同じである。最初の実数が変換前の輝度の基準値で、"LightingToneMin"と"LightingToneMax"で指定された輝度との間でこの値に基づいて線形補間された輝度が変換対象の色として選択される。 次に、NPRの重みをRGB値と画像ファイルで指定する。 画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込まれる。 この値が0に近いとフォトリアルに近づき、1に近いとNPRに近づく。0.5だと半々の値が出力される。 次に変換後の輝度の値をRGB値と画像ファイル名で指定する。 同じように画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込まれる。 これらの画像は出力画像上の座標ににマッピングされる。 LightingToneは輝度毎に設定する必要があり、複数行に渡って記述される。 記述する順番は最初の実数の値が小さい順で記述されなければならない。 "ViewTone"との違いは"ViewTone"がテクスチャや他のライティングを含めたそのサーフェスにおける最終的な輝度値にNPR変換が行われるのに対し、 LightingToneは入射光のみにNPR変換が行われる点である。

■ContourColor
値の型: <実数> <実数> <実数> "<画像ファイル名>"
デフォルト値: 0.0 0.0 0.0 ""


ContourColor

 輪郭線の色。RGB値と画像ファイル名で指定する。画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込む。

■ContourGroup
値の型: <0以上の整数>
デフォルト値: 0


Default

Using ContourGroup

 このマテリアルが属する輪郭線のグループID。マテリアル境界の輪郭線を描きたくない部分がある場合にこの値を設定する。扱い方は3DSフォーマットのスムージンググループと同じ要領で、この番号を2進数で表現したときに共に1となる桁のあるグループIDを持つマテリアルとの間にはマテリアル境界の輪郭線が描かれない。デフォルト値は0で、全てのマテリアル境界の輪郭線が描かれる。  

■Boundary
値の型: <0以上の実数> <0以上の実数> <0以上の実数> "<画像ファイル名>"
デフォルト値: 1.0 1.0 1.0 ""


Textured Contour

 マテリアル境界線の濃さ。RGB値と画像ファイル名で指定する。画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込む。

■Crease
値の型: <0以上の実数> <0以上の実数> <0以上の実数> "<画像ファイル名>"
デフォルト値: 1.0 1.0 1.0 ""

 クリース線の濃さ。RGB値と画像ファイル名で指定する。画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込む。

■Background
値の型: <0 or 1 or 2>
デフォルト値: 0

Original Image Using "Background 1" Using "Background 2"

 このマテリアルに背景画像を合成するか否か。背景合成時に、この値が0ならそのまま表示され、1ならこのマテリアルが割り当てられたオブジェクトは背景画像に置き換わり、2なら背景画像に照明を合成して表示する。デフォルト値は0で、このマテリアルは背景とならない。合成用の照明は、背景が同一ボリューム内の天球光源・平行光源・点光源によって照らされていると仮定して計算される。


Spaceチャンク

 Spaceチャンクではシーン内の空間についての記述を行う。Spaceチャンクは複数のVolumeチャンクと複数のObjectチャンクを子に持つ。Spaceチャンクは複数記述でき、マテリアルの"Jump"によって相互に連結できる。


Volumeチャンク

<例>

new Space "spc"

  new Volume "vol0"
    SkyLight   1.0 1.0 1.0 "grace.hdr"

  new Volume "vol1"
    Origin        0.0  0.05 0.5
    Size          0.1  0.1  0.1
    Extinction    10.0 0.0  5.0
    Anisotropy    0.5

  new Volume "vol2"
    Origin        0.1 0.02 0.5
    Size          0.1 0.2  0.1
    Extinction    1.0 1.0 1.0 "body"
    Albedo        0.5 0.5 0.5

 Volumeチャンクでは空間中の媒質、光源、視点についての情報を記述する。"new Volume"の後のダブルクォーテーションで囲まれた文字列がボリューム名となる。ボリューム名は省略不可。Volumeチャンクは以下のパラメータを持つ。パラメータの記述を省略した場合は初期値が適用される。また、VolumeチャンクはPointLightチャンク, ParallelLightチャンク, Eyeチャンクを子に持つ。

■SkyLight
値の型: <0以上の実数> <0以上の実数> <0以上の実数> "<画像ファイル名>"
デフォルト値: 0.0 0.0 0.0 ""


緯度経度マッピング

 天球光源の発光放射輝度(環境マップ)。RGB値と環境マップの画像ファイル名で指定する。画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込む。画像は縦軸を緯度、横軸を経度とし、Y軸を地軸、XZ平面を赤道として天球にマッピングされる。

■ViewToneMin
値の型: <実数> <実数> <実数>
デフォルト値:
0.0 0.0 0.0

 ノンフォトリアリスティックレンダリング(NPR)用の設定。"ViewTone"で変換する輝度の基準となる小さい方の値。 RGB値で指定する。ここで指定された輝度と"ViewToneMax"で指定された色を基準として輝度変換の指標となる。

■ViewToneMax
値の型: <実数> <実数> <実数>
デフォルト値:
1.0 1.0 1.0

 ノンフォトリアリスティックレンダリング(NPR)用の設定。"ViewTone"で変換する輝度の基準となる大きい方の値。 RGB値で指定する。ここで指定された輝度と"ViewToneMin"で指定された色を基準として輝度変換が行われる。

■ViewTone
値の型: <実数> <実数> <実数> <実数> "<画像ファイル名>" <実数> <実数> <実数> "<画像ファイル名>"
デフォルト値:
0.00 0.0 0.0 0.0 "" 0.0 0.0 0.0 ""
1.00 0.0 0.0 0.0 "" 1.0 1.0 1.0 ""

 ノンフォトリアリスティックレンダリング(NPR)用の設定。ここで天球光源の輝度を指定された値に変換する。 記述の仕方はMaterialでの"ViewTone"や"LightingTone"と同じである。最初の実数が変換される輝度の基準となる値で、"ViewToneMin"と"ViewToneMax"で指定された輝度との間で この値に基づいて線形補間された輝度が変換対象の色として選択される。 次に、NPRの寄与をRGB値と画像ファイルで指定する。 画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込まれる。 この値が0に近いとフォトリアルに近づき、1に近いとNPRに近づく。0.5だと半々の値が出力される。 次に変換される輝度の値をRGB値と画像ファイル名で指定する。 同じように画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込まれる。 これらの画像は出力画像上の座標ににマッピングされる。 "ViewTone"は輝度毎に設定する必要があり、複数行に渡って記述される。 記述する順番は最初の実数の値が小さい順で記述されなければならない。 デフォルト値はフォトリアリスティックレンダリングの重みが(0.0, 0.0 0.0)なのでNPR変換は行われない。

■ContourColor
値の型: <実数> <実数> <実数> "<画像ファイル名>"
デフォルト値: 0.0 0.0 0.0 ""

 天球光源の輪郭線の色。RGB値と画像ファイル名で指定する。画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込む。

■ContourGroup
値の型: <0~4294967295の整数>
デフォルト値: 0

 この天球光源が属する輪郭線のグループID。マテリアル境界の輪郭線を描きたくない部分がある場合にこの値を設定する。扱い方は3DSフォーマットのスムージンググループやWarabiのマテリアルグループと同じ要領で、この番号を2進数で表現したとき、共に1となるビットのあるグループIDを持つマテリアルとの間にはマテリアル境界の輪郭線が描かれない。デフォルト値は0で、全てのマテリアル境界の輪郭線が描かれる。

■Boundary
値の型: <0以上の実数> <0以上の実数> <0以上の実数> "<画像ファイル名>"
デフォルト値: 1.0 1.0 1.0 ""

 天球光源のマテリアル境界線の濃さ。RGB値と画像ファイル名で指定する。画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込む。

■Background
値の型: <0 or 1>
デフォルト値: 1

 この天球光源に背景画像を合成するか否か。背景合成時に、この値が1ならば天球光源は背景画像に置き換わる。0ならばそのまま表示される。デフォルト値は1で、天球光源は背景となる。

■Anisotropy
値の型: <-1より大きく1より小さい実数>
デフォルト値: 0.0

 媒質中の散乱の異方性の強さ。0より大きいと前方散乱、0より小さいと後方散乱、0で等方散乱。位相関数モデルはSchlickのモデル。

■HomogeneousExtinction
値の型: <0以上の実数> <0以上の実数> <0以上の実数>
デフォルト値: 0.0 0.0 0.0

 ボリューム内全領域のパーティシペイティングメディアの消滅係数。RGB値で指定する。消滅係数とは媒質の濃さであり、この値が大きいほど光は媒質中で大きく減衰する。霧、煙、濁った水、宝石、色ガラス等を表現できる。

■HomogeneousAlbedo
値の型: <0以上1以下の実数> <0以上1以下の実数> <0以上1以下の実数>
デフォルト値: 0.0 0.0 0.0

 ボリューム内全領域のパーティシペイティングメディアの散乱アルベド。RGB値で指定する。散乱アルベドとは作用点で光が散乱する割合であり、この値が大きいほど光は媒質中で強く散乱する。0だと宝石や色ガラスのように透きとおった媒質となり、大きいと霧など濁った媒質となる。

■Extinction
値の型: <0以上の実数> <0以上の実数> <0以上の実数> "<フォルダ名>"
デフォルト値: 0.0 0.0 0.0 ""

 局所的で不均質なパーティシペイティングメディアの消滅係数。RGB値とフォルダ名で指定する。フォルダ名が省略されていればRGB値がそのまま使われ、フォルダ名が指定してあればそのフォルダ中の全ての画像ファイルをABC順で読み込む。画像は3次元グリッドにマッピングされ、不均質な消滅係数の分布を表わす。消滅係数とは媒質の濃さであり、この値が大きいほど光は媒質中で大きく減衰する。霧、煙、濁った水、宝石等を表現できる。

■Albedo
値の型: <0以上1以下の実数> <0以上1以下の実数> <0以上1以下の実数> "<フォルダ名>"
デフォルト値: 0.0 0.0 0.0 ""

 局所的で不均質なパーティシペイティングメディアの散乱アルベド。RGB値とフォルダ名で指定する。フォルダ名が省略されていればRGB値がそのまま使われ、フォルダ名が指定してあればそのフォルダ中の全ての画像ファイルをABC順で読み込む。画像は3次元グリッドにマッピングされ、不均質な散乱アルベドの分布を表わす。散乱アルベドとは作用点で光が散乱する割合であり、この値が大きいほど光は媒質中で強く散乱する。0だと宝石や色ガラスのように透きとおった媒質となり、大きいと霧など濁った媒質となる。

■Origin
値の型: <実数> <実数> <実数>
デフォルト値: 0.0 0.0 0.0

 局所的で不均質なパーティシペイティングメディアの原点座標。パーティシペイティングメディアのバウンディングボックスの小さい方の点。

■Size
値の型: <実数> <実数> <実数>
デフォルト値: 0.0 0.0 0.0

 局所的で不均質なパーティシペイティングメディアのバウンディングボックスの大きさ(XYZ)。


Homogeneous Medium

Inhomogeneous Medium

PointLightチャンク

<例>

new Volume "vol"

  new PointLight "light0"
    Intensity 1.2 1.2 1.2
    Position  1.0 0.5 -1.0

  new PointLight "light1"
    Intensity 1.0 1.0 1.0 "spot.png"
    Position  0.2 0.75 -0.3
    X         0.95782626 -0.22987832  0.17240873
    Y         0.28734788  0.76626104 -0.57469577
    Z         0.00000000  0.60000000  0.80000000

 PointLightチャンクでは点光源の記述を行う。点光源とはある1点から光を放射する光源である。PointLightチャンクは以下のパラメータを持つ。パラメータを省略した場合は初期値が適用される。ここで設定した点光源は直前に記述されたVolumeチャンクに配置される。

■Intensity
値の型: <0以上の実数> <0以上の実数> <0以上の実数> "<画像ファイル名>"
デフォルト値: 1.0 1.0 1.0 ""

 点光源の放射強度。RGB値と画像ファイル名で指定する。画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込む。画像は縦軸を緯度、横軸を経度とし、Y軸を地軸、XZ平面を赤道として放射方向を表わす球面状にマッピングされる。画像をマッピングすることで走馬灯やスポットライトのような光源を作ることが出来る。

■Position
値の型: <実数> <実数> <実数>
デフォルト値: 0.0 0.0 0.0

 点光源のワールド座標系での位置。

■X
値の型: <実数> <実数> <実数>
デフォルト値: 1.0 0.0 0.0

 点光源のワールド座標系でのX軸ベクトル。回転等の変換で使う。

■Y
値の型: <実数> <実数> <実数>
デフォルト値: 0.0 1.0 0.0

 点光源のワールド座標系でのY軸ベクトル。回転等の変換で使う。

■Z
値の型: <実数> <実数> <実数>
デフォルト値: 0.0 0.0 1.0

 点光源のワールド座標系でのZ軸ベクトル。回転等の変換で使う。


ParallelLightチャンク

<例>

new Volume "vol"

  new ParallelLight "light0"
    Emission  0.5 0.5 1.0

  new ParallelLight "light1"
    Emission   1.0 1.0 1.0 "water.png"
    Direction -1.0 1.0 1.0
    Size       3.0

 ParallelLightチャンクでは平行光源の記述を行う。平行光源とはある方向に平行に光が降り注ぐ光源である。PointLightチャンクは以下のパラメータを持つ。パラメータの記述を省略した場合は初期値が適用される。ここで設定した並行光源は点光源と同様に直前に記述されたVolumeチャンクに配置される。

■Emission
値の型: <0以上の実数> <0以上の実数> <0以上の実数> "<画像ファイル名>"
デフォルト値: 1.0 1.0 1.0 ""

 光源の明るさ。RGB値と画像ファイル名でRGB値と画像ファイル名で指定する。画像ファイルが省略されていればRGB値がそのまま使われ、画像ファイルが指定してあればその画像にRGB値を乗算して読み込む。この値は放射発散度を円周率で割ったものである。

■Position
値の型: <実数> <実数> <実数>
デフォルト値: 0.0 0.0 0.0

 入射位置。光が降り注ぐ領域の中心座標。

■Direction
値の型: <実数> <実数> <実数>
デフォルト値: 1.0 1.0 1.0

 入射方向ベクトル。この方向の無限遠に光源が存在する。

■Upside
値の型: <実数> <実数> <実数>
デフォルト値: 0.0 1.0 0.0

 上方向ベクトル。この方向を基準に光源の上方向ベクトルが決まる。

■Size
値の型: <0より大きい実数>
デフォルト値: ∞

 入射領域の大きさ。画像をマッピングする場合は指定する必要がある。


Eyeチャンク

<例>

new Volume "vol"

  new Eye
    Position    0.0  0.3  0.0
    Focus       0.0  0.2 -0.6
    FocalLength 0.035
    FocalRatio  1.8
    Bokeh       1.0 1.0 1.0 "circle.png"

Eyeチャンクでは眼(カメラ)の記述を行う。Eyeチャンクは以下のパラメータを持つ。パラメータの記述を省略した場合は初期値が適用される。このチャンクが存在しない場合、Eyeは読み込んだモデルに応じて適当に作られる。ここで設定した眼は、並行光源や点光源と同様に直前に記述されたVolumeチャンクに配置される。

■Position
値の型: <実数> <実数> <実数>
デフォルト値: 0.0 0.0 0.0

 視点の座標(X, Y, Z)。

■Focus
値の型: <実数> <実数> <実数>
デフォルト値: 0.0 0.0 -∞

 注視点の座標(X, Y, Z)。被写界深度が有効な場合、この位置に焦点が合う。

■Upside
値の型: <実数> <実数> <実数>
デフォルト値: 0.0 1.0 0.0

 上方向ベクトル(X, Y, Z)。ここで指定した方向を基準にビューアの上方向が決まる。上方向ベクトルU、視点をP、注視点をQとすると、眼のローカル座標系の基底ベクトルex, ey, ezは以下の式で求まる。

ez = (P - Q) / ||P - Q||
ex = (U × ez) / ||U × ez||
ey = (ez × ex) / ||ez × ex||
 上記の式からわかるように、"Upside"で指定するベクトルは"Position"と"Focus"で結ばれる直線と異なる方向でなければならない。

■Clip
値の型: <実数>
デフォルト値: 0.0

 前方クリッピングを行う距離。視点からここで指定した距離以内の物体は無視する。負の値を指定した場合は視点後方の物体も描画され、その像は逆遠近となる。

■FilmSize
値の型: <0より大きい実数>
デフォルト値: 0.024

 投影面の縦の長さ。この値と"FocalLength"の比で画角が決定する。この値が大きいほど広角になり、小さいほど望遠になる。ただし画角の調整では主に"FocalLength"の方の値を変えることの方が一般的である。一般にカメラで使われる35mmフィルムの露光面の長さは24mmなので、0.024(単位系はメートルを仮定)をデフォルト値としている。

■FocalLength
値の型: <0より大きい実数>
デフォルト値: 0.050

 レンズの焦点距離。この値と"FilmSize"の比で画角が決定する。この値が大きいほど望遠になり、小さいほど広角になる。一般にカメラで使われているレンズの場合、35mmフィルム換算で標準レンズに50mmが使われることが多いようなので、0.050(単位系はメートルを仮定)をデフォルト値としている。

■FocalRatio
値の型: <0より大きい実数>
デフォルト値: +∞

 F値。この値によってレンズの口径が決定する。レンズの口径DとF値Fとの関係は、焦点距離fを用いて以下の式で与えられる。

F = f / D
 レンズの口径が大きいほど被写界深度のボケは大きくなる。従ってF値が小さいほどボケは大きくなる。この項目を省略した場合ピンホールカメラとなり、全てにピントがあったボケのないレンダリングを行う。
尚、実際のカメラではF値が小さいほど明るくなるが、vidroでは正規化されるので明るさは変わらない。

■Bokeh
値の型: <0以上の実数> <0以上の実数> <0以上の実数> "<画像ファイル名>"
デフォルト値: 1.0 1.0 1.0 ""


丸絞りの被写界深度

六角絞りの被写界深度

 ボケ像。RGB値と画像ファイル名で指定する。画像ファイルが指定してあればその画像にRGB値を乗算して読み込む。ボケ像に画像ファイルを指定することでvidroでは任意のボケ像を持った被写界深度のレンダリングを行うことができる。尚、画像ファイルが省略されていれば自動的に丸絞りになる。ピンホールカメラのときは、このパラメータは意味を持たない。

■Distortion
値の型: <実数>
デフォルト値: 1.0


Distortion 0.0
(Equidistant Projection)



Distortion:0.5
(Stereographic Projection)



Distortion 1.0
(Perspective Projection)



Distortion 1.5


Distortion 2.0

 歪曲。1より大きいと糸巻型に歪曲し、1より小さいと樽型に歪曲する。vidroでは眼の投影モデルに以下の式を置いている。

d > 0: r = f tan(dθ)/d
d = 0: r = f θ
d < 0: r = f sin(dθ)/d

ここでfは焦点距離、θは光軸に対する角度、rは投影面上の位置、そしてdはこのパラメータである。d=1.0で通常の透視投影(Perspective Projection)、d=0.5で立体射影(Stereographic Projection)、d=0.0で等距離射影(Equidistant Projection)、d=-0.5で等立体角射影(Equal Erea Projection)、d=-1.0で正射影(Orthographic Projection)となり、dが小さくなるほど魚眼の効果が強くなる。

■LensTilt
値の型: <-90°より大きく90°より小さい実数> <-90°より大きく90°より小さい実数>
デフォルト値: 0.0 0.0

 レンズの傾き。横方向の傾きと縦方向の傾きの角度を指定する。レンズを傾かせることで被写界深度が歪む。複数の深度の異なる物体にフォーカスを当てたい時、あるいは同じ深度の物体からフォーカスを外したい時に用いる。"Distortion"が1でないときは煽り効果も入る。

■FilmTilt
値の型: <-90°より大きく90°より小さい実数> <-90°より大きく90°より小さい実数>
デフォルト値: 0.0 0.0

 投影面の傾き。横方向の傾きと縦方向の傾きの角度を指定する。投影面を傾かせることで煽り効果を入れることができる。さらに被写界深度が有効ならば被写界深度も歪む。"LensTilt"と異なり、フォーカスの位置は画面中心からずれない。

■Oblique
値の型: <実数> <実数>
デフォルト値: 0.0 0.0


Cabinet Projection

 斜投影の強さ。横方向のと縦方向の強さを指定する。斜投影の角度をθ、奥行きの縮尺をαとするとき、横方向の強さX,縦方向の強さYは以下の式で表される。

X = αcosθ
Y = αsinθ

従って、例えばキャビネット投影法(θ=45°,α=0.5)を用いたい場合、
投影法のタイプを平行投影にし、以下のように記述する。

Oblique 0.353553391 0.353553391

また、キャバリエ投影法(θ=45°,α=1.0)の場合では、
投影法のタイプを平行投影にし、以下のように記述する。

Oblique 0.707106781 0.707106781

■Shift
値の型: <実数> <実数>
デフォルト値: 0.0 0.0

 画面の移動量。横方向の移動量と縦方向の画面の高さに対する移動量を指定する。1ならば1画面分の移動となる。透視投影のとき、この値を指定することで煽り効果を入れる事ができる。


Objectチャンク

<例>

new Space "spc"

  new Object "obj0"
    File     "bunny.obj"
    Material "MTL1"
    Position -0.8 0.0 0.0

  new Object "obj1"
    File     "happybuddha.obj"
    Material "MTL2"
    Position 1.2 0.0 0.0
    X        0.0 1.0 0.0
    Y        1.0 0.0 0.0
    Z        0.0 0.0 1.0

 ObjectチャンクではSpaceチャンクに含まれる物体の記述を行う。Objectチャンクは以下のパラメータを持つ。パラメータの記述を省略した場合は初期値が適用される。

■File
値の型: "<オブジェクトファイル名>"
デフォルト値: ""

 読み込むオブジェクトファイルの名前。読み込めるオブジェクトファイルはFBX, MQO, 3DS, LWO, OBJ, DXF, COLLADA形式。ファイル名は必ず指定する必要があり、省略できない。

■Material
値の型: "<マテリアル名>"
デフォルト値: 最初に定義されたマテリアルの名前

 このオブジェクトに割り当てるマテリアルのデフォルトの名前。オブジェクトファイルがマテリアルデータを持たない、あるいは無効なマテリアルだった場合にこのマテリアルが使われる。デフォルト値は最初に定義されたマテリアルの名前だが、ひとつもマテリアルが定義されていないなら拡散反射率0.5のマテリアルが使われる。

■Position
値の型: <実数> <実数> <実数>
デフォルト値: 0.0 0.0 0.0

 このオブジェクトのワールド座標系での位置。

■X
値の型: <実数> <実数> <実数>
デフォルト値: 1.0 0.0 0.0

 このオブジェクトのワールド座標系でのX軸のベクトル。拡大、縮小、回転等の変形に用いる。

■Y
値の型: <実数> <実数> <実数>
デフォルト値: 0.0 1.0 0.0

 このオブジェクトのワールド座標系でのY軸のベクトル。拡大、縮小、回転等の変形に用いる。

■Z
値の型: <実数> <実数> <実数>
デフォルト値: 0.0 0.0 1.0

 このオブジェクトのワールド座標系でのZ軸のベクトル。拡大、縮小、回転等の変形に用いる。

 実際には、X=(x0, x1, x2), Y=(y0, y1, y2), Z=(z0, z1, z2), Position=(p0, p1, p2)と置くと、オブジェクトファイル内の座標値は以下の変換行列でアフィン変換が行われる。

x0y0z0p0
x1y1z1p1
x2y2z2p2
0001