カテゴリー別アーカイブ: 新機能

Houdini17 VOP&VEX(新規・改良編)

 Houdini17.0から追加された新規ノード、VEX関数と、16.5から改良されたノードをそれぞれご紹介しています。

 各ノード/VEX関数はSideFX社のドキュメントにリンクしているため、ノード/VEX関数のタイトルをクリックするとSideFX社のドキュメントにアクセスすることが出来ます。改良されたノードは、画像で比較出来るように16.5と17.0の両方を掲載しています(2018年10月11日 現在)。

 

 本題に入ります前に、VOPとVEXについて、基本的な部分からご紹介いたします。既にご理解されている方は読み飛ばして頂ければと思います。まず前提として、Houdini17.0には内部で使用できるプログラミング言語が3種類あります。

 ひとつはPythonです。これはHoudini以外でも使われる汎用的なプログラミング言語であり、Houdiniソフトウェア自体もPythonで作成されております。CG業界以外でも広く利用されていることから、活用の幅という意味では今回紹介する中では一番大きい言語です。Houdini内のパラメータの制御から、外部ツールとの連携、新しいツールの作成、パイプラインの構築など、ほぼすべてのソフトウェア的問題にマルチに対応できます。しかし、Pythonは一般的にプログラマやシステムエンジニアが使うことを想定しているので、CG業界のアーティストには少し敷居が高いかもしれません。

 次に紹介するのがHscriptです。こちらはHoudini内のパラメータ制御等、Houdiniの内部でのみ利用できるHoudini独自のプログラミング言語となっております。Houdiniユーザー向けに作られた言語ですので、Pythonより扱いやすいような設計がされています。しかし、Houdiniの内部、それも限定された箇所での利用しかできないこと、最近は後述するVEXの利用がトレンドになりつつあることから、最近の使用率としては減少傾向にあるのではないでしょうか。

 最後にVEXです。VEXは元々Houdiniにおけるシェーダ開発用言語として開発されたもので、C系列の言語がベースとなっております。特徴としては並列計算に特化しており、処理内容によってはPythonより早く、C++と同速程度まで高速に処理を行うことができる言語です。この特徴から、現在ではシェーダ内に留まらず、SOPやDOPにおいても利用するのが一般的という傾向にあります。

 またSOPにおいてはWragngleノードを利用することでジオメトリやアトリビュートをVEXによって操作することが可能です。WrangleノードとはVEXコードを記述できる空間を持ったノードであり、このノード内にVEXコードを記述することで数式を用いてアトリビュートの値を変更したり、新しいアトリビュートを作成したり、指定したポイントやプリミティブを削除したり、様々なことを行うことができます。

 

 また、VOPというものも存在します。これは簡単に説明すればVEXを可視化したもので、VOPネットワーク内でVEXを視覚的にノードを使って構成することができる、というものになります。コードをノードとして表示するラッパーのようなものであり、これによってコード記述の経験がないアーティストでもノードを利用したアプローチで間接的にVEXを記述できるようになっています。

 HoudiniのVOPとVEXの関係性につきましては、基本的にはVEXありきと考えるのが良いでしょう。VEXというプログラミング言語を視覚的にラッパーし、アーティストにわかりやすい形でノード化したものがVOPになります。

 VEXをある程度理解していれば、VOPの機能は全てVEXで記述することは可能ですが、VOPとVEXは必ずしも全ての場合において対となるものではありません。VEXの関数にはVOPノードとしてラッパーされてないものもありますし、逆にVOPノードが単一のVEX関数をラッパーしたものではなく、複数の関数を含む処理をまとめてラッピングしている場合もあります。

 また、全く同じ処理であっても、VEXで簡潔に記述できてもVOPでは煩雑になるものや、逆に、VOPでは処理が整理されて見やすく構成できてもVEXでは複雑になってひと目で理解できなくなるものがあり、どちらで記述するのが望ましいか、というのは一概に判断できません。周りにアーティストの方が多ければVOPの方が推奨されるかもしれませんし、プログラマの方が多ければVEXの方が喜ばれるかもしれません。

 ゆえに、VOPとVEXは適宜使い分けて作業するのが望ましいと言えるでしょう。

