日々適当
hibitekitou

Blenderでの操作の基本的なところ 7

cg |2019-09-20

Blenderのマテリアル

3DCGソフトではオブジェクトとマテリアルは別々に存在していて、マテリアルをオブジェクトに適用するとオブジェクトにそのマテリアルの質感がつくというのは割と一般的なんじゃないかと思いますけど、Blenderはオブジェクトの面に適用することになるようです。オブジェクトそのものにマテリアルを持たせる場合、それを構成しているメッシュの面全体にマテリアルを適用するということの模様。

オブジェクトはマテリアルスロットを持ち、そこからマテリアルとリンクされます。だから下図のように新規で作成されたオブジェクトにはマテリアルが存在せず、マテリアルを持たせるためにまずマテリアルスロットを追加し、そこに既存のマテリアルをリンクさせるか新規に作成したマテリアルをリンクさせるかという考え方になる様子。

既存のマテリアルは使い回しができるということが重要です。ということで、複数のオブジェクトでマテリアルを共有している時、そのオブジェクトたちのうちある一つのマテリアルを変更したらその他のマテリアルも同様に変更されるのは自明です。
あるオブジェクトに適用されている既存のマテリアルによる質感をちょっとだけ変えたいという場合、それが適用されている他のオブジェクトに影響を与えないために、マテリアルを複製してから値をいじることになるようです。

まだこんな基礎をうろうろしているw

コメント ( 0 )|Trackback ( 0 )

Viz Artist 4.0 がリリースされたらしい

cg |2019-08-29

まぁまだフリー版は出てないし、出る予定があるかもわからないので、触れることが今後あるのかはわかりませんが、ドキュメントが見れるので眺めています。

Viz Artist User Guide - Viz Artist and Engine

いろいろ興味深いことが書かれていますね。Viz 4の最大の目玉はReality Fusion Pipelineっていう新しいレンダリングパイプラインですけど、結果としてViz 3以前とは考え方がだいぶ違うことが真っ先に記されています。またまだ実装されていない機能もいくつかある模様。
それにしても嬉しいのはポストプロセスでのエフェクトがサポートされたことでしょう。ブルーム、DOF、スクリーンスペースリフレクション、トーンマッピングがこれにより可能となるようです。この辺の制御をレンダーグラフエディタっていう新しいノードベースのエディタで行うのでしょうか。ちょっとよく分かりません。
そして、ついに実装されたPBR Materialです。例でSubstance Painterで作成されたテクスチャ素材を使用していますな。3.xで存在したSubstance Matarialを読み込むプラグインも4.0では健在ですけど、Substance Painterで作成した素材をプラグイン無しでダイレクトに読み込め活用できるようになるのはとてもありがたい。
PBRはIBLが大事ですけど、一応PBR的なことができていたViz 3.xのSubstance Plug-inにおける環境マップ用に受けられるテクスチャが8bitというクソな仕様を脱し(新しい3.x付属のプラグインには触ってないのでもしかし荒状況は変わっているかもだけど、16bit画像には対応してないのは変わってないと思うので…)、16bitテクスチャをちゃんと使用できるようになっているようです。
で、Viz 3.xまでは無かったライトオブジェクトというものが追加されました。オブジェクトとしてシーンにライトを配置するという、昨今のCG環境での普通の環境に進化しておりますw でもって影も落とせますけど、パラメータの考え方はUnityなんかのと同じような感じすかね。ただ、オブジェクトが影を発生させたり受ける場合にはキャスター、レシーバの設定をオブジェクトごとにしないといけない模様。この辺の考え方はViz 3.xと変化がないということになります。まぁ重くなりますしねぇ。
GIについてはViz 3.9以降のものの改良版ということです。使ったことがないので、演算速度がどんなもんなのか気になりますな。

とはいえ、従来のViz 3.xの「このレベルのことしか表現できないけど、その代わりめっちゃ簡単だよ」ってところと比較してだいぶ複雑になることが予想されます。いろいろと覚えなおしたり新規に学ばねばならない範囲が広そうで、移行には相応の労力が必要そうですね。

ん?スクリプトはVBの構文のままですか。まぁ学習コストが低くなんでいいけど…

コメント ( 0 )|Trackback ( 0 )

静止画に対するカメラマッチ

cg |2019-08-17

fSpyってオープンソースのツールがあるようです。

fSpy

で、そのデータをインポートするためのBlenderのAddonが公式にリリースされています。

fSpy-Blender[GitHub]

