インストール

レンダラのインストール方法、起動方法

インストール

ここでは、配布されているバイナリを用いてLightmetricaをインストールする方法について解説します。 開発者向けの方法として、他にもソースからビルドする方法もあります。

動作環境

Note
レンダリングは並列化しやすい計算で、CPUの計算リソースを多く使用します。 本実装でもほとんどのレンダラは並列化を行っており、多くのコア数を持ったCPUで効率よくレンダリングを行うことができます。よって、マルチコアCPUの仕様をお勧めいたします。 一方でメモリ消費はシーンファイルの複雑さに依存します。

ダウンロードと起動

メニューバーのDownloadをクリックし、使用されているOSにあった配布版を選択します。 ダウンロードが完了しましたら、ファイルを展開します。 展開後のファイルにはlightmetricaという名前の実行ファイルが含まれており、 その他シーンファイルやプラグイン開発に必要なファイルが含まれています。

次にコンソールを開き(Windowsではコマンドプロンプト)、展開したディレクトリに移動します。 lightmetricaを実行すると、次のようなメッセージが表示されます。 以上でセットアップは完了です。

Usage: lightmetrica [subcommand] [options]

Welcome to Lightmetrica!

Lightmetrica: A modern, research-oriented renderer
Documentation: http://lightmetrica.org/doc

Subcommands:

- lightmetrica help
  Print global help message (this message).

- lightmetrica render
  Render the image.
  `lightmetrica render --help` for more detailed help.

Note
Lightmetricaをアンインストールするには、展開したディレクトリを削除してください。

オプション

はじめのメッセージに表示された通り、 lightmetrica render --helpコマンドを実行すると次のようなメッセージが表示されます。

Usage: lightmetrica render [options]
Options:
  --help                        Display help message (this message)
  -s [ --scene ] arg            Scene configuration file
  -o [ --output ] arg (=result) Output image
  -v [ --verbose ]              Adds detailed information on the output

レンダラのオプションはシンプルであり、 -s または --scene オプションはシーンファイルへのパスを指定します。 -o または --output オプションは出力される画像ファイル名を指定します。 ただし、画像ファイルの拡張子は指定する必要がありません。例: some_result.hdrではなくsome_result。 デバッグメッセージを有効にするには、-v または --verbose オプションを指定します。

シーンのレンダリング

An example scene

An example scene

配布版にはexampleディレクトリ内にいくつかのシーン例が含まれています。 その中のひとつのシーンをレンダリングしてみましょう。

まずは実行ファイルlightmetricaが存在するディレクトリ (配布版を展開したディレクトリ)に移動します。 以下のコマンドを実行することによってresult.hdrファイルが出力されます。

./lightmetrica render -s ./examples/001/scene.yml

コマンドが示すように、シーンファイルは-sオプションで指定する必要があります。 また、出力されるファイル名は-oオプションで変更できます。 このシーンはRadiance HDR format で画像を生成します。 .hdrファイルを開くには、たとえばこのソフトウェアを使用することができます。 正しくレンダリングできたならば、右図の画像が生成されます。

ログメッセージの読み方

レンダラから出力されるログメッセージの設計にあたって、我々はできるだけ読みやすい設計を心がけました。 ここではログメッセージの読み方について解説します。 ログメッセージは次のようなメッセージから始まります。

| INFO  0.001 |
| INFO  0.002 | Lightmetrica
| INFO  0.004 |
| INFO  0.005 | A modern, research-oriented renderer
...

出力されるメッセージはすべて同じフォーマットによって整形されます。 |で区切られている最初の列はメッセージの種類と、そのメッセージが生成された時間を示します。

-vオプションを有効にすると、 デバッグに有効な情報を含む追加の列が表示されます。

| TYPE  TIME  | FILENAME  | LINE  | TID |
| INFO  0.003 | main.cpp~ | @ 402 | # 0 |
| INFO  0.005 | main.cpp~ | @ 402 | # 0 | Lightmetrica
| INFO  0.008 | main.cpp~ | @ 402 | # 0 |
| INFO  0.011 | main.cpp~ | @ 402 | # 0 | A modern, research-oriented renderer
...

FILENAMEはメッセージが生成されたソースファイルを示し、 LINEはその行数を示します。 TIDはメッセージが生成されたスレッドのIDを示します。 メインスレッドは0であり、その他のスレッドIDは実行ごとに変化します。

メッセージの種類は4種類あり、 重要度によって以下のように色分けされています。

Type Meaning Color Description
INFO 情報 レンダリングのプロセスを表示するためのメッセージに用いられます. この種のメッセージをよく調べることで、エラーが出たときの原因を調査するのに役立ちます.
WARN 警告 何か意図しない処理が発生したときに表示されますが、レンダラの実行には影響を与えません。
ERROR エラー エラーの発生を示すます。多くの場合、レンダラの実行は停止されます。
DEBUG デバッグ デバッグのためのメッセージです。無視してかまいません。

examples/001/scene.yml中の一文字をあえて変更してみて、どのようなメッセージが表示されるか見てみましょう。 sensor_1から変更されたsensor_2は未定義であり、何かのエラーが表示されるはずです。

…
nodes:
  - id: n1
    sensor: sensor_2  # sensor_1から変更
    transform:
    …

lightmetrica render ./example/001/scene.yml コマンドを実行すると次のようなメッセージ(一部抜粋)が生成されます。

| INFO  0.152 | ............ Loading asset 'sensor_2'
| ERROR 0.156 | ................ Missing 'sensor_2' node
| ERROR 0.162 | ................ See around line 5 @ scene.yml
| ERROR 0.166 | ................    3 |
| ERROR 0.169 | ................    4 |   assets:
| ERROR 0.174 | ................    5*|     sensor_1:
| ERROR 0.183 | ................    6 |       interface: sensor
| ERROR 0.191 | ................    7 |       type: pinhole
| ERROR 0.197 | ............ Failed to create emitter
| ERROR 0.202 | ............ See around line 84 @ scene.yml
| ERROR 0.206 | ............   82 |     nodes:
| ERROR 0.210 | ............   83 |       - id: n1
| ERROR 0.214 | ............   84*|         sensor: sensor_2
| ERROR 0.218 | ............   85 |         transform:
| ERROR 0.222 | ............   86 |           lookat:

このメッセージからいくつかチェックすべき項目がわかります。

  • Missing 'sensor_2' nodesensor_2の定義がないということを示しています。メッセージによると、アセットの定義(5行目)を確認するようにと提案しています。
  • Failed to create emitterはセンサーの生成に失敗したということを示しており、メッセージによるとsensor_2への参照をチェックするようにと提案しています(84行目)。

今回の場合が後者のケースが正しい提案となり、 sensor_2sensor_1に修正することでエラーが修正できます。 この例ではエラーメッセージが表示された場合の原因の調査手順を示しました。 この例が示すように、ログメッセージはシーンファイルのエラーを調査するために非常に役立ちます。