Houdini17 VOP新機能概要

Unified Noise VOPの強化

 バージョンアップが行われ、バリュー、シンプレックス、パーリンフローノイズ等の派生する周期的なノイズがサポートされました。

その他新規ノードが実装されました。

 

CVEX Shader Builder VOP node

CVEX Shader Builderは、内部のVOPネットワークに基づいてCVEXシェーダコードを構築します。 内部ノード(子)の入出力はローカル変数を表し、子自身がこれらのローカル変数で動作するコード群(snippets)を提供します。 シェーダビルダは、これらのコード群を一貫性のある有効なシェーダ関数に統合します。CVEX Shaderの具体的な作例につきましてはこちらのページをご参照ください。

Houdini16.5においてはCVEX Shaderノードが存在しましたが、Houdini17.0においてはこれは削除され、新しくCVEX Shader Builderノードとして再構成されました。

Houdini16.5.571
Houdini17.0.352

Generic Shader VOP node

このVOPは一般的なシェーダを作成します。 スペアパラメータをこのノードに追加して、シェーダパラメータを定義することができます。  オプションのパラメータspareデータタグsidefx :: connector_kindは、パラメータに対応するノードの入力または出力が必要かどうかを指定できます。 タグ値は、「なし」、「入力」、「出力」、または「入出力」が設定できます。 タグが定義されていない場合、または値が事前に定義されていない場合、パラメータのデフォルトは 「入力」です。

PBR Non-Metallic VOP node

※Houdini17.0.352現在、ノードが実装されておりません。
  誘電体(非金属)の反射と屈折を計算します。このノードは、反射、屈折またはその両方を計算します。

Surface Distance VOP node

 ポイントとソースポイントグループ間の最短距離を求めます。このオペレータは、与えられたポイントグループ内の最も近いポイントまでの最短距離を見つけ、それが最も近いグループ内のポイントを返します。

Unified Noise 3.0 VOP node

 このノードはVEXで利用可能なすべての種類のノイズを生成できる統合されたノイズ生成インターフェイスとなります。 このノードではNoise Typeパラメータを使用してノイズを設計し、[Output Correction]タブのパラメータを使用して必要な範囲に出力を調整できます。
 Houdini16.5においてはUnified Noise 2.0 VOP nodeノードとなっていましたが、Houdini17.0においては3.0にバージョンアップされました。

Houdini16.5.571 Houdini17.0.352

変更内容としましてはNoise TypeがValueノイズ、Perlinノイズ、Worley/Cellularノイズの3種類に大別されたのと、周期的なノイズを生み出すPeriodicノイズが外部パラメータとして独立し、それぞれのノイズに周期性を与えられるようになりました。また、signatureを外部から入力できるようになりました。

Unified Noise Static VOP node

 Unified Noise VOPのStatic版になります。Houdiniには、Unified Noise VOPとUnified Noise-Static VOPが同梱されています。 「Static」はあらかじめコンパイルされているので、VOPネットワーク内ではより高速です。Staticノードと無印との違いは、Staticノードの場合、パラメータにノイズタイプとフラクタルタイプを設定する必要があることです。(VOP入力を使用して変更することはできません)  

 Houdini16.5においてはUnified Noise-Static 2.0 VOP nodeとなっていましたが、Houdini17.0においては3.0にバージョンアップされました。

Houdini16.5.571 Houdini17.0.352

変更内容につきましては、パラメータはUnified Noise VOPと同様のものとなっております。既に計算済みの結果を返すStaticノードですので、signatureの入力に関しましてはこちらのノードでは対応していません。

 

 

 

Houdini17 VEX新機能概要

・VEXが一部64bitに対応

 全てのVEXが64bitに対応しているわけではありませんが、CHOPにおける一部の小数点演算などの特定の箇所において64bit VEXオプションが存在します。現在はWrangle、SOP、DOPやGeometory VOPでは64bit VEX利用ができませんが、これは実験的なものであり、将来的には64bit VEXの適用範囲は拡張される予定です。

 

