sak99
Feb. 27, 2021 06:44:47
インスタンスを含むサブネットを作り、そのサブネットの位置を動かしたときにビュー表示とレンダリングでインスタンスの位置がずれてしまうのですが、レンダリングと同じ位置にビュー表示を合わせるにはどうしたらよいでしょうか?
実際にはインスタンスを含むオブジェクトをまとめてHDA化したく、その際にサブネット化されてしまうので上記のような事がしたいです。
宜しくお願いします。
Image Not Found
Ken Taki
Feb. 27, 2021 16:10:45
他の方法もあり、まったく同じネットワークではないですが、Copy to Points を使うことも可能です。
この方法であれば、一つの Geometry ノードの中に sphere と box の両方が入っているので、一つの transform だけで処理されます。上のシーンでは3つのオブジェクトがすべて個別のオブジェクトノードとなっているので、一つを動かしたときにトランスフォームが二重にかかってしまうわけですね。
sak99
Feb. 27, 2021 19:51:29
Ken Takiさん、コメントありがとうございます。
トランスフォームが二重にかかってしまうのは理解出来るのですが、ビューポートとレンダリングで結果が異なるのは不可解ですね。
ご提案頂いたとおり、一つのGeometryノードの中で処理出来る場合は良いのですが、ライトを変形するジオメトリの頂点に配置したい場合を考えるとobjレベルでインスタンスを作る方法しか分からず、これをHDA化すると複数のオブジェクトがサブネットの中に入るかたちになってしまいます。
Koya Masubuchi
Feb. 27, 2021 21:20:53
subnetのtransformを一度初期の0,0,0に戻し、そのあとinstance1ノードのディスプレイフラグをオン・オフしてみると、ビューポート上でのinstanceの位置が更新されました。subnetを再度移動させてもちゃんとinstanceもboxの位置に追従しているので、これで大丈夫そうな気がしますがどうでしょうか?
ただ、もう一度instance1ノードのディスプレイフラグをオン・オフするとオフセットがかかった状態になってしまいますね。。
Ken Taki
Feb. 27, 2021 23:19:16
> ライトを変形するジオメトリの頂点に配置したい場合を考えるとobjレベルでインスタンスを作る方法しか分からず、
Object Merge ノードを使うのが良いと思います。
このノードを使えば、その Transform パラメータで処理を設定できます。添付では Into This Object としています。
sak99
Feb. 28, 2021 03:05:14
Koya Masubuchiさん、コメントありがとうございます。
やはり更新時にずれてしまいますね。
更新するときはいつもインスタンスノードの中に潜って更新していました。
ディスプレイON/OFFで更新出来たんですね。
これ便利です。
Ken Takiさん、コメントありがとうございます。
ライトのコピー配置はSOPで出来るのでしょうか?
ジオメトリレベルでObject Mergeでライトを指定してCopy to Pointsでコピーすると、ライトのジオメトリはコピーしてくれるのですがライトとしての機能は失われてしまう様です。
Koya Masubuchi
Feb. 28, 2021 04:09:11
instanceノードのギアアイコンメニューからEdit Parameter Interface...をクリックし、Render Propertiesの中からinstanceのフォルダーを見つけ(下段のFilterでinstanceと入力し検索)、「Instance Transform」という項目をドラッグアンドドロップで右のinstanceノードのメニューに追加します。
追加されたInstance Transformのチェックを外すと、subnetのtransformによる余分なオフセットを回避できました。
Copy to pointsでやる場合でもジオメトリノード自体にInstanceのメニューをEdit Parameter Interface...からまるごと追加すれば同じことができてるっぽいです。
sak99
Feb. 28, 2021 08:51:59
ありがとうございます。
Mantraを使う場合はこれで上手くいきそうです。
Houdiniって色々なところをいじり回せるんですね。
Redshiftを使う場合は、ビューポートではずれなくなったのですが、レンダリングでずれてしまうようですので、ライトのTransformで原点に戻るように考えているところです。
移動成分のみなら単純にサブネットの移動にマイナスを入れれば良いようですが、回転成分が加わると難しいです。
この辺りはマトリクスの知識が必要な感じで焦っています。
Copy to Pointsを使う方法をもう少し詳しく知りたいのですが、パラメータを追加するところは出来たのですが、sphereジオメトリノードの中ではどの様な処理をしているのでしょうか?
Copy to Pointsの左側の入力にライトを入れるのでしょうか?
Koya Masubuchi
Feb. 28, 2021 10:37:08
Redshift使用の想定でしたか!私はRedshiftは家では使用していないのですぐに調べたりできなさそうです。力になれず。。
簡単な回避方法ありそうなんですけどね。。
Sphereジオメトリノードの中では何もいじらなくて大丈夫です。
「Copy to Pointsでやる場合」と書いたのが紛らわしかったですね。すみません。
Pointがある部分にライトがインスタンスとして配置されるので、Sphereを目印としてコピーする必要がないのなら、Copy to Pointsも使わずにobject mergeノードで引っ張ってきたboxのpointさえあれば大丈夫です。ジオメトリノードにinstanceメニューを追加している時点でinstanceノードでやるのとほぼ変わらないので、意味があまりないかもしれませんが。。
Takiさんのhipを拝借して作ってみましたので、hipを添付いたします。
追記
Redshiftの公式フォーラムに同じような話題で投稿がありました。
Why do Instanced lights not follow transform of Subnetwork? [
www.redshift3d.com]
試してないので出来るかわかりませんが、ライトをinstanceノードの子にするとダブルトランスフォームが避けられますよ的なことらしいですね。
(HoudiniのフォーラムにほかのフォーラムのURL貼るのは微妙な気がしましたがすみません。。)
sak99
Feb. 28, 2021 18:51:02
>Sphereジオメトリノードの中では何もいじらなくて大丈夫です。
なるほど、ジオメトリノードとインスタンスノードは大本は一緒で表示している項目が違うだけのようですね。
わざわざRedshiftのフォーラムまで調べてくださってありがとうございます。
添付されているシーンを回答のように修正してみたのですが上手くいきませんでした。
投稿されいるシーンではインスタンスノードにもToransformが掛かっていたり、スクリーンショットと同じ状態では無かったのですが、インスタンスノードを回答者のスクリーンショットの通りに修正してみたのですが駄目でした。
投稿当時とはバージョンが違うので仕様が変わっているかバグでしょうか。
sak99
Feb. 28, 2021 22:52:40
とりあえず原始的な方法でですが、意図する結果が出せるようになりましたのでご報告致します。
サブネットの中に回転要素を相殺するサブネットを作り、その中にライトを入れてライトのTranslateで移動成分を相殺させました。
Redshiftライトはこれでビューとレンダリングでずれることが無くなりましたが、Mantraはレンダリング時にずれるのでインスタンスノードにInstance Transformパラメータを追加してチェックを外しています。
Instance TransformパラメータはRedshiftライトに影響しないようですので、MantraとRedshiftどちらを使っても大丈夫っぽいです。
Ken Takiさん、Koya Masubuchiさん、ありがとうございました。
Houdiniを初めてまだ間もなくて分からないことばかりですが、これからもよろしくお願い致します。
Redshiftライトは本家フォーラムの回答通りに出来ないので折を見て質問してみたいのですが、英語のフォーラムに投稿するのはハードルが高いです。
Koya Masubuchi
Feb. 28, 2021 22:58:12
解決されたようで良かったです!
ライトのインスタンス自体あまり使用してこなかったので今回調べて勉強になりました。こちらこそありがとうございました。
LoganCarr
March 17, 2021 09:26:54
情報をありがとう