Tabで追加メニューが出てこない
Blender 4.0(Beta)でシェーダーエディタやジオメトリノードエディタでノードを追加する際、Tabキーを押すことで呼び出していたノードの追加のためのポップアップが出なくなりました。下図は3.6.4で撮った絵。
node.add_search ってコマンドを実行することで呼び出されていたメニューみたいだけど、どうもそれがBlender 4.0にはないらしい。下図は4.0 betaのキーの割り当て画面。元々このやり方はBlender推奨じゃなかったのかな?
3.6まではコンテクストメニューから node.add_search のメニューを呼び出せたけど、4.0betaではそれが存在せず。廃止されちゃったのかなぁ?
Blender 4.0(Beta)ショートカット(Industry Compatible)
非常によく使う部分が変わってますよ。モードの切り替え部分、つまりテンキーじゃない数字キーへの割り当てが大きく変わってます。
1:Edit mode Vertex
2:Edit mode Edge
3:Edit mode Polygon
4:Object mode
5:Pie menu(モードの選択)
従来の4以降に割り振られているのが、5を押すとパイメニューが開いて、そこから改めて選択ってことになった模様。その結果6以降の数字が空いたため、将来何かを割り振ることができるようになったってことみたい。
そんなビューポート周りのショートカットとして Shift + F が追加されてます。カーソルのある位置を中心に表示するようになりました。
Select Linked が従来の" ] "から Ctrl + L に変わってますふむふむ。
余談ながら調べてて初めて知ったのが、最短パスの選択が Ctrl + Shift + LMB だったての。頑張ってメニューから実行してましたよ。
知らなかったことをついでに書くと、ファンクションキーにカメラが割り当てられてたってのがあります。
F1:正面
F2:右
F3:上
F4:カメラ
vでパイメニュー出して切り替えてました(そのやり方は4.0(Beta)でも有効)。
ペイント、スカルプト周りのショートカットに手が入ってますね。
ブラシの拡大縮小が" [ ", " ] " に割り振られてました。
スカルプトで重要なリメッシュですが、Shift + Ctrl + D でボクセルサイズの設定、Ctrl + Dでボクセルリメッシュが適用されるようになってます。以前はBlenderデフォルトのショートカットと同じだったような気がします。
ペイントのショートカットで、
Backspaceで選択しているカラーで塗りつぶされる
Iキー押すとカーソル位置の色を拾える
Xキーを押すとカラーがセカンダリカラーと入れ替わる
といった、世のソフトに普通に見れるようなショートカットが設定されてました。
とかマニュアル見ながらふーんっていじっているものの、うまく動かないものあったりしてね。まあベータ版だからでしょう。とりあえず、シェーダグラフやジオメトリノードでTabっで開くサーチメニューがうちの環境じゃ出ないのが厳しいけど、うちの環境だけなのか、バグでしょう。
Blender 4.0 Alphaの粗い解像度の感想
今更ながら(もうすぐベータ版になるというに)Alphaの内容のReference/Release Notesを見てて、ほぉ、っと思ったもの。
選択オブジェクトの詳細が表示されるようになったよー(左:4.0、右:3.6.2)
地味に便利になります。
生成塗りつぶしは便利です。
AdobeはAdobe Fireflyを正式リリースし生成塗り潰しを行う際に商用利用も可能な形になってます。
ただ、塗り潰した結果生じた絵は何を元に生成したの?ってことで著作権侵害を心配し、その利用に慎重な企業も多いのだと思います。でも、Photoshopの「コンテンツに応じた塗りつぶし」的に利用する分には問題は生じにくそうに思うのだけどどうなのだろう。
こんな感じの360度画像から空素材を生成って時の空以外の要素の塗りつぶしがよりいい感じにいけるわけで、周囲の空以外の要素がもうちょっと高くても(塗りつぶす範囲が大きくても)生成塗り潰しならいい感じにやってくれるわけで。塗りつぶす面積が広くなった時、その元素材が心配にはなってきますがね…
Adobe的には商用利用可能という形で売り出しているし、あまり心配する必要はないのでしょうが、テレビや映画などといったメディア向けの絵を作る場合にはまだ注意が必要なんだろうなぁ。ちなみに機能としてAdobeは生成クレジットってのを利用者に発行し、コンテンツ生成を行う際にクレジットを使うことで優先的に処理を行うようになるそうです。Adobe CCの個人プランでは全部入りのサブスクでは毎月1000クレジット、多くのアプリ単体プランでは500クレジットといった感じでサブスクリプションに対してクレジットが発生する模様。
選択したエッジの長さを計算する
Blenderのビューのオーバーレイの設定でEdge Lengthにチェックすると選択したエッジの長さが表示されるけど、その合計値を出そうとするとき、普通に考えて、ありえん、となります。
ということで、選択したエッジの長さの合計を計算するスクリプトです。
import bpy # blender.stackexchange.comの書き込みを参考にしたよ。ていうかそのままだよ。 mode = bpy.context.active_object.mode # we need to switch from Edit mode to Object mode so the selection gets updated bpy.ops.object.mode_set(mode='OBJECT') selectedEdges = [e for e in bpy.context.active_object.data.edges if e.select] totalLength = 0. meshVerts = bpy.context.active_object.data.vertices for e in selectedEdges: vIndexes = e.vertices totalLength += ( meshVerts[ vIndexes[0] ].co - meshVerts[ vIndexes[1] ].co ).length print ( totalLength ) # back to whatever mode we were in bpy.ops.object.mode_set(mode=mode)
Curve to Meshで作成したメッシュのUV
いや、わからねぇ。
Curve to Mesh with UVs in Blender 3.x?[Blender Stack Exchange]
Geometry NodesのCurve to Meshノードを使用して作成したオブジェクトにUVを設定するとき、そのUVに問題が発生します。その解決方法が示されているページなんだけど、わからねぇ…
幸い、この解決方法を示している回答では.blendファイルもGithubにて公開していて、GumroadやBlender Marcketで Curve to Mesh UV という名前でより詳細なオプションが追加されたものも購入することができるようです。購入するのもやぶさかではないのだけど、まずはGithubで公開されている.blendファイル内のノードを取り込んでみました。
このツリーの一番大きいノードが.blendファイルから取り込んだノードです。今回、Spline Parameterに従って先細りを作りたいので、このでっかいノードの中身に下図のようなツリーを繋いでます。(あ、いけね。Set Curve Radius もだ。)
とりあえずこれでUV問題を解消できそうです。買うべきなんだろうなぁ…
ラインの色を根本のメッシュの色にする
Blenderのパーティクルヘアの毛をメッシュ化した時、そのメッシュの色は生え際となっているオブジェクトの色にしたいって要請がありました。
パーティクルヘアのメッシュ化は、モディファイヤのParticleSystemにあるConvert to Meshボタンを押すことでラインのポリゴンが出力されてくるので、そのラインをカーブに変換してそのカーブをどうこうするって流れが普通だと思いますが、色をどうにかしたいと思ったので、Gometory Nodesを使うことにしました。
ベースとなっているキューブについている色はVertex Color(Color Attribute)に記録してあります。つまりは毛の根本のVertex Color(Color Attribute)を拾って毛の色を設定してます、ってことです。
ノードツリー全景。左側で根本部分のキューブの色(Color Attribute)を取得して、一本の毛を構成する全ポイントにその色を記録してます。右側で毛のラインに沿った形の円錐を生成して色をつけてます。よく理解していないから苦労した…
左側
ヘアパーティクルから出力されたポリライン(HairMeshという名前)は一本ずつがこの例の場合5個のポイントで構成されてます。HairColorというアトリビュートに根本にあるキューブ(BaseShapeという名前)の色をその5個のポイントに記録しているというツリーの流れになってます。
右側
Curve to MeshでCircleを断面にしたメッシュを作成する際、Spline ParameterのFacter(長さ方向に根本が0、先っぽが1)の値をもとに半径を指定して先に行くほど細い形状を作成。生成されたメッシュのポイントは、元になるカーブのポイントに記録されたAttributeを引き継ぐみたいで、マテリアルでツリー左側で設定したHairColorの色を参照するように設定したらこんな感じになりました。
ちなみに右側のCapture Attribute部分から先はUVを作ってます。これを使って毛の先っぽが光っているって表現になってたりします。このツリーでなんでUVが出来上がるかいまいち分かってません…。困ったものです。<追記>このやり方だといいUVはできてないことが確認できました(GNモディファイヤをApplyしてアトリビュートをUVにして出来上がるUVがよろしくない)。難しい…</追記>
余談ながら左側のツリーの左下は、0,1,2,3,4,5,6,7,8,...ってのを0,0,0,3,3,3,6,6,6,...にするみたいな手法を使ってます。なるほどねぇって思いました。
I-Mesh for Blender が入らない
それが猛烈に欲しい場面があって衝動買いしたもののインストールしようとしたら動かなかったI-Mesh for Blender。
I-Mesh [Blender Market]
Blender Marketで星1つをつけている人たちの中には同じように動かねぇって人たちもいらっしゃいましたが、残念ながら解決策を示してる方がいらっしゃいませんでした。エラー内容は以下の通り。
そんな名前のモジュールはねぇよ、ってお話です。これはインストールしたアドオンをロードするときに(ロードするチェックマークを入れるときに)出るエラーです。
macOSでは通常、インストールしたアドオンは ~/Library/Application Support/Blender/[Version]/scripts/addons に入ります。で、そのフォルダを見てみると、フォルダ名が imesh-pro-2.1ですよ。エラーになんて買いてあるかというと Nomodule named 'imesh-pro-2' ですよ。ってことでフォルダ名を imesh-pro-2.1 から imesh-pro-2 に変えました。
無事ロードされました。んが、[SSL: CERTIFICATE_VERIFY_FAILED] ってエラーを吐いて動かないのでございました。
結論から言えば証明書ファイルへのパスを通しておく、ということになったのですけど、以下やった手順。
使っているのはBlender 3.6なのでそのBlender内のpythonのある階層で
$ sudo ./python3.10 -m pip install --upgrade certifi
を実行。あるいはこれは必要ない処置かもしれんけど、念の為。(あまりよくわかってない作業(^^;)
このcertifiモジュールの持つ証明書がどこにあるか確認する。Blender内蔵のPythonを起動させて
>>> import certifi
>>> certifi.where()
とするとその場所が帰ってきます。macOSではこんな感じらしい。 '/Users/[userName]/.local/lib/python3.10/site-packages/certifi/cacert.pem'
この場所を ~/.zshrc に
export SSL_CERT_FILE=/Users/[userName]/.local/lib/python3.10/site-packages/certifi/cacert.pem
って一行を加えてパスを通しておく。
以上をした結果、.commandファイル経由でBlenderを起動する環境を作っているうちでは動くようになりました。(直接アプリアイコンをダブルクリックではダメだったっぽいのでどうしたもんか。まあ自分環境ではこれでいいのでいいや。)
ポイントをグリッド状に発生させる
グリッド状にポイントを発生させるのはこんなことで良いのかな、というツリー。
Pointsノードで100個のポイントを発生させて、それを10x10のグリッド状に並べてます。これは正方形だからXとY方向に同じ数を入れているけど、その乗数が100になる違う値をそれぞれに入れてやれば長方形が出来上がりますね。ってな感じでまだこんなことやってて進歩がないわたくし。
キーフレームをフレームにスナップさせない
Blenderでアニメーションの尺を半分のフレーム数にしたいって時、タイムラインで単純にスケールさせたんですけどね、あれ?キーフレームの数が減ったぞ?ってなりました。つまりサブフレームにキーフレームは移動せず、整数値のフレーム数のところにキーフレームが全部移動しちゃって、見た目上、キーフレームの数が減ってしまってたわけですけど、それはイヤンて時の対処方法。(同一フレームに複数キーフレームが存在しているのか、一つを残して他が消えたのかは未確認)
タイムライン上のキーフレームの時間軸方向の移動の取り扱いにはこれだけのオプションがあって、そこから No Auto-Snap を選ぶでした。
デフォルトはNearest Frameになっているから、たぶん四捨五入したフレーム数のところにスナップしているんでしょう。スナップのオプションを適切に選ぶことで、サブフレームにもキーフレームが移動できます。このオプションはドープシートとグラフエディタにある感じでしょうか。
Blenderでアニメーション要素を触ることがほぼないもので、アニメーション周りのエディタがホント謎です。勉強しませんと。
余談ながら、カメラのバッググラウンドイメージに動画を指定するとき、Background SourceをMovie Clipにした結果、時間軸に対するオプションがねぇなって思っていたのだけど、それが欲しい場合はImage側で動画を選択すると、少なくとも動画が走り出すタイムラインのフレーム数の指定(Start)と動画の頭のフレーム(Offset)の指定はできるようになることを知りました。
フレームレートを変えたいって時(60fpsのシーンに30fpsの動画を敷いた時とか)はどうすんだろうと思いますけど、少しだけ制限が解除された気分になりました。