・AVXによるVEXのアクセラレーション

 AVX(Advanced Vector Extensions)とはベクトル演算における8つの単精度浮動小数点数(倍精度浮動小数点数)を可能にする最新のx86 CPU命令セットです。AVXによって連続する基本算術演算(四則演算)を同時に処理することができるようになりました。

 従来機能としてHoudini16.5までは、SSE(4 Float)とSSE2(4 intまたは2 double)を使用しており、AVXは特に算術演算を多用するコードにおいて、この従来手法より最大30%の高速化を実現しました。

 一般的に使われるようなVEXコードにおいてはAVXの使用により、5-10%ほどのスピードアップを開発者側で確認しておりますが、コード総量が極端に短かったり、VEXで標準実装されていない関数を呼び出している場合はAVXの効果が十分に発揮できない場合があります。

 

・VEXのパフォーマンス向上

 64bit対応、及びAVXによるアクセラレーション、ノイズシステムの改良等によって総合的に平均30%程度の高速化を実現しました。これは常にこの数字を保証するものではなく、コードの内容によって前後するものとなります。

 

その他、Houdini17においてノードとして追加された機能の一部、及びそれに関連する関数がVEX上でも実装されています。

agentsolvefbik() VEX Function

 エージェントにフルボディIKを適用するソルバ関数です。

attribdataid() VEX Function

 ジオメトリのアトリビュートのIDを取得する関数です。

chop() VEX Function

 特定のサンプルにおいてchop networkの結果を数値として取得する関数です。

chopt() VEX Function

 特定のサンプルにおいて時間のchop networkの結果を数値として取得する関数です。

diagonalizesymmetric() VEX Function

 入力した対称行列を対角化した直交行列として生成を行う関数です。

expandvertexgroup() VEX Function

 ジオメトリファイルの指定されたグループ内の頂点のリストを返す関数です。

getpackedtransform() VEX Function

 パックされたプリミティブのトランスフォームを取得する関数です。

packedtransform() VEX Function

 プリミティブのトランスフォームをパックする関数です。

random_poisson() VEX Function

 パックされたプリミティブのトランスフォームを変更する関数です。

solvefbik() VEX Function

 フルボディIKを適用するソルバ関数です。

surfacedist() VEX Function

 あるポイントから一番近いポイントグループの中にあるポイントの距離を返す関数です。

polyneighbours() VEX Function

 あるポイントからエッジを共有しているポイントの一覧を返す関数です。

uniquevals() VEX Function

 ユニークな文字、あるいは数字の入った配列を返す関数です。

What’s New in Houdini17

現地時間2018年10月10日にHoudini17がリリースされました。

この記事ではHoudini17の新機能について、簡単に紹介させていただきます。

インディゾーンHoudini17製品ページ

概要

 Houdini 17 Bansheeは、Vellumマルチソルバによる高速クロス、新ホワイトウォーターソルバ、マテリアル (素材) ベースの破壊ワークフローなど、強力な新しい物理シミュレーションツールを搭載しました。

 さらに、インタラクティブなモデリングやプロシージャルUVツール、地形侵食モデル、キャラクタリギングとアニメーション、新Houdini Engine 3DS Maxプラグインなど、大幅に強化された機能が搭載されています。

主要 5 大機能

  • 新 Vellum マルチソルバは、 (nCloth同等またはそれ以上の) 高速なクロス、ヘア、ソフトボディ、粒子(grain)などのエフェクトのシミュレーションを統合します。VellumソルバはGPUで高速化されており、セットアップと繰り返しを非常に容易にしています。
  • White Water ソルバが書き換えられ、写実的なセルパターンや反発力、FLIPのソースシミュレーションと正確な関係を保つことで、有機的で泡立つようなルックを実現しています。
  • コンクリート、ガラス、木材といった素材を元にしたマテリアルベースの破砕ツールと、システム全体の結合を可能にするコンストレインネットワークを自動的に構築することで、破砕ショットのセットアップと演出が容易になります。
  • Terrainには、河道法線、川岸、瓦礫などのディテールの精密な制御を可能にする高度な浸食ツールや、オブジェクトをより効果的に景観に配置するための新しい階層的散布が含まれました。
  • 新UVツールにより、シームの自動生成、正確な平坦化、それに対する超効率的なレイアウトまでの完全なUVプロシージャルワークフローを定義します。

 