Addonのインストール手順、使用方法が書かれているページは こちら[GitHub]。

軽く使ってみました。
非常に簡単な印象で、写真をドラッグ&ドロップでアプリケーションのウインドウに放り込んだら、あとはxyzの三軸のうちの二軸に平行な線を2本ずつ引っ張ってやるだけです。その他細かい設定もいくつかありますけど(引っ張った線がプラス向きかマイナス向きかとか、距離を参照するラインの長さを指定したりとか、カメラのセンサーの中心が画像のどこに一致するかを指定したりとか(通常これは画面中央)、原点位置を指定したりとか)、まぁまぁシンプルかと思います。なを各ポイント位置を設定するとき、Shiftキーを押しながらドラッグするとそのポイント中心を拡大した状態で作業ができるので、より精密に設定するときにはそうすべきですね。

そうして設定したらFile→Saveで保存すると、拡張子 fspy のファイルが出来上がりました。これをBlenderに読み込みます。

カメラが作られ、pSpyで計測された設定がそれに対して行われ、かつ Background Images も設定された状態になりました。

個人的にはMODOに同様の機能があるからそっちでやってもいいのですけど、Blenderにデータを持ち込むならこっちが手軽でいいかもしれないと思ったので、おぼえておくこととしましょう。

コメント ( 0 )|Trackback ( 0 )

Google Earth Studio をちょっと触ってみた

cg |2019-08-09

Google Earth Studio

今頃?って感じですけど、Safariで動かないってこともあり、申請はしたけど放置しておりました。
Google Earth自体はプロ版をダウンロードしてスタンドアロンのアプリとして利用可能だけど、フライスルーの映像を作成するにはかなり使いづらいと言わざる得なかったところに、カメラアニメーションのためのGUIを乗っけたWebアプリとして登場して一時期話題になっていました。

実際触ってみるとなかなかよくできています。カメラワークを、3DアプリとかAfterEffectsのようなソフトを触っている人なら、かなり直感的につけられるような気がしますね。

Google Earth Studio Test Movie

AEへのカメラのエクスポートもできるようなので、レンダリングした画像にさらに一味乗せることも可能である、と。

もちろん、Google Earth Studio内である程度の要素なら加えることが可能っぽいです。

その上でレンダリングを行うわけですが、これはローカルPCのマシンパワーを使うんでしょうね。とはいえ、CPUをフルに使っちゃうということもないので、裏でTwitterでも見ながらレンダリング終了を待つということは可能。もっともMac版では、他のアプリを全画面にして使っちゃうと(アクティブにしちゃうと)レンダリングが止まっちゃうようでした。

そうして出力したムービーが上の動画です。

問題はライセンスですね。せっかく作っても公開できないんじゃ価値が半減です。ニュースや学術調査、教育と非営利目的では無料で利用できるようです。問題は商用利用で、例えばバラエティ番組で日本列島から山中の一軒家に突っ込んでいくような動画が必要になったときに利用できるのか。おそらくテレビ局はGoogle Earthの利用に関してGoogleと契約を結んでいるでしょうから、Google Earthを使っていいよってなっているのなら使えるんじゃないかと思うのだけど、それを納品するところにちゃんと確認をしないと不味そうです。少なくともフリーの人が自分の責任でテレビ番組とかに納品するなんてことは危険そうだなぁという気はしますが、さてさて。

ユーチューバーが自分の番組のために作成した時とかどうなんだろうなぁ(これは商用って括りなのか?)

コメント ( 0 )|Trackback ( 0 )

Blenderでの操作の基本的なところ 6

cg |2019-08-03

Blenderでシーン内の構造を俯瞰する仕組みとして Outliner がありますが、ちょっとわかりにくかった。
Blenderを起動した時のデフォルトの画面は、Scene Collectionの子供にCllectionがあり、その中に Camera, Cube, Light が存在している、ように見えます。

単純にMayaにおけるOutliner, SoftimageにおけるExplorerのScene_Rootからの階層が表示されるモードなのかなぁって思っていたのだけど、ドラッグ&ドロップによる親子関係の構築ができないじゃありませんか。

この画面は View Layer を表示している画面、ということでございました。View Layerはレンダリングの単位として考える模様。SoftimageにおけるPassの編集画面といったところでしょうか。
とはいえ、よくわからんので一つずつ調べてみたいと思います。

blendファイル

Blenderが生成するファイルは.blendって拡張子がついていますが、この中身をリスト化して表示する機能を持つものが Outliner ということになります。このファイル内はデータベースになっているそうです。

