1/1

C API

RenderManの本,「実践CGの誘い」コンパニオンのサンプルをコンパイルしてみる。

3Delightだと,マイコンピュータの環境変数DELIGHTの箇所に
"C:\Program Files\3Delight"と,""でくくっておくこと。
再起動して,Visual Studio 2005のコマンドプロンプトから,

>cl /I%DELIGHT%/include %DELIGHT%/lib/3delight.lib listing2_1.c

すると,
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.

listing2_1.c
Microsoft (R) Incremental Linker Version 8.00.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.

/out:listing2_1.exe
"C:\Program Files\3Delight/lib/3delight.lib"
listing2_1.obj

後は,3Delightのライセンスサーバを起動しておいて,

>listing2_1.exe

TIFFが出力されました。
RMR
  • -
  • -

「実践CGの誘い」から

3DelightとVisual C++を使ってコンパイルしてみた。
RMRのソースファイルのmainにそれぞれのリストのサンプルをあわせてコンパイルした。勉強になります。
List2-2
2-2
List2-3
2-3
List2-4の色を変更
2-4
List2-5の色を変更
2-5
List2-7とList2-3を使ってインスタンスしている。
2-7
  • -
  • -

アニメーションの出力

サンプルを動かしてみる。エラーが出ましたが,実行して連番TIFFが出力されました。
C:\3Dlight6>cl /I%DELIGHT%/include %DELIGHT%/lib/3delight.lib anim2_8.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.

anim2_8.c
anim2_8.c(21) : warning C4996: 'sprintf' was declared deprecated
C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(345) : see
declaration of 'sprintf'
Message: 'This function or variable may be unsafe. Consider using sprint
f_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
anim2_8.c(82) : warning C4033: 'ColorCube' must return a value
c:\3dlight6\anim2_8.c(108) : warning C4716: 'ColorCube' : must return a value
Microsoft (R) Incremental Linker Version 8.00.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.

/out:anim2_8.exe
"C:\Program Files\3Delight/lib/3delight.lib"
anim2_8.obj

C:\3Dlight6>anim2_8.exe

良いですね。以下の10枚が出力されました。
anim.01.PNG
anim.02.PNG
anim.03.PNG
anim.04.PNG
anim.05.PNG
anim.06.PNG
anim.07.PNG
anim.08.PNG
anim.09.PNG
anim.10.PNG
  • -
  • -

2次曲面

Cのファイルが関数ごとに分割されてコンパイルする場合は,

>cl /I%DELIGHT%/include %DELIGHT%/lib/3delight.lib quadmain.c listing4_1.c

mainのファイルの後に続けて関数が入ったファイルを続ける。

Windowsの環境変数のなかのDELIGHTのパスに" "をつけると良いと,以前書いたが,フローティングサーバを起動している場合はライセンスエラーになることがわかった。
コンパイルする際に"%DELIGHT%"と" "で囲んであげると良いようだ。

RC本の第4章をコンパイルしてみた。

6種類の2次曲面。List4-1
quadsmain4-1.PNG

回転体。List4-2
quadsmain_pin.png

RiTorusで波形の模様を生成する。List4-3
wavemain.PNG
  • -
  • -

多角形

回転体によるポリゴンの作成。第5章。
RC本のリスト。うまくコンパイルできなくて悩んでいたら,misc.tarとch5.tarがあるではありませんか。Camera位置なども含めて,うまくコンパイルできました。ありがとうございます。先人の教え,勉強です。
それぞれのヘッダファイルを加えてコンパイルしました。

>cl /I%DELIGHT%/include %DELIGHT%/lib/3delight.lib main.c listing5_3.c listing8_2.c listing8_3.c

Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.

main.c
listing5_3.c
listing8_2.c
listing8_3.c
Generating Code...
c:\3dlight6\ch5\listing5_3.c(65) : warning C4716: 'PolySurfOR' : must return a value
c:\3dlight6\ch5\listing5_3.c(123) : warning C4716: 'PolyBoid' : must return a value
Microsoft (R) Incremental Linker Version 8.00.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.

/out:main.exe
"C:\Program Files\3Delight/lib/3delight.lib"
main.obj
listing5_3.obj
listing8_2.obj
listing8_3.obj

List5-1
listing5_1.PNG

List5-2
listing5_2.PNG
  • -
  • -

パラメトリック面,ジオメトリック変換と階層モデリング

RCの第6章と第7章のコンパイルを行いました。
7章のCSG作成では,以下のように行う。
>cl /I%DELIGHT%/include %DELIGHT%/lib/3delight.lib main.c surf_go.c listing8_2.c listing8_3.c

>cl /I%DELIGHT%/include %DELIGHT%/lib/3delight.lib main.c wedge_go.c listing8_2.c listing8_3.c

アルファチャンネルで抜けているがPNGにしたら,ちょっと青みがかっています。以下は,コンパイルしたリスト。

listing6_1
listing6_1.PNG
listing6_2
listing6_2.PNG
listing6_3
listing6_3.PNG
listing7_2
listing7_2.PNG
listing7_3
listing7_3.PNG
listing7_4
listing7_4.PNG
  • -
  • -

CAPIでパーティクル

Essential RenderManのパーティクルのサンプルをコンパイルしてみた。
Visual C++では,random()ではなくてrand()に書き換えたら,コンパイルできた。
>cl /I%DELIGHT%/include %DELIGHT%/lib/3delight.lib curves.c

RC本のサンプルのコンパイルでも,参照するヘッダファイルやリスト名を間違えないようにしないといけない。RCのサンプルのinclude先に間違いがあった。

point.PNG
color.PNG
curves.PNG
  • -
  • -

CAPIのアニメーションのRIB出力

3Delightで試してみた。RIBを出力するには,RiBegin(RI_NULL)のカッコ部分に出力するRIB名を書き込んでおいてコンパイルすればよい。

http://www.not-enough.org/abe/manual/renderman/animation.html
サンプルファイルをコンパイルしてみる。
-------------------------------------------
#include

main()
{
int frame;
char filename[128];
RtColor color = {0.8, 0.0, 0.0};

RiBegin("anim_test.rib");
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();
}
-----------------------------------------
1. anim_test.cで保存。
2. コンパイル
  >cl /I%DELIGHT%/include %DELIGHT%/lib/3delight.lib anim_test.c
3. RIBファイルの出力
  >anim_test.exe 続きを読む>>
  • -
  • -

The DynamicLoad Procedural Primitive

DSOを作成してみた。
3Delightマニュアルのsponge.cをコンパイルしてみる。

>CL /Ox /DWIN32 /LD /I%DELIGHT%/include sponge.c %DELIGHT%/lib/3D
elight.lib

sponge.dllができる。

以下,sponge.ribとして作成。
Display "sponge2.tiff" "file" "rgb"
Format 320 240 -1
ShadingRate 1
Projection "perspective"
Translate 0 -2.5 2.5
Rotate -10 1 0 0
Rotate -40 0 1 0
WorldBegin
TransformBegin
Translate 0 2 0.5
Procedural "DynamicLoad" ["sponge" "3"] [-1 1 -1 1 -1 1]
TransformEnd
WorldEnd

sponge.PNG

sponge2.PNG



>renderdl sponge.ribでできあがり。 続きを読む>>
  • -
  • -

1/1