その他の主要機能

  • 新Retime SOPによって、流体やRBDシミュレーション、そしてボリュームなども効果的な補間とブレンドオプションにより、結果をクリーンかつ完全に写実的に伸張させたり短縮させてたりすることができるようになりました。
  • インタラクティブモデリングには、「Topo Build」を元にした新PolyDrawツールによって、参照ジオメトリがない場所でのインタラクティブなポリゴン生成、迅速なコンストラクションプレーンの角度と位置決め、回転スナップ、 ビューおよびコンストラクションプレーンのブックマーク、新しいジオメトリアラインメントツールなどが追加されました。
  • キャラクターアニメーション&リギングでは、アニメータにより使い易いキーフレームワークフローを提供する、新しいデザインのタイムラインと、上半身から下半身まで完全な自動リギングをサポートするフルボディIKと、フェイシャルオートリギングツールをサポートしました。
  • Houdini Engineでは、新 3DS Max プラグイン、Unityプラグイン 2.0、MayaおよびUE4プラグインでの重要な機能強化などにより、多様性が向上しました。
  • ”3D の JPEG” とも呼ばれるGLTFの入出力に対応しました。これはゲーム開発コミュニティからのフィードバックに基づいたもので、効率的で相互運用可能なアセット配信フォーマットにより3Dシーンのサイズを圧縮、ランタイム処理を最小限に抑えます。

 

General

ネットワークエディタ

・New Edit -> Rename Nodes コマンドを使用することで、強力なパターンマッチングを使用してノードの名前を一括変更することができます。

・ノード検索のオプションが増えました。

・マウス中ボタンクリックで表示される情報ウィンドウに、ノードによって追加、削除、または(オプションで)変更されたアトリビュートが表示されるようになりました。 情報ウィンドウでアトリビュート名をクリックすると、アトリビュートのビジュアライザーを作成できます。

 

パラメータエディタ

・パラメータの検索とフィルタインタフェースのオプションが増えました。

・カラーエディタで、16進数を使用して色を指定できるようになりました。

 

Python scripting (HOM)

・これまでC++ HDKでしか行えなかったビューポートのカスタマイズをPythonで行うための新しいフレームワークを搭載しました。

 

コマンドライン

・起動時に -desktopオプションを使用すると、Houdiniを起動するパネルレイアウトを指定できます。これは、保存されたデスクトップ設定を変更しない1回限りのオーバーライドです。

>houdini -desktop Animate

・起動時に-core、-force-fx-licenseオプションを使用すると、Houdiniが使用するライセンスの種類を指定できます。

 

新機能完全リスト

Houdini17新規/改良ノードリストはこちら

Project Vellum

・クロス、ヘア、ソフトボディ、粒子 (grain) の統合高速ソルバ

・GPU及びOpenCL による高速化

・サブステップ非依存のstiffness (固さ) 設定を備えたXPBDに基づいたソルバ

・容易なセットアップとコントロール

・クロスシミュレーションのマルチレイヤー化

・クロスパネルとドレープ(裁断)ワークフロー

・縫合、ブランチ、引き裂きなどのダイナミックコンストレイント

・アニソトロピーアトリビュート

・プラスチックのような(可塑性を持つ)変形

・圧力、ストラットおよび四面体をベースにしたソフトボディ

・便利なオートスリープ機能

・組み込みHDAを介したSOPレベルのアクセス

・アーティスト向けの手早い設定を行うためのシェルフツール

・強力なビジュアライズオプション

 

Fluids/Pyro

・PyroソースがvolumeではなくPointに基づくようになりました。

 これはパーティクルシミュレーションの結果を煙の発生源として使用する場合など、多くの場合においてPyroシミュレーションの生成を強化します。ポイントアトリビュートを編集、アニメーションするのはボリュームの編集より簡単です。

・ソースポイントからボリュームを生成する際に、VDBが使用されるようになり、シミュレーションが40倍以上高速になりました。

・新しいボリュームソースボリュームをインポートするためのDOPは、既存のものより遥かに明確なインターフェイスを備えています。