コレクションとシーンとオブジェクト

そのblendファイル内にシーンが格納されているコレクションがあるようです。それとは別にオブジェクトを格納しているコレクションがあります。そのコレクション内のオブジェクトをシーンは参照しているという形になるようです。
blendファイル内の全構造を俯瞰しようとしたら、Outliner で Blender File を選択すると見ることができるようです。

このうち、Sceneのコレクション Scene Collection に所属する連中を表示するのが Scene を選ぶことで表示されるモードということになるのでしょうか。

この画面の中ではドラッグ&ドロップで親子関係をいじることができました。シーン内の階層構造を管理したいという時にはこの画面が一番しっくりくるような感じです。
ちなみに、一つのblendファイル内に複数のシーンを持たせることが可能の模様で、興味深い使い方ができそうです。

グループ機能としてのコレクション

で、blendファイルにデフォルトで用意されるコレクションのほかに、シーン管理において、オブジェクトをまとめるグループとしての機能を持つコレクションを作成することができます。これはScene Collectionの子供として作成され(デフォルトで一つ存在し、シーン内の既存のカメラやライト、キューブはとりあえずそこに所属する)、一つのオブジェクトは複数のコレクションに所属させることができるというわけで、Softimageのグループに近い概念で取り扱えるのかもしれません。

View Layer

ビューレイヤーはレンダーレイヤーと過去呼ばれていたものが機能を拡張してリネームしたものということです。

複数のビューレイヤーを作成可能で、それぞれのビューレイヤーにはコレクション単位での所属・非所属を設定し、ビューレイヤーごとにレンダリングするパスを設定できる模様。

ビューレイヤーごとの出力ファイルの設定をいじるにはどうすんのとか疑問は多々あるけど、とりあえずモデリング時とかは Outliner を Scene の状態で使うのが良さそうかなという結論を得て、とりあえずこれぐらいにしておいてやることにします。

コメント ( 0 )|Trackback ( 0 )

Blenderでの操作の基本的なところ 5

cg |2019-07-20

頂点同士をエッジで結ぶ

既存の頂点を二つから複数選択し、その頂点間をエッジで結ぶ場合、Vertexメニューの中にある Connect系のコマンドを利用する。

右クリックからでも起動しますね。

Connect Vertex Path は選択した二点の間をエッジで結ぶようです。

Connect Vertex Pairs はあるポリゴンの所属する隣り合っていない頂点を選択するとその間をエッジで結んでくれます。

多角形ポリゴンの場合、複数の頂点を選択しても起動して、接続のルールはなんとなく同一ポリゴン内の一番近い頂点同士を結ぶ雰囲気ですかね。

ちなみにこの二つのコマンドの上にある New Edge/Face from Vertices は選択した頂点からなる面を作成するものでした。2点選択だとエッジが出来上がるのかな? この辺りはBlenderのショートカットではFみたいなのだけど、Industry Compatible では現状、割り振られていません。

面・エッジを分割する

頂点やエッジ、面を選択して Vertex / Edge / Face メニューのどれにもある Subdivideコマンドは面やエッジを分割して新たな頂点やエッジを生成します。右クリックからでも起動します。
隣り合った頂点の場合はそれが構成するエッジを指定した数だけ等間隔に分割します。3つ以上の頂点を選択した場合、それらで構成されるエッジを選択してSubdivadeを実行したのと同じ結果になる模様。
エッジの場合、選択したエッジを等間隔に分割します。ポリゴンを共有した複数のエッジを選択した場合、それぞれのエッジを指定した数だけ分割して、出来上がった頂点同士を新たなエッジで接続します。

上図はPlaneのエッジ3つを選択してコマンド実行し、分割数を4にした結果。エッジの選択数を4本にするとすれはポリゴンを選択したのと同じ状態なので、ポリゴンを選択してのSubdivideと同じ結果になるようです。

Subdivideのオプションに Quad Corner Type ってポップアップがありますが、この選択でエッジの貼られ方が変わってきます。いい感じのを選びましょう,といったところかな。

コメント ( 0 )|Trackback ( 0 )

Blender 2.8 RC

cg |2019-07-16

先週末に 2.8 Release Candidate が出たので喜んで落としたのだけど、あれ?ツールバーが無いよ、設定項目が出てこない、廃止されたの?バグ?って困って、引き続きベータ版を使っておりました。もっともこれは本当に狭い範囲の人に起こった問題なのだとは思うけど(でなきゃ、Blender 2.8 RCを落としたって人たちがすかさず苦情をあげているはずだけど見当たらなかったし)。しかし今日新たに落としてみたら、タイムスタンプが変わっていたので(バグってる?ってのが7/12で、今日落としたのが7/15)期待に胸を膨らませてみたら、

