3DCGで何をどう作るか考え中

ZbrushとBlenderの使い方、ヒント、コツなど。たまにZbrushプラグイン開発も。

ZbrushとBlenderの連携強化(Blenderアドオン開発中)

(約 5,800文字の記事です。)

f:id:yamato-tsukasa:20210807015617j:plain

ここしばらく集中的にBlenderアドオンの体当たり開発中。今日はそんな日記。結論を言うと、ZbrushオンリーのユーザーはBlenderのリグポージングを学び始める時期が来ている。

対象読者はZbrushユーザー、Blenderユーザーです。

Blenderアドオン開発に挑戦中

挑戦中と言っても、試行錯誤していて、実はベータ版はできている。

f:id:yamato-tsukasa:20210806021339p:plain

最初の頃は本当に、本当に、わけが分からなかった。それをどうやって実現するの?と。

だから色んな情報収集と、それへの投資と、それに伴う英語書籍の読書もした。あとは体当たりでBlenderのScriptモードと格闘した。本当に、本当に、大変だった。さらにはPythonも知らなかったので駆け足で学んだ。こちらについては都度ネットで検索すればいい情報がごろごろ出てくるので、必要に応じて補充だ。

とはいえAmazonプライム会員なら無料で読めるこちらをオススメする。

なお私は全くのプログラミングのド素人ではないので、ある程度は過去の共通する知識が使える。なので足りない部分を補えばいいだけ。いつの時代も知識の獲得への欲求は失いたくはないものである。

調べる時間が6割以上

f:id:yamato-tsukasa:20210806032523p:plain

苦労したのはBlender APIの癖だ。リファレンスは全く素人には歯が立たない。謎の辞書である。もちろんScriptウィンドウ内の左下のInfoからコピーで得られるというような低レベルの話じゃない。そんなの簡単だ。コピペで実装できる。そういうモノではない部分の実装が大変だ。調べまくる。

調べている時間が6割、実装のテストに3割、成功した後の後処理に1割。こんな感じで時間がどんどんと流れていく。あっという間に夜になる。成果物はちょっとだけ。そんな日々が2週間以上過ぎた気がする。

Blenderアドオン開発でできること、できないこと

Blenderアドオン開発でできること、できないことが分かってきた。最初のイメージではPythonを使えば何でもできると思っていたが、そうでもなかった。まずBlender の癖が強い。そこの制約を受ける部分がかなり大きい。Pythonでできることは内部処理だけであって、インターフェース周りはほぼBlender APIの制約を受ける。だから「ダイアログボックスを出してYES/NOさせて」などはできない。BlenderにはそんなUIがないのだ。せいぜいINFO, ERROR系の「画面下に出るメッセージ」くらいだろう。

エラー処理に関しても、ちょっと面倒臭い。面倒臭すぎるので、今はまだ実装していない。強いて言えば、ボタンのアクティブ・非アクティブの条件にエラー処理的な内容を仕込むことで「ボタンを押すことができない」ようにできる。入り口から絞るエラー処理だ。とりあえずこれで実装を進めている。

ボタンを押せればまともに動き、ボタンが押せない状況では条件が揃っていないってことだな。

f:id:yamato-tsukasa:20210806033303p:plain

オブジェクト・ポーズ・ウェイトペイントモードの癖

まずは動いて自分で使いたい。これを目指す。エラー処理は後からでいい。とはいえ、ここでもBlenderの癖に泣くことになる。各モードで色々と挙動が異なる。だから最初は想定していなかったエラーが次々と出てくる。それに対しては得た知恵とIF文で対処している。美しいコードとは言えない。だがまともに動けばそれでいい。

そうやって体当たりで作って、使ってみて、バグが出る度にエラー処理をして組み立てている。今日の段階で、体感では8割はエラー処理ができてまともに動く実装になっている。

Zbrushでスカルプト、Blenderで「それ以外の全部」

Zbrushのスカルプト機能は強力だ。特にそのUI周りの使い易さが優れている。これはBlenderのスカルプトモードでは全く歯が立たない。歴史の違いだ。それだけZbrushのUIは洗練されている。

勘違いしないで欲しい。Zbrushの操作そのものは決して分かり易くはない。だが慣れると替えが効かない快適さがある。マスク・部分非表示・ポリグループ選択や表示の切り替え、他のサブツールの半透明表示、などなど。これをBlenderのスカルプトモードでやろうと思うと、かなりイライラする。そして一部は実現できていない。

もちろんZbrush初心者にとってはその使い分けの学習段階でかなりイライラすると思うが、慣れれば快適

だがBlenderでは慣れても手数が多すぎてイライラが解消しない。この違いは大きい。

Blenderでリグ入れ、Zbrushでスカルプトの往復

これが本当の目的だ。リグ入れポージングはBlenderで行い、細部はZbrushでスカルプトし、ポーズ変更はBlenderに戻してリグ変形。これをぐるぐる回したい。一応、手間暇かければ現状でもできている。特にGoBアシストツールV3を使って快適に往復させることができている。

GoBアシストツールV3(メッシュをZbrushとBlenderで往復させるWindows専用プラグイン) - YAMATO Tools - BOOTH

だが現状では「楽に回避できない制約」がかなりある。今回はそれをBlenderアドオンによって「数クリック」で解消しようと挑戦している。もちろん現状でも手間暇かければ実現可能だ。だが本当に手数が多い。その手順は機械的だ。何度も繰り返すことになる。だったらアドオンで自動実行させればいい。数クリックで完成だ。そのためにBlenderのアドオン開発に挑戦している。