・whitewater ソルバの完全書き換え

・パーティクル/ OpenVDBを利用したPyroソース

・OpenVDBを利用したFLIPソース

・SOPでのPyroセットアップのワークフローの段階化

・専用のRetime SOP

・PyroにColor Advection機能の追加

・新しいPoint Velocity SOP

・並列計算によりNarrow Bandが4倍高速化

・Narrow Bandの川とカスタムフィールドのサポート

 

破壊ツール/  RBD

・高密度でスケーリング可能なマテリアルごとの破砕のフレームワーク

・自動生成異種間コンストレイントシステム

・コンクリート、木材、ガラスのためのプロシージャル破砕パターニング

・ 新しいRBD Convex Proxyシェルフツールを使用した物体の凸型分解

・ソフトコンストレイント

・グルーコンストレイントの3倍高速化

・コンストレイント設定メカニズムの改良

・新しいボロノイによる破砕(ボロノイ2.0)

・Boolean SOPに基づく新しいBoolean Fractureツール

 

Interactive modelling and viewport

・高度なアライメントツールセット

・ローカル空間での複数オブジェクトの移動と回転

・TopoBuildを元にしたPyroDrawツールによるフリーハンドでのトポロジー作成

・TopoBuildツールとEditツールの拡張

・インタラクティブなハンドルを持つ構成平面

・カメラのブックマークと構成平面のブックマークの表示

・ラダーウィジェットによる直感的な回転値の設定

・ユーザー定義の角度によるハンドルの回転

・ハンドルによる回転および平行移動の数値を表示

・視認性向上のための3Dスケールハンドルの再設計

・ピボット操作の改良

・重要なツールへのアクセス性向上のための固定キーの追加

・バックフェイスポリゴンの着色オプション

 

プロシージャルモデリング / SOP

・Retime SOP

・Falloff SOP

・Attribute Noise SOP

・Winding Number SOP

・Triangulate 2D 2.0 SOP(高精度化、高品質出力とシルエット抽出)

・BlendShape 2.0のクオータニオン対応など

・Trace SOP の改良

・Sweep 2.0

・verified / compilable に関するSOPの追加

・スナッピングとオリエンテーションの高速化

・コンストラクションプレーンのサポート

・SOP内でのレイ交差のための高速BVHアルゴリズム

・Group Create SOP における頂点グループのサポート

 

Terrain(地形)

・写実的な水や熱による侵食

・高精度のデブリ算出

・Heightfield distortion の改良

・より堅牢化された単一散乱

・衝突に対応した階層的な散乱

・Heightfield Distort by Layer SOP

・侵食を生み出すのに必要なフレーム数の削減

・侵食が種類ごとに個々のノードに分割

  HeightField Erode Hydro(水の流れによる浸食)

  HeightField Erode Precipitation(降水による浸食)

  HeightField Erode Thermal(熱による浸食)

 

UV ワークフロー

・理想的なUVカットラインを検出するヒューリスティックUV AutoSeam SOP

・高精度化、アイランドマッチングなどが追加、再設計されたUV Layout SOP

・四辺形直線機能を追加した、再設計されたUV Flatten SOP

・2Dアイランドにおける3Dジオメトリの効率的なパッキング

・UV transform SOPの倍速化

・豊富なビジュアライズオプションセット

 

キャラクターアニメーションとリギング

・タイムライン/再生バーの改変による基本的なアニメーションツールへのアクセス改良

・ポーズスペースデフォメーションツールセット

・新フェィシャルオートリグとオートリグツールセットの改良

・フルボディIKソルバと専用ポーズツールによるハンドル

・チャネル編集ワークフローの簡略化

・ノードパラメータボックスのカラーコード化によるチャネルのハイライト

・アニメーションエディタGUI の簡略化とチャネルリストの統計情報表示

・Bone Deform SOP のデフォメーション大幅高速化

・ポーズライブラリとキャラクタピッカーの改良

 

群衆

・フルボディIK及びそのVEX関数のサポート

・Vellumクロス、ヘアー、ソフトボディなどの二次派生FXのサポート