ちゃんと治ってました。ツールバーが表示されないわ、設定画面のポップアップメニューに何もリストされてないわって状態だったのがベータ版と同じに戻りました。

これを確認するために設定ファイルを ~/Library/Application Support/Blender ごと捨てちゃってたんで、改めて設定をし治そうとした時、カメラのズーム時のマウスを動かす方向を逆にしていたのを思い出しました。

個人的に、こちらの設定の方がしっくりきます。
そんな与太話。

コメント ( 2 )|Trackback ( 0 )

Blenderでの操作の基本的なところ 4

cg |2019-07-14

シェーディングを滑らかに

シェーディング時の法線を補完して隣り合ったポリゴンを滑らかに表示させる設定ですね。
Blenderのプリミティブのオブジェクトは下図の左側の状態でカクカクっとして読み込まれるけど、一般的には右側のような状態になってほしい、ことの方が多いと思います。

手順としてはまずはこのオブジェクトはスムーズにシェーディングさせるよって設定をして

その上でそのオブジェクトの隣り合ったポリゴンの角度が何度以上なら滑らかに表示するよ、って設定をしてやる。

このコマンドはエディットモードのFaceメニューにもあり、オブジェクトの一部のポリゴンだけをスムースにしたりしなかったりといった事も可能、という事らしいです。

ポリゴンにザクザクエッジを引く(でもこのやり方ではなさそうな…)

ナイフツールを使うそうです。僕が使ってきたソフトでナイフというと二点を指定するとその直線で対象オブジェクトをぶった切るって機能だったので意表をつかれました。
ショートカットはK。Blenderの伝統的なショートカットと同じの模様。

ザクザクと点を打ってエッジを引いていく際、

  1. 既存の頂点からエッジを引っ張ることができる/既存の頂点にエッジ伸ばすことができる→既存のポイントにスナップできないといけない
  2. 目標のエッジ上の中点にポイントを打つことができる
  3. 既存のエッジに垂直のエッジを引くことができる

ぐらいができればいいですかね。

  1. 1点目はなんとなく目標点の上から始めれて2点目以降は頑張って目標点の近くでクリックするですかね。ただし既存の頂点とほぼ同じ位置にもう一点打たれるという状態になる模様。なので後から結合してやる必要がありそう。ちゃんと既存の頂点位置から引くことができれば頂点は増えないみたい。オブジェクトの外でクリックしてから一点目をクリックする感じかね。
  2. Cntrolキーを押しながらだとエッジの中点に打ってくれる模様。
  3. Cキー押してやるとビューに対して水平・垂直もしくはそこから45度のエッジを引けるということで、しかし垂線ではない。その機能はなさそうですかね?

選択したコンポーネントだけを対象とする、隠面も対象とするといったオプションはツールオプションに該当のチェックボックスがありました。

しかし、その動作を掴みきれていません。

前述の通り、既存の頂点から始めるということが出来ないようなので、目的には合致していないのかもしれないと思っています。

この辺のツールの動作感触はSoftimageが最高だなって思うです。

ナイフって名前がつくツールで、LightwaveやMODOのドリル的な機能の Knife Project ってコマンドがありました。あるカーブを投影したエッジをメッシュ上に引くって機能ですね。
下図はシリンダーとカーブをオブジェクトモードでカーブ、シリンダーの順で選択した状態です。投影元のカーブ、投影先のオブジェクトの順で選択という順序ですね。カーブは複数あってもOK。

で、コマンド実行。エディットモードに入り、Mesh→Knife Project を実行すると、

ビューでカーブを投影したエッジがシリンダー上に出来上がります。エディットモードに入らないとコマンドが無いのはどんな意図なんだろうか…

オプションで Cut throughtにチェックを入れると隠面もぶった切りますね。

ビューから投影だからうまく投影面をど正面に捉えたアングルにビューを持っていかないと意図した形に持っていけないなんてことも多そうですけど、それは今後の課題ということで。

コメント ( 0 )|Trackback ( 0 )

Blenderでの操作の基本的なところ 3

cg |2019-07-11

オブジェクトのローカルのセンター(オブジェクト原点)を設定

コマンドとしては Set Origin にまとまっているようです。

