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翻訳頼りの翻訳でした。

関連記事

Alice Vision:オープンソースのPhotogrammetryフレームワーク

粘土をこねるようなスカルプトモデリング

ZBrushでUndo Historyを動画に書き出す

OpenGVのライブラリ構成

clearcoat Shader

OpenMesh:オープンソースの3Dメッシュデータライブラリ

参考になりそうなサイト

OpenCVで顔のランドマークを検出する『Facemark API』

映画『ジュラシック・ワールド』のVFXメイキング

ZBrushでアヴァン・ガメラを作ってみる 壊れたデータの救出

Javaで作られたオープンソースの3DCGレンダラ『Sunflow』

この連休でZBrushの スキルアップを…

オープンソースのテクスチャマッピングシステム『Ptex』

ZBrushで仮面ライダー3号を造る 仮面編 PolyGroupを分割する

MetaHumanの頭部をBlenderで編集できるアドオン

Kubric:機械学習用アノテーション付き動画生成パイプライン

布地のシワの法則性

Pix2Pix:CGANによる画像変換

法線マップを用意してCanvas上でShadingするサンプル

ZBrush 2018へのアップグレード

Physics Forests:機械学習で流体シミュレーションを近似する

BlenderのRigifyでリギング

UnityでTweenアニメーションを実装できる3種類の無料Asset

Zibra Liquids:Unity向け流体シミュレーションプラグイン

Oculus Goを購入!

『ローグ・ワン/スター・ウォーズ・ストーリー』"あのキャラクター"のメイキング

参考書

Shader.jp:リアルタイム3DCG技術をあつかうサイト

Subsurface scatteringの動画

TensorFlowでCGを微分できる『TensorFlow Graphics』

SIGGRAPH Asia

JavaによるCGプログラミング入門サイト (日本語)

プログラムによる景観の自動生成

Russian3DScannerのトポロジー転送ツール『WrapX』

ZBrushでアヴァン・ガメラを作ってみる 脚のトゲの作り直し

Google Earth用の建物を簡単に作れるツール Google Building Maker 公...

Maya には3 種類のシェーダSDKがある?

ZScript

書籍『The Art of Mystical Beasts』を購入

ZBrushで仮面ライダー3号を造る 仮面編 ZRemesher

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

MFnDataとMFnAttribute

コメント