Blender 5.0 → Nuke 17 のUSDパイプラインを試してみた
1. Blender × Nukeを試してみた
ふとしたきっかけでNuke17を検証することになりました。触っているうちに、Nuke17にusd形式の3Dモデルデータを扱えると知ったので、BlenderとNukeの連携を試してみました。Nuke17でBlenderの3Dモデルを読み込むことができれば、3Dモデルと実写合成をする時に、Nuke17の強力なノードやコンポジットを使えるのではないかと思ったからです。
うまくいったことと、うまくいっていないこともあるのですが、学ぶことも多いので備忘録的にnoteを書いてみることにしました。
Nuke17とBlenderを連携して試してみた背景
Nukeは映画VFXの業界標準コンポジットツールです
Nuke 17(2026年2月リリース)でUSDベースの3Dシステムが正式版になりました
BlenderがUSD書き出しに対応している
この2つが繋がれば「Blenderでモデリング → Nukeで実写合成」が低コストで実現できるのでは?
実際にどこまで使えるのか、特にマテリアルの互換性なども検証してみたいです
2. 環境
Blender 5.0
Nuke 17 Non-Commercial(無料版)
Mac M4 Max 64GB
3.Blenderの書き出しと、Nuke17での読み込み
Blender側
Blenderでスザンヌ(モンキー)をつくり、マテリアルにPrincipled BSDFのベースカラーをピンクに設定
ファイル → エキスポート → USD(.usdc)で書き出し
エキスポートのマテリアル設定でMaterialXネットワークにチェック (Nuke17とマテリアルに互換性があるらしい)



Nuke17での読み込み

Nuke17のGeoImportノードでusdファイルを読み込み、GeoImportノードをViewノードにつなげる。Hydraビューアで3Dモデルが表示されます。ジオメトリの受け渡しは成功。BlenderとNuke17で軸が異なるので、GeoTransformで3Dモデルのスケールと回転を調整しました。

Nuke17のCameraノードを作成してScanlineRender2に接続しました。ScanlineRender2ノードは、3Dシーンを2D画像にレンダリングするノードで、Blenderで言うF12(レンダリング)ボタンと同じ役割で、3Dモデル、カメラ、ライトが揃った状態で、カメラから見た絵を画像として出力する機能です。

ScanlineRender2からWriteをつなげてレンダリングしようとしたら、Non-commercial版は書き出しサイズに制限がありました。そのため途中にReformatノードで書き出しサイズをHD-1080に変換する必要がありました。
Nuke17でのHDRIライティングの設定
せっかくなので、HDRIをNuke17に設定して、レンダリングしてみることにしました。

やったことは、Nuke17のGeoDomeLightノードを作成してGeoMergeで3Dモデルとマージ。ただしGeoDomeLightにはHDRIのファイル指定UIが見当たらなかったのでReadノードで、HDRIのexrファイルを読み込み、ReadノードからGeoDomeLightへつなげました。
GeoMergeで3DモデルとHDRIのデータをマージして、ScanlineRender2のobj/scnにつなげました。

レンダリングしてみた
Writeノードで.jpgで書き出ししてみると、BlenderのプリンシプルBSDFで設定したベースカラーのピンクは渡っているのですがが、明らかにメタリック感が強いようです。

Blender側ではメタリック0、粗さ0.5に設定しているのに、Nukeのレンダリングではツルツルのメタル質感でした。
Nuke17のHydraビューアでは正しく表示されているのに、ScanlineRender2の出力だけおかしいようです。
ScanlineRender2のMaterialセクションでMaterial Familiesが「slr mtlx」や「slr preview」になっていることを確認 → MaterialXは認識されているが、レンダリング結果がおかしい

ClaudeにUSDファイルの中身を解析してもらう
ClaudeがUSDファイルの中身を解析したいと提案したので下記をやってもらいました。
PythonのpxrライブラリでUSDCファイルをテキスト(USDA)として書き出して中身を確認
UsdPreviewSurface側:metallic = 0、roughness = 0.5 → 正しい
MaterialX(OpenPBR Surface)側:base_metalness = 0、specular_roughness = 0.5 → 正しい
ベースカラーも正確に一致
Blender側のエクスポートに問題はなさそう

Claudeによると、BlenderのMaterialXエクスポートはOpenPBR Surface(ND_open_pbr_surface_surfaceshader)で出力される。その一方、NukeのMtlxStandardSurfaceはAutodesk Standard Surfaceベースなので、シェーダーモデルが違う可能性で起きているのでは?というのですが、判断がつきませんでした。
感想
ちょっと中途半端な結果になってしまいましたが、BlenderからUSD形式で書き出した3DモデルをNuke17で読み込む作業の基礎が確認できました。
あとはNuke17のGeoImportノードなどを使ってノードを組み、カメラノードとレンダーノードを組み合わせてやりたいことの基礎が自力で組めたのは良かったです。Nuke17のノードベースのワークフローがBlenderのシェーダーエディタと似ていて、思ったより馴染みやすかったです。
BlenderとNuke17でMaterialXをつかったマテリアル互換性があるかと思っていたのですが、自分のやり方ではレンダリングのところだけうまくいきませんでした。他にやり方があるのかもなので、うまくいったらまた記事にしたいと思います。
