BMRT(RenderMan)でアニメーションを作るには、RiFrameBegin()で始まり、RiFrameEnd()で終るフレームブロックの内部にフレームごとの処理を記述しておく。
フレームブロックはネストできない。
簡単なアニメーションのプログラム。
#include <ri.h>
main()
{
int frame;
char filename[128];
RtColor color = {0.8, 0.0, 0.0};
RiBegin(RI_NULL);
for(frame = 1; frame <= 10; frame++)
{
RiFrameBegin(frame);
sprintf(filename, "sphere%d.tif", frame);
RiDisplay(filename, RI_FILE, RI_RGBA, RI_NULL);
RiWorldBegin();
RiColor(color);
RiTranslate(frame*0.1 - 0.5, 0.0, 0.0);
RiSphere(1.0, -1.0, 1.0, 360.0, RI_NULL);
RiWorldEnd();
RiFrameEnd();
}
RiEnd();
}
#include <ri.h>
インクルードファイルとしてri.hを指定する。
RiBegin(RI_NULL);
RenderManインターフェースの初期化。
RiDisplay(filename, RI_FILE, RI_RGBA, RI_NULL);
filenameというファイルに画像を出力する。
RiWorldBegin();
シーンの開始。
RiColor(color);
色をcolor ({0.8, 0.0, 0.0}) にする。
RiTranslate(frame*0.1 - 0.5, 0.0, 0.0);
X座標をframe*0.1づつ移動する。
RiSphere(1.0, -1.0, 1.0, 360.0, RI_NULL);
球の定義。
RiWorldEnd();
シーンの終り。
RiEnd();
最後に必ず呼び出す。