・スムーズなクリップブレンドとトランジション

・Agent Unpack SOP

・Agent Clip SOP 2.0

・ワークフローの改良

・圧縮されたbclipファイル(.bclip.sc)のサポート

 

ヘアーとGrooming

・グルーミングパフォーマンスの大幅な高速化(4-10倍)

・ヘアー生成の大幅な高速化

・再帰的サブクランピング

・Vellumヘアソルバー統合による高速なシミュレーションセットアップ

・ゲーム開発向けヘアカードの生成

 

Houdini Engine

・新しい3DS Maxプラグイン

・地形をネイティブサポートした再設計されたUnityプラグイン

・UE4およびMayaプラグインの機能拡張

・その他数多くのパフォーマンスの最適化

 

GameDev

・フラットなジオメトリ、または階層ジオメトリでのGLTFインポートおよびエクスポート

・Github上にある豊富なGame Devツールと専用のHoudiniツールシェルフ

・多種にわたるFBXサポートの改良

・ベークテクスチャによるジオメトリのヘアカードのエクスポート

 

レンダリングとデータ I/O

・MantraバッチでのIPR用のNVIDIA Optix AIデノイサのサポート

・ライトパスエクスプレッション

 基準とのパターンマッチングにおけるorigin、bounce type、destinationなどのパラメータの貢献度の指定

・アクセラレーションモーションブラー

 加速度を測定するポイントアトリビュート(accel)がある場合、オブジェクトごとにアクセラレーションモーションブラーを適用することができます(Geometry object-> Render tab ->Sampling sub-tab からジオメトリモーションブラーを「アクセラレーションブラー」に設定)。

・新しいPBR SSSサンプリングによる影の部分での高速収束

・パックされたプリミティブをレンダリングするときのメモリ占有量の大幅削減

・複数のGIライトを同時にサポート

・Bake Texture ROPの拡張

・熱、密度、温度に対するPyroシェーダのサポート

・Deep EXRのためのデータウィンドウのサポート

・Alembicレイヤー、その他

・OpenColorIOの強化

・HQueueの改良

・ファーム上でのライセンスとカスタムリソースのトラッキング

・IFD作成が複数のマシンで実行可能(H16.5以前は1台しか使用されませんでした)

・HQueue Render ROPでのNew Render Retriesオプション

・HoudiniヘルプからHQueueのヘルプが参照可能に

・一つのマシンで複数のHQueueクライアントを実行可能

・クライアントグループの編集、ファーム上でいくつジョブがあるか問い合わせ、クライアントの終了等を行うPython APIの新しいメソッド

・クライアントテーブルでの新しい説明用のフィールド

 

User experience

・ビューポートカスタマイズに対応したPythonフレームワーク

・ノード情報ダイアログに詳細なアトリビュート情報の表示

・パラメータダイアログで隠れて見えないパラメータの検索能力の向上

・カラーエディタでのカラーHEXフォーマット(16進数表記)のサポート

・ -desktop、-core、および-force-fx-licenseなどの追加のライセンスオプション

 

VEX & VOPs

・Unified Noise VOPの強化

・周期的なノイズのサポート:シンプレックス、値、パーリンフローノイズ等の派生

・64ビットVEX

・AVX(Advanced Vector Extensions)によるVEXのアクセラレート

 

 

Houdini 17 スニークピーク公開

昨日、SideFX社からHoudini 17に関するスニークピークが公開されました。

Houdini 17 には、GPU による高速化のクロス、ヘア、ソフトボディ、粒子のマルチソルバ、まったく新しいホワイトウォーターソルバ、マテリアル(素材)ベースの破壊フレームワーク、フェイシャル自動リグ、フルボディIK、改良されたアニメーションとモデリングワークフロー、UVの自動シーム生成、GLTF 入出力、ゲーム開発ツールなど豊富な新機能搭載。
10月2日に Houdini 17 Launch イベントがモントリオールの Cirque Éloize で行われます。ここでの講演は録画され、可能な限り早く公開予定です。

Houdini 17 のリリースは 2018年10月中旬を予定しております。

https://www.sidefx.com/ja/community/houdini-17-sneak-peek/