リリース日: 2018/4/9
Alembic Packed PrimitiveをHtoAに追加されたメジャーリリースとなります。また、OptixやNoice(Arnold Denoiser)、アダプティブサンプリング、パラメーターオーバーライドのためのオペレータ、トゥーンシェーダー、レイヤーシェーダーなどを含む新しいArnold 5.1 coreの紹介となります。
■互換性
本リリースでは、Arnold 5.1.0.0とOpenVDB 4.0.0が使用されています。
Houdini、Houdini FX、Houdini Indie、Houdini Educationのプロダクションビルドで使用可能なバイナリは以下になります。
下記のプラットフォームに対応しています。
- Linux x86_64 (gcc4.8)
- Windows 7 x64 (vc14)
- Mac OS X 10.8+ (clang7.3)
なお、Houdini Apprenticeはサードパーティのレンダラをサポートしていないため、HtoAを実行することはできませんので、ご注意下さい。
■機能強化
Alembic Packed Primitive:
新しいalembic プロシージャルを使用したalembic packed primitiveのサポート(htoa#591)
Non-Photorealistic Rendering:
輪郭(Contour)フィルタとトゥーンシェーダの組み合わせによる、非フォトリアリスティックレンダリング(NPR)のソリューションが提供されています。輪郭(Contour)フィルタは、トゥーンシェーダーによって提供される情報を使用して輪郭線を描画します。また、反射または屈折したオブジェクトに対しても機能します。Toonシェーダーを使用して、セルアニメーションの外観を表現できます。例えば、edge_width_scaleパラメーターを使用して線幅を変更する、プロシージャルテクスチャをmask_colorに接続する、またはStylized Highlightを使用するなどすることにより、さまざまな興味深い効果を得ることができます。(core#5591, core#6848)
Adaptive sampling:
Arnoldは、enable_adaptive_sampling のレンダリングオプションを有効にしているときに、各ピクセルのサンプリングレートを適応させる機能を備えており、より大きなバリエーションを示すピクセルに、より多くのカメラサンプルを割り当てることができます。(したがってレンダリング時間も長くなります。) この機能を有効にすると、すべてのピクセルが少なくとも AA_samples 以上 AA_samples_max 以下のサンプリングレートを受け入れます。アダプティブサンプラーのノイズに対する感度は、AA_adaptive_threshold のレンダリングオプションで制御できます。ここで、thresholdの値が低いほど、より多くのピクセルに高いサンプリングレートが適用されます。-asmax コマンドラインオプションがkickに追加されています。(core#3165, core#6090, core#6686, core#6883)
Denoiser (noise):
noiceというスタンドアロンのポストプロセスデノイザーの実行ファイルがArnoldにバンドルされました。これは、複数フレームと複数のlight AOVを考慮した高品質のデノイズになります。すべてのAOVについての分散情報を必要とし、オプションとして、Normal、Depthおよびアルベドの情報を使用します。
Denoiser (OptiX):
高速で、GPU対応のNvidia OptiX AI Denoiserは、現在、denoise_optix_filter としてArnoldで利用可能です。(core#6513) このフィルターは浮動小数点数で、デノイズしたピクセル値とオリジナルのピクセル値を線形補間を制御する1つのブレンドパラメーターです。他のフィルターと同様に出力して適用することが出来ますが、下記の制限があります。
- フィルターは、適用される各出力に対して一意でなければなりません。 これは、適用したい出力ごとに新しいOptiXノイズフィルタを作成する必要があることを意味します。
- フィルターはシングルチャンネルのEXR画像でのみ機能します。
- OptiX denoise filterが適用された出力は、ドライバによって出力されずに出力されます。 OptiX denoiserがフルフレーム画像に対して動作すると、そのフルフレームがデノイズされた出力のみのバケットデータの提供を完了した後、driver_prepare_bucketおよびdriver_process_bucketが再度呼び出されます。
- OptiX denoiseフィルタを使用する場合と使用しない場合とで同じAOVをレンダリングする場合は、AOVの名前の競合を避けるための機能を追加しました。サフィックス_denoiseをAOVの名前の末尾に追加すると、フィルタは元のAOVから名前を取得します。たとえば、RGBA AOVにOptiX denoise フィルタを適用したいが、すでにRGBA AOVが出力に追加されている場合は、RGBA_denoiseという名前のAOVを追加し、OptiX denoise フィルタはRGBA AOVを入力として使用します。
Alembic procedural:
Alembicファイル(.abc)を読むことができるalembicと呼ばれるプロシージャルノードが追加されました。これは、デフォルトではArnold Coreパッケージの "plugins"ディレクトリにある外部ダイナミックライブラリにあります。(core#6547)
Automatic loading of plugins from Arnold installation:
Arnoldは、Arnold coreの共有ライブラリがインストールされている場所から相対的にディレクトリ "../plugins"を探し、その場所からプロシージャル、シェーダなどを自動的に読み込みます。これは、新しく導入されたAlembic Proceduralのデフォルトの場所でもあります。(core#6808)
Operators:
演算子は、プロシージャルに生成されたノード上の遅延バインディングや遅延オーバーライドを含む、オブジェクト単位(ノード)のパラメータ割り当てとオーバーライドを実行する新しいノード型です。演算子は、ノードを作成し、一般的なシーンの検査と修正を実行することもできます。演算子は、AiOpSetTarget(node)またはkick -op node_name を使用して設定された、指定されたターゲット演算子から評価されるグラフで連鎖させることができます。 シーン内には複数の切断された演算子グラフが存在することがあり、ターゲット演算子に接続されたグラフのみがレンダリングのために評価されます。options.ignore_operatorsをtrueに設定するか、kick -iops を使用すると、演算子は無効となります。演算子の中には、ワイルドカード式を使用して、どのノードがオペレータによって処理されるかを決定する選択パラメータがあります。 materialx、set_parameter、disable、collection、switch_operator、およびset_transformの一連の演算子ノードが使用可能になりました。 (core#6209, core#6210, core#6530, core#6606, core#6662, core#6699, core#6676, core#6700, core#6701, core#6878)
More efficient texture mapping:
不透明マスク、skydome_lights、特定の種類の鏡面反射、拡散光など、特定のタイプのテクスチャルックアップのパフォーマンスが最適化されています。(core#6387, core#6391, core#6480, core#6603)
Faster scene initialization:
シーンの初期化と更新は、デフォルトで並行して実行されるため、はるかに高速になります。シーンの初期化コードをより安定させる複数のスレッドの問題が修正されました。最後に、プロシージャの内容は、残りのノードと並行して非同期的に初期化され、使用可能なすべてのスレッドをフルに活用します。カスタムプロシージャルを含むスレッドセーフではないシーン構築テクニックに干渉する場合、options.parallel_node_initをfalseに設定すると、パラレル初期化を手動で無効にすることができます。 (core#5724, core#5406, core#6744)
Difference filter:
AOV分散を測定するための補助diff_filterが追加されました。(core#6462)
EXR metadata for AOVs:
出力AOVを説明するための追加のメタデータタグ(filter, filter width, LPE, original AOV source) が追加されました。(core#6461)
Matte shader opacity:
マットシェーダーは不透明パラメータを取得しているため、組み込みのマットオブジェクトパラメータが行うのと同じ方法で透明性を確保できます。(core#6415)
Per-lightgroup shadow mattes:
shadow_matteシェーダーには新しいaov_groupパラメーターがあり、このパラメーター有効にすると、aov設定に一致するライトのみにセンシティブになります。(core#6609)
Trace sets in ambient occlusion shader:
ambient_occlusionシェーダーはtrace_setパラメーターをサポートしており、どのオブジェクトが含まれるかまたは除外されるかを指定するようになりました。(core#6602)
extra_samples in hair shader:
standard_hairシェーダはextra_samplesパラメータをサポートし、シェーダ単位で追加のGIサンプルを使用できるようになりました。(core#6443)
Improved uniformity in hair shader:
従来のヘアシェーダーのように、standard_hairシェーダーは、ストランドの断面にわたって一様な結果を表示し、サンプリングノイズを減らすことができます。(core#6444)
image tile tags optional offset:
イメージシェーダーのファイル名の<tile>タグは、ハードコーディングされているのではなく、オプションのタイルオフセットを受け入れるようになりました。例えば、<tile:0>が可能になっています。(core#6429)
New wrap mode in image shader:
既存のblackラップモードと同様に、テクスチャの外側にあるイメージシェーダーへのルックアップでmissing_texture_color が使用されるラッピングモードがありません。(core#6430)
ID AOVs in standard_surface and standard_hair:
standard_surfaceとstandard_hairシェーダはID AOVをサポートするようになりました。これらはマットを作成するのに便利です。(core#6693)
Face mode option in color_jitter:
新しいface_modeオプションでは、三角形だけでなく四角形ごとに色をランダム化することができます。(core#6495)
Reference positions from rgb/rgba array:
プロシージャルテクスチャシェーダー(noise, flakes triplanar, car_paint)は、ベクトル配列と同様に、rgbまたはrgba配列から参照位置(Pref)を読み取ることができます。(core#6729)
Arbitrary name for reference positions:
ユーザーはnoiseなどのプロシージャルテクスチャシェーダーで参照位置のユーザデータ配列の名前を指定できるようになりました。以前は、名前は "Pref"としてハードコードされていましたもので、これはまだデフォルトです。(core#6709)
New AOV-write shader:
既存のrgb値、float値、およびint値の変化を補完するaov_write_rgba シェーダーが追加されました。(core#6639)
Layer shaders:
新たに追加されたlayer_floatシェーダーとlayer_shaderシェーダーを使用して、それぞれ浮動小数値とクロージャを混合することができます。layer_rgbaはテクスチャを合成できます。これらのシェーダーのレイヤーの最大数は8に制限されています。(core#6549)
normal parameter in passthrough shader:
passthroughシェーダーには、接続されているシェーダのネットワーク全体に影響するノーマルまたはバンプマップの割り当てを可能にするnormalのパラメータが追加されました。(core#6435)
Self-intersection detection in OSL trace:
OSLシェーダーは、 "hitself"トレースメッセージを使ってプローブレイの自己交差状態をより簡単に検査できるようになりました。getmessage( "trace"、 "hitself"、hit);この関数は、レイが同じオブジェクトと交差するかどうかに応じてhit変数に1または0を割り当てます。 (core#6326)
Oren-Nayar transmission in OSL:
裏向きのOren-Nayarシェーディング効果に基づくOSLの半透明クロージャに、oren_nayarクロージャと同様の方法で表面粗さを示す第2パラメータを入力することができます。(core#6424)
ginstance can override step size:
ginstanceノードは、ポイント、ポリメッシュ、キューブ、球などのボリュームコンテナのstep_sizeパラメータをオーバーライドできるようになりました。 これにより、たとえば、ボリュームシェイプのインスタンスをサーフェスとしてシェーディングすることができます(インスタンスのステップサイズをゼロに設定し、不透明にし、サーフェスシェーダを使用する)。(core#6627)
Less confusing stack traces:
Arnoldは、コールスタックでAiShaderGlobalsEdgeLengthまたはAiCreateAtStringData_privateを誤解させるように出力することがありました。 これらの関数は表示されなくなります。(core#6439)
Structured statistics:
既存の.jsonファイルに追加または上書きする各レンダリングパスの最後に、Render StatisticsをJSONファイルに出力できるようになりました。 これは、人間が消費するためのログ内のロウテキストの統計を解析するのではなく、ツールが検査する方がずっと簡単です。(core#6108)
Better time statistics:
ノードとカテゴリの両方で編成された追加のタイミング統計が出力されます。これにより、レンダリングコストが最も高いオブジェクトと、レンダラーのどの部分が最も多くの時間を費やしたのかを知ることができます。レンダリングのパフォーマンスに関する詳細情報は、AiProfileSetFileName("my_profile.json") または kick -profile "my_profile.json" を呼び出してJSON形式のファイル(my_profile.jsonなど)に出力し、GoogleのChrome ウェブブラウザ "chrome://tracing/" で視覚化することができます。(core#5106)
Frame and fps global options:
現在のフレームと1秒あたりのフレーム数の属性がoptions.frameとoptions.fpsとしてオプションに追加されました。この情報は、EXRメタデータとしてレンダリングされたイメージにもエクスポートされます。 (core#6474)
lmutil:
lmutilというライセンスツールは、特定の FlexNet/AdLM/Clicのライセンス問題を診断し解決するために使用でき、Arnoldのコアパッケージに含まれています。(core#6528)
Progressive refinement (EXPERIMENTAL):
複数のパスでレンダー呼び出しを完了する新しいレンダリングモードがArnoldに追加されました。 各中間パスの間に、ファイルに出力しないドライバは、各タイルが完了した後に呼び出され、ディスプレイドライバは最終的なAAサンプル設定でノイズが次第に収束する結果を表示することができます。このモードはenable_progressive_render レンダリングオプションで有効にすることができます(デフォルト:false)。現在の最適化されていない状態では、最終的なパスがフィルタリングするのに非常に時間がかかるので、このモードは高AAサンプルでのバッチ描画にはお勧めできません。これは今後のアップデートで取り上げられます。(core#6146)
■修正
- 裏面の法線のstrengthパラメーターを使用する際のノーマルマップの問題の修正(core#6734)
- 参照位置はtriplanarでは機能しません(core#6264)
- 間接ノードの使用のクリーンアップ(core#6302)
- car_paintの小さなバグ修正 (core#6396)
- ランダムウォークSSSのZero-Rudius問題(core#6402)
- NURBSとポリゴンメッシュ共通パラメータがコピーされない(core#6576)
- parallel_node_initで競合状態を引き起こしていたプロシージャルの名前のスコープのバグを修正しました(core#6730)
- オーバーライドでの競合状態を修正しました(core#6731)
- parallel_node_init を使用している場合、プロシージャルに含まれるライトの変換の不具合を修正しました(core#6732)
- ポリメッシュベースのボリュームで交差するオブジェクトのアーティファクト(core#6736)
- ノード名操作コードの競合条件を修正しました(core#6741)
- <attr>タグはインデックス付きで、デフォルト値はクラッシュしません(core#6752)
- ヘアのBCSDFで bsdf_merge が不足したままでの実装(core#6756)
- Python AtArrayのgetとsetの関数が引数不足によるエラー時にクラッシュする(core#6766)
- AiNodeLookUpByName()およびAiNode()が非プロシージャルのParentでクラッシュする(core#6777)
- 正しい型を返さないai_matrix.pyの Point および Vector 関数 (core#6799)
- Zinke BCSDFのNaN(core#6810)
- 高解像度の不透明マスクには時には正しくない領域があります(core#6837)
- kick -ar (アスペクト比)が壊れている(core#6652)
- AiMakeTx()がシングルチャンネル入力とDWAA圧縮で失敗する(core#6872)
- 名前のないノードがランダムでクラッシュする問題を修正しました(core#6738)
- kick -ipr でデフォルト値が動作しない(core#6791)
なお、こちらのリリースノートは下記ページを翻訳したものになります。
https://support.solidangle.com/display/A5AFHUG/HtoA+3.0.0