blender の箱を消したら

blender を覚えたい蜂砂の発見や操作メモです。オブジェクトの動かし方は覚えたので中級者を目指したい。

グラフィックエディタと連携してテクスチャを描く

そういえば、GIMPって昔より安定したよね

テクスチャを描くときは、UV展開・UVマップのエクスポートをして、その画像をグラフィックエディタで開いて参考にしながら描くか、直接3Dビューポート上で3Dモデルにテクスチャペイントをしていく。 このテクスチャペイントの際に、グラフィックエディタと連携して描くことができるらしいのでメモ。

事前準備として、使うエディタを設定で指定しておく。Windowsに付属するペイントでも動作するけども、編集しづらいしレイヤも使えないので、ここではGIMPを使う。ちなみに、ClipStudio Paintでも動作した。 設定の[File Paths]-[Applications]にある Image Editor にパスを設定する。

f:id:beesand:20200321200732p:plain

ベースのモデルは水色のたまねぎ

まずは、適当にたまねぎっぽいモデルを作ってみた。これにかわいらしく目や口をテクスチャでつけることにする。

f:id:beesand:20200321200751p:plain

テクスチャをつける準備として、マテリアルを割り当てて、Base ColorとしてImage Textureをつなげ、新規に水色のベタ塗り画像を作る。たまねぎといえば水色ですしね。

f:id:beesand:20200321200825p:plain

割り当てたテクスチャを直接ペイントできるようテクスチャペイントモードにする。モードをObject ModeからTexture Paintに変更。

f:id:beesand:20200321200843p:plain

テクスチャペイントモードにすると、プロパティシェルフにテクスチャ系の設定が色々出てくる。その中の、[Options]-[External]を順に開くと、Quick Editというボタンがあらわれる。これがグラフィックエディタとの連携ボタン。深めのところにあるので、使おうと思ったときにどこにあるのかちょっと探しづらい。

f:id:beesand:20200321200914p:plain

そして連携へ クイックエディット!

このボタンをぽちっとすると、設定しておいたグラフィックエディタ(GIMP)が起動して、3Dビューポートで見ていた状態の画像が開く。ビューポートをPerspectiveにしておけばパースのかかった状態になるし、斜めから見れば斜めのまま画像となる。この時、全体的に小さめに開くようなので、多少モデルが見切れるぐらいにするとちょうどよい大きさになる。

f:id:beesand:20200321200945p:plain

ここに、加えたいテクスチャを描いていく。そのまま描くとかくかくの水色のテクスチャ(影付き)が反映されてしまい邪魔になるので、新規レイヤに描いてそのレイヤだけを保存することにする。新規レイヤを作って目と口をつけてみた。

f:id:beesand:20200321200955p:plain

これを上書き保存する。メニューの[ファイル]-[project_edit_xxxx.png に上書きエクスポート]を選ぶ。開いていたファイル名は自動的につけられていたもの。一時的にどこかに保存されているぽい。

f:id:beesand:20200321201015p:plain

Blender上で反映させる

で、Blenderに戻り、プロパティシェルフ ExternalApply を押すともとあったテクスチャに追加で反映される。

f:id:beesand:20200321201025p:plain

UVエディタで開くとこんな感じ。プロジェクションマッピングで作ったUVマップならともかくとして、この形でUVエクスポートしてこの画像を描くのはバランスが難しい。

f:id:beesand:20200321201055p:plain

きれいにできあがった。Quick Editを使えば、ちみつなテクスチャは難しいとしても、3Dペイントで描くよりは使い慣れたグラフィックエディタで直感的に描けるので便利な場合もあるかもしれない。

f:id:beesand:20200321201110g:plain

とここまで描いて、真正面からの絵じゃ面白みがないことに気づく

なので、斜めから見た状態で連携させて描くとどうなるかもためしてみた。

f:id:beesand:20200321201158g:plain

やっぱり、見えてないところはちょっとおかしいことになる。そりゃそうか。でも、どんどん上書きで反映させていけるので、角度を変えて何度も上書きしていけばだんだん1枚のテクスチャが完成していくことになる。この過程はちょっと面白い。

