blender2.83 他のオブジェクトの位置によって制御されるNPR天使の輪シェーダー(ドライバーノード使用)

表題の通り。blenderのノードチュートリアルは沢山ありますが、UV球では上手くいっても、複雑な形状だと失敗してしまったりとか、よくわかんない挙動になってしまったりとか、あると思います。

個人的にそれが天使の輪で、カメラの挙動にあわせて変な位置に光が出来たりします。制御も難しいし、どうしたもんかのう、と思って色々調べてたら、ドライバーという考え方があるらしい。

他のオブジェクトとかの位置情報を使って、メッシュを制御したり、プログラム未満のちょっとしたスクリプトを動かせる。そしてこれはノードでも使える!

わりかし汎用性が高い要素な気がします。かなりの可能性を個人的には感じています。今度ガッツリ勉強したいところです。

画像1

とりあえず実際の挙動がこれ。コントローラーを担当するオブジェクトの移動に合わせて、天使の輪が上下しております。

このコントローラーをさらにカメラの挙動に合わせて制御したら、自分の思うとおりに天使の輪が制御できるんじゃないかなって考えたわけです。とりあえず技術試験的な物はパスしたかなって感じです。

この方法の良いところは、実際に制御対象(この場合は頭の横に存在している球体)がエディタ上で見える事です。このため、今後何かしらの仕組みを仕込むときに結果が目に見えてわかりやすいというメリットがあります。ノード内で組み立てられると、複雑になったときにどこが悪いかわからなくなりがちなので。

参考というかアイデアの大本はここ。めっちゃ参考になりました! 感謝!!

仕組み

画像2

基本的な考え方はとてもシンプルです。コントローラーオブジェクトのZ位置、髪オブジェクトのZ位置をそれぞれ読み取って、引き算で差を出し、そこからグラーデションを作る、という流れになります。

2つのオブジェクトの差を基準にしていないと、例えばキャラクターが走った時とかに天使の輪も変な動きをする可能性があるので、こうしています。

また、非現実的な挙動、つまり空間に制止した天使の輪ができてしまいますが、私が求めている方向性がノンフォトレンダリング、つまりアニメ的な表現なので、これはとても都合の良い挙動だと言えます。

画像3

途中XYZ合成で結果をXに入れていますが、オブジェクトによってここらへん挙動が変わるみたいです。多分ベースとなったUV球を回転させたりするとおかしくなる。要検証。blenderは色々と仕様が入り乱れてて複雑怪奇なんじゃ。

ドライバーの作り方

さて、ドライバーの作り方。といっても簡単です。

画像4

まず、値ノードを作ります。この0.5の部分を右クリック、ドライバーの追加でドライバーを作る事が出来ます。ドライバーって何? とは思ったりするんですが、まあちょっとしたプログラム作成機能かなって勝手に解釈しています。他のオブジェクトと相互作用できる仕組み、とかそんな。

このドライバーは入力できるものにだったら基本的になんにでも作れるみたいです。アイデア次第で色々なことができそうだと思いません? これは沼の予感ですよ。

画像5

エディタの画面はこんな感じ。使うのは右の方です。式をvar+0にしましょう。そうしないと何かエラーでます。オブジェクトの方をクリックすると、一覧が出てくるんで、対象を探して放り込んでください。

タイプをZ位置にします。これで完成。

画像6

値の項目に数値が入力されているのがわかりますね。

画像7

紫になったらドライバーが設定されています。

この記事が気に入ったらサポートをしてみませんか?