MRenderUtil::raytrace

前の作業を見直してたら理解が進んだから、忘れる前にメモしておくよ。

PhongShaderのサンプルに載ってた関数についてのメモ。
MRenderUtil::raytrace(shaderからraytraceを扱うための関数)

static MStatus	raytrace(
const MFloatVector& rayOrigin,  // in camera space
const MFloatVector& rayDirection,
const void* objectId,
const void* raySampler,
const short rayDepth,
// storage for return value
MFloatVector& resultColor,
MFloatVector& resultTransparency,
// true for reflected rays, false for refracted rays
const bool isReflectedRays = true
);

パラメータ:

[in] rayOrigin カメラ空間でのレイの始点座標

[in] rayDirection カメラ空間での飛ばすレイの方向

[in] objectID 現在のオブジェクトのID(未使用変数扱いされてたりもする?)

[in] raySampler レンダラから取得するレイトレーサーへのポインタ

[in] rayDepth レンダラから取得するこのレイの深さ(回数)

[in] resultColor 取得する色を格納する参照

[in] resultTransparency 取得する透明度を格納する参照

[in] isReflectedRays trueなら反射レイ(デフォルト)、falseなら屈折レイ

ということで、このサンプルサイトにある説明を訳してみた。

このユーティリティメソッドは、シェーダプラグインからレイトレースを行うための機能を提供します。

このメソッドは、レイの始点と方向を指定すると、単一のレイを飛ばし、交差点の色と透明度を返します。

シェーダープラグインでレイトレースを行うには以下の手順が必要です。:

レンダラにあるraySamplerを使います。これは’raySampler’ (rtr)という名前のinputアトリビュートを作成することで値を取得できます。

レンダラにあるrayDepthを使います。こちらは’rayDepth’ (rd)という名前のinputアトリビュートを作成することで値を取得できます。

Mayaソフトウェアレンダラ設定のrenderGlobal-> renderQuality->raytracingで”Enable Raytracing”のフラグをONにしておきます。

isReflectedRaysというBoolean変数は、飛ばすレイが反射レイか屈折レイかを示すものです。この変数はユーザーがrenderGlobal->renderQualityで設定した反射・屈折回数の制限をレイトレーサーに伝えるためのものです。

オブジェクトをレイトレースの対象とするには、”Visible In Reflections”または”Visible In Refraction”フラグがONに設定されている必要があります。

このメソッドは、Mayaソフトウェアレンダラでのみ動作します。

 

以上、Google翻訳頼りの翻訳でした。

関連記事

DensePose:画像中の人物表面のUV座標を推定する

ラクガキの立体化 反省

画像生成AI Stable Diffusionで遊ぶ

OpenMVSのサンプルを動かしてみる

Unreal Engineの薄い本

OpenCV 3.1のsfmモジュールを試す

ZBrushでアヴァン・ガメラを作ってみる 甲羅の修正・脚の...

ゴジラ三昧

日本でMakersは普及するだろうか?

Autodesk CompositeとAutodesk Ma...

『PIXARのひみつ展』に行ってきた

オープンソースの物理ベースレンダラ『Mitsuba』をMay...

ラクガキの立体化 3Dプリント注文

Physically Based Rendering

iPhone 3GSがますます欲しくなる動画

フィーリングに基づくタマムシの質感表現

Unityの薄い本

OpenCVの超解像(SuperResolution)モジュ...

CEDEC 3日目

ZBrushでアヴァン・ガメラを作ってみる 全体のバランス調...

ZBrushのハードサーフェイス用ブラシ

Polyscope:3Dデータ操作用GUIライブラリ

OpenCVでiPhone6sのカメラをキャリブレーションす...

Kaolin:3Dディープラーニング用のPyTorchライブ...

adskShaderSDK

ZBrushでアヴァン・ガメラを作ってみる 口内の微調整・身...

Photoshopで作る怪獣特撮チュートリアル

レンダラ制作はOpenGL とか DirectX を使わなく...

フリーで使えるスカルプト系モデリングツール『Sculptri...

After Effects全エフェクトの解説(6.5)

書籍『3次元コンピュータビジョン計算ハンドブック』を購入

Subsurface scatteringの動画

ヒーローに変身なりきりアーケードゲーム『ナレルンダー』

ZBrushの作業環境を見直す

書籍『ROSプログラミング』

ZBrushでアヴァン・ガメラを作ってみる 口のバランス調整

ZBrush 2018での作業環境を整える

Human Generator:Blenderの人体生成アド...

NeRF (Neural Radiance Fields):...

OpenMVS:Multi-View Stereoによる3次...

SVM (Support Vector Machine)

オープンソースの物理ベースGIレンダラ『appleseed』

コメント