同じウインドウ内でレンダリングする

新しくレンダーウインドウが開く…!?

すっかり書けるTIPSもなくなり更新止まってしまったけど、その間にv2.81が出ました。Denoiseとかの新機能はいろいろ説明サイトや動画が出ているので、まいっかと思って特にとりあげず。

ただ、バージョンあげてみたらどうしても気になったことがひとつあった。レンダリングしたときに、別ウインドウが開く!!

別ウインドウが開く

僕は、1画面で操作してて、別ウインドウが開くと邪魔になってしまうため、同じ画面内に開くようにレンダーの Display ModeImage Editor に設定していた。

ところが、v2.81ではメニューに Display Mode が見当たらない。

設定画面に見つけた Temporary Windows

じゃまだなーこまったなーこわいなーこわいなーと思って探していたら、見つけた。モード設定は Preferences に移動していた。UI変更はてっきり v2.80 で落ち着いたと思っていたのに。

[Edit] - [Preferences]で設定ウインドウを開いたら、見えてるInterfaceタブの、EditorsのエリアにTemporary Windows というサブ項目が追加されている。これを開いて出てくる Rendier in がどこでレンダーするかの設定で、v2.80のDisplay Modeに相当する。

設定画面に Temporary Windows登場

ここから Image Editor を選択したら、前と同じように、同一ウインドウ内でレンダリングがされるように戻った。よかった。

ちなみに、もう1つあるFile Browserでは、v2.81から別ウインドウで開くようになったファイル選択画面を、以前のようにフルスクリーン画面に戻すことができる。こっちはこのままでいいや。

自分好みのワークスペーステンプレートをつくる

ワークスペースを自分好みに変えたい

v2.79 と比べて選びやすくなった(気がする)ワークスペース。デフォルトの General を基本的に使うけど、スクリプトなんてわからないんで Scripting いらないし、余計なのが多い。追加や削除もできるんだけど、なんとなくデフォルトのものをいじるのはイヤ。

Generalのワークスペース構成

で、そもそも [File] > [New] で選ぶこのワークスペースのセットって追加したり削除したりできないんだろうかと思った。

File-New

調べてみると、これはアプリケーションテンプレートという機能らしい。ワークスペースだけでなく、以下のものをセットで構成できる。

  • 起動ファイル(startup.blend)
  • 環境設定(userpref.blend)
  • スプラッシュスクリーン(うまくいかなかった。後述)
  • 起動スクリプト(__init__.py)

既存の環境をいじらずに、こういったセットを「アプリケーション」として他人に配布するためのテンプレート機能らしい。

フォルダ構成を知る

まず、この機能、インストールは blender 上でできるが、アンインストールは直接ファイルを消す必要があるので注意。インストールは直接ファイルを置いてもよい。以下のような構成となっている。

  • blenderのアプリケーション設定ディレクト<APP_DIR>
    • %userprofile%\appdata\Roaming\Blender Foundation\Blender\<バージョン番号>
  • テンプレートインストール先(今回作成される)
    • <APP_DIR>\scripts\startup\bl_app_templates_user\<テンプレート名>
  • ユーザ設定保存先(今回作成される)
    • <APP_DIR>\config\<テンプレート名>

間違って入れてしまった場合ややり直したい場合は、上のディレクトリのうち、テンプレートインストール先とユーザ設定保存先(あれば)を削除すればよい。

テンプレートのファイル達を揃える

テンプレートは、必要なファイルを揃えて、ZIPファイルでかためて、UIでインストールすることになる。ちなみに全てを揃える必要はなく、自分の好きなものだけでOK。

テンプレートの名前のフォルダをどこかに作っておく。今回は、hs_app としてデスクトップにフォルダを作った。

まずは起動ファイル

これは画面を好きな状態にして blend ファイルを作るだけ。もちろん、ワークスペースの状態だけでなく、UIのレイアウトなども保存される。