ZbrushユーザーはBlenderを学んでおくといい

Zbrushオンリーにこだわる必要はない。すでにRetopoflowが使えるだけでもZbrush+Blender+GoBアドオンの価値が十分ある。

トポロジ制御が自由になった「その向こう側」にあるもの - 3DCGで何をどう作るか考え中

逆にZbrushオンリーでリトポなんてあり得ない。できなくはないが、私は絶対にやりたくない。非効率だからだ。効率を無視できる人は好きにすればいい。

だが現実問題、時間も寿命も納期も限られている。効率を追求しない方がおかしい。

既に実現できている部分もあるし、遠くない将来、より快適にZbrushとBlenderとの連携がスムーズになる。今までできなかったことがBlenderアドオンのボタン2, 3クリックになる日が来る。そうなると一気に「BlenderとZbrushとの使い分けと、適材適所による作業の効率化」が期待できる。

Blenderの教科書は巷に既にたくさんある。2.9系も出ているが、2.8系で学んで問題ない。さほど違いはない。本屋で立ち読みして気に入ったものを買えばいい。

気を付けたいのは2.79系の古い本だ。初心者には全く向かない(玄人には学習材料になり得るが……)。最低でも2.8系でBlenderの基礎をざっと押えればいい。

本選びは四の五の言わずに近くの本屋に出向いて立ち読みすべし。ページをめくった瞬間に「合う・合わない」が分かるから。

最初はG, R, Sキーを押さないと操作すらできないことに面食らったが、2.8系ではギズモが表示されるし、慣れればGRSキーは便利。私もたまにZbrush操作中にRキーを押して「回らない」と思うときがある(笑)

なじめばBlenderも快適だ。そしてZbrushではできないことやZbrushでは極めて面倒な作業をBlenderであっさりできる場合もある。だから両者の使い分けが重要なのだ。Zbrushのみにこだわるメリットなどない。

いずれは一般公開したい

f:id:yamato-tsukasa:20210806030031p:plain

今はとりあえず、すぐに使いたい「Zbrushとの連携特化型」のアドオンを開発中だが、いずれは汎用的な機能だけをコンパクトにして一般公開したいと思っている。まだまだ「できること、できないこと、実装方法」の模索&体当たり実験中だが、だんだんとやれることが増えてきた。同時にBlenderで自分がやりたいことを極限まで効率化してBlenderを使い倒せるという自信も付いてきた。機械的な作業はアドオン化してボタン一発にしてしまえばいい。

それがほぼ完璧になったら人に使ってもらえるように工夫してもいいだろう。だがそれは先の話。まだまだ「自分がやりたいことをボタン化できていない」ので、もうしばらく試行錯誤の日々が続きそうだ。

くどいがZbrushユーザーはBlenderに慣れておくといい

やる、やらないは各自の自由だが、間違いなく私はZbrushとBlenderを連携させて使うし、そのためのアドオンを作っている。

私は既にZbrushのプラグインも作れるし、今ならばBlenderのアドオン作れる。両方を連携させようとすると、やれることの自由度が「連携させない場合と比べて」圧倒的に違う。

現時点でZbrushオンリーのユーザーは、さっさとBlenderの教科書を買ってコツコツと1冊こなした方がいい。少なくとも、リグ入れ&ウェイト塗り関連は押えておいた方がいい。いずれもZbrushではできないことだから。そうすれば将来的な可能性にすぐに対応できる。

私はもう、Zbrushでマスク+ギズモでポージングすることはない。Blenderでリグ入れしたものをマウスドラッグでポーズ変更させ、細部の歪みなどをZbrush上でスカルプトして整えるから。以後のポージングの微調整もBlenderからのマウスドラッグで済ます。そうなってもZbrushで彫り込んだ細部は維持されたまま「ポーズだけ」を微調整できるのだ。これがリグポージングの魅力、強みだ。

f:id:yamato-tsukasa:20210806031135p:plain

Zbrushでのサブディビジョン・モデリングでも利用可能。容赦なくポーズ変更可能。当然ながら上位サブディビジョンの細部を保持したままのポーズ変更が実現できている。そうじゃないと役に立たないしね(笑)

f:id:yamato-tsukasa:20210807015617j:plain

こういうことがマウスドラッグ数秒でできるのだ。

しかも1回こっきりではなくて、途中でいつでも何度でもポーズ変更が可能。

仕上げ後のクライアントからの無茶なポーズ変更にも分単位で対応できる

だから適材適所なのだ。ZbrushでできないことがBlenderで簡単にできる。逆にBlenderで簡単にできないことがZbrushで、できる。だからこそ使い分けるのだ。

というわけで、今開発中のアドオンはリグ入れ&ウェイト塗り&ポージングに関する特化型のアドオンだったりします。





今回の創作活動は約1時間30分(累積 約2,518時間)
(745回目のブログ更新)

筆者はAmazonアソシエイト・プログラムに参加しています。(AmazonアソシエイトとはAmazon.co.jpの商品を宣伝し所定の条件を満たすことで紹介料をAmazon様から頂けるという大変ありがたい仕組みのこと。)
以下のリンクを経由してAmazonで何かを買うと購入額の1~3%ほどのお小遣いが私に寄付されます(笑)