ローカルの原点を、ジオメトリの中心・3Dカーソル位置・重心に移動させることができるコマンドということのようですね。

オブジェクトの結合と分割

結合は複数オブジェクトを選択して、Object→Join

分割は分割したいメッシュを選択して、Mesh→Separate→Selection すか。右クリックでも実行できますね。By MaterialとBy Loose Partsってオプションもありますが、前者はマテリアルごと、後者はポリゴンアイランドごとに分割されるでいいかな?

回転中心

オブジェクトやコンポーネントを回転させる時の中心はピボットポイントで指定する模様。

バウンディングボックス・3Dカーソル・それぞれの原点・中点・最後に選択したやつの原点、を選ぶことができる。一番下の Only Origins はオブジェクトの原点だけが回転中心周りを回るようにする設定で、これをオンにすると観覧車みたいなことができる。
回転中心を任意に指定したい場合には3Dカーソルをピボットにするように設定して、3Dカーソルを適切な位置関係に持っていくのでしょうか。

そんな3Dカーソルを動かすのに便利な機能が2.8から加わったのだそうです。

カーソルのOrientationのポップアップからGeometryを選ぶと、クリックした面(エッジもかな?)にカーソルが移動し、かつ向きもそれに揃うので、ある面の垂直方向に動かすとかが簡単にできるようになったということです。

コメント ( 0 )|Trackback ( 0 )

アセットをどんなサイズで作るのか

cg |2019-07-11

UnityとBlenderの話です。

SoftimageはSI単位系とかは内部で持っておらず、内部単位を現実世界のメートルにするのかセンチメートルにするのかミリメートルにするのか尺にするのか、そんな風に自分の中で決めて制作をしておりました。シミュレーションの結果を適切に出すために最適なサイズの決め方とかはありましたがね。
Unityもそれは同様みたいです。1Unityユニットってマニュアルには書かれています。
現実世界の単位系の中で制作を進められるソフトも多いですね。UnityのマニュアルによるとMaxはインチが基準でMayaはセンチメートルだそうです。
そして1Unityユニットは1mとして作ることをUnityは推奨しているそうです。

Blenderの場合、デフォルトではメートル単位で運用されるようになっているようです(Unit SystemがMetric、LengthがMetersになってる)。

それで Unit Scaleの値を変えると下図のように同じオブジェクトなのにUnit Scaleに応じて大きさが変化するみたいですね。

とはいえ、内部的にはBlenderユニット単位で値は保持されているようで、BlenderでデフォルトのCubeを出した時、それは2 Blenderユニット四方のサイズということになります。で、LengthをMetersにすると一辺は2mで、Millimetersにしてもそれは変わりません。そのCubeを2ミリメートル四方として扱いたないならUnit Scaleを0.001にする必要があります。ってことで大事なのはUnit Scaleってことっすな。

そうやって、1Blenderユニットを1mとして作った1m四方のキューブを用意しました。これをFBX出しします。

Apply Scalingsのところを変えると、Unityに読み込んだ時にScaleに入る値が変わってきます。

All Local(左)とAll FBX(右)の二種類を試しています。ネットを見ると対UnityにはAll FBXを使用しろとありますね。All Localだと一見サイズは同じに見えますがスケール値に100が入っちゃってます。ちなみに同じfbxファイルをMODOに読み込んでもスケール値は100(10000%)となります。

ってことはAll Localの場合、Blenderが「このオブジェクトは1ユニット四方(サイズは1m四方)だよ」って言った時に、けれどもFBXデフォルトの1ユニットは1cmだから100倍のスケール値を持たせて保持しましょうとなるのかね。

一方でAll FBXは、Blender側で1ユニット1mにしてるからFBX側もそうしてねってことでしょうか?

で、Z-upのBlenderとY-upのUnityとでポーズの整合性を取るためには、Unity側でどうしてもX軸に90度の回転を入れないといけないです。しかも -89.98 度って値が入ってる。なぜ?
ということで、2.8ベータ版には実験的にそれを補正するオプションがついていて、それをオンにすること前提で、結果的にFBX書き出しでは以下のようにすれば良さそうです。

これで意図したポーズでSRTの値が全部デフォルト値になってくれました(ポジション・回転は全部ゼロ、スケールは1)。階層が複雑になった時、例えばキャラクター系をやった時にこの実験的に搭載された機能がちゃんと動作するかは分かりませんが、単純なものならこれで良さそうです。

コメント ( 0 )|Trackback ( 0 )
« 前ページ・