ちなみに、僕の構成は General を基準に、下のようにした.

  • メインで操作する画面は Layout 用途だけじゃないので Main に名前を変更
  • Modeling は、メイン画面でやれるので削除
  • Sculpting もメイン画面でできるし、スカルプトだけなら別に専用テンプレートが用意されてので削除
  • UV EditingTexture Paintは(そこまで作品作ったことないのもあるけど)だいたい一緒の画面でできそうなので1つにまとめる
  • レンダリング結果はモデリングした画面上で見るので Rendering も不要。
  • スクリプトは書かないので Scripting 削除

新しい自分用テンプレート

すっきり♪

完成したら、startup.blend という名前で hs_app フォルダに保存する。

設定ファイル

設定の一部をテンプレート化できる。変更できるのは、テーマ、アドオン、キーマップ、ビューポートのライティングの4つ。

設定画面

設定を反映した状態で、<APP_DIR>\config\userpref.blend にある設定ファイルを hs_app にコピーする。

スプラッシュスクリーン用画像

マニュアルに記載はあるのだが、うまく反映できなかった…。何が間違ってるのかわからないので、誰か知っている方がいたら教えてください。(2020/1/6追記:v2.81でふと見たら画像が表示されてました。v2.80のバグだったのかな)

一応、仕様だけ書いておくと以下の通り。

  • splash.png : 501x282 の PNG画像
  • splash_2x.png : 1002x564 の PNG画像(高解像度モニタ用)

これも、hs_app フォルダに保存する。

起動スクリプト

設定や画面レイアウトなどだけでなく、起動時にPythonスクリプトを走らせることで、もう少し高度なことができる(らしい)。

僕はスクリプトは書けないので、簡単なものでお試し。違いがすぐわかるようUIが2倍になっちゃうやつ。

import bpy 
def register():
    bpy.context.preferences.view.ui_scale = 2.0

def unregister():
    bpy.context.preferences.view.ui_scale = 1.0

if __name__ == "__main__":
    register()

上記のテキストを、__init__.py という名前で hs_app ディレクトリに保存。register()unregister()という名前の関数が必要らしい。

インストールするのです!

ここまでで、hs_app(アプリケーション名、なんでもOK)というディレクトリに、以下の5つのファイルが保存されている。

  • __init__.py
  • startup.blend
  • userpref.blend
  • splash.png
  • splash_2x.png

これをフォルダごとZIPファイルとして固める。

ZIP!

続いて、blenderを開いて、左上のblenderマークをクリック。メニューが表示されるので、一番下の Install Application Template... を選択する。

インストール

ファイルを選択する画面になるので、上で作った ZIPファイルを選ぶ。

これでインストールされた。実際には、テンプレートインストール先のディレクトリにZIPファイルの中身が展開されているだけ。

この状態で、改めて [File] > [New]を選ぶと・・・

自分のテンプレートが追加されている

Hs Appというのが選べるようになっている!選べば、もちろん先程設定したタブの構成となる。(スプラッシュスクリーンは出ない...)

作成時には hs_app というフォルダ名にしていたが、アンダースコアはスペースに変換されて、それぞれの単語の頭が勝手に大文字になる模様。

無事、自分用のテンプレートができた。

テンプレートからさらに設定を変えると?

この状態で、設定やレイアウトなどを変更して Save Startup File をすると、ユーザ設定保存先に 別に 設定が保存される。なので、Load Factory Settings を選べば、テンプレートの初期状態に戻すことができる。

もちろん、これは別のテンプレートには影響がないので、General2D Animation のような標準で用意されているテンプレートにも影響を与えないので安心。

ちなみに、標準テンプレートはどうもソースにハードコーディングされてるっぽく、消すこともできない(だからこそ安心できるけど)。

起動時にアプリケーションテンプレートを指定する

せっかく作ったテンプレートも、起動時にはいつもの General になってしまって、いちいち [File] > [New] するのもめんどくさい。

起動パラメタ --app-template で作ったテンプレートを指定することで、直接そのテンプレートを開いた状態で起動できる。

blender.exe --app-template <template name>

これで、より自分好みの画面や設定で使うことができるようになった。