FreeStyleの描写とSmokeを組み合わせてみたら,不都合が出てきた.

画像左上のドラム缶的な燃料タンクのところを見ると,そこだけ輪郭線が無いのがわかる.これは,FreeStyleでそのままレンダリングすると,Domainの箱の枠線が描写されてしまうということと絡んだ問題になっている.
試しにSmokeと普通の物体を組み合わせた状態でレンダリングしてみるとこうなる.

この状態だと,Domainの枠線が表示されてしまっている.しかも,透明なオブジェクトとして処理されているわけではないので,向こう側の線は標示されていない.他の物体と貫通させてみると顕著に分かる.

しかもなんか色々と変.
これを防ぐ方法として,FreeStyleのLineSetで除外Groupを設定してそこにDomainを突っ込んでみた.するとこうなる.


右下部分以外の線が消えてしまった.
おそらく,Domainは透明オブジェクトとして設定されているわけではないので,Domainと重なっている部分が描写されずに切れてしまってるためだと思われる.そこで,RenderLayerを二つに分けて,線以外を描写するレンダーレイヤーと線のみを描写するレンダーレイヤーに分け,それぞれのレンダーレイヤーに対応させるレイヤーを分けてみる.

こんな感じ.
そして,それに合わせてCompositeNodeを以下のように組んでみた.

すると,下の様な画像が出力される.

これで期待通りの画像が出力される.レンダリングにかかる時間も,体感ではそこまで伸びた感じはしない.動画作成時にも実用できる方法だと思う.最初の画像にこれまでの方法を適用した画像を示しておこう.

先日のアンドロイドように,ゴーグルを作ってみた.

中々様になっている.
とはいえ,アンドロイドはHUDを見る必要が無いので,こんなの必要ないといえば必要ない.設定上の本来の用途は,表情が変わらないアンドロイドが何を考えてどう行動しているのかを外部表示するための,表示機器である.

こんな感じで.
また,Cyclesの扱いにある程度慣れてきたので,FreeStyleに手を出してみた.輪郭線が出るタイプのレンダラで最も美しく輪郭線が出ると思っているVidroと比較してみると,こんな感じになる.


上がVidroで,下がFreeStyle.どちらもモデルは同じである.
Vidroは何も考えずにきれいな輪郭線を出してくれるが,FreeStyleは色々と調整しないといけない.逆に言えば,調整の余地がかなりあるので習熟すれば使えるんだと思う.現在困っているのは,主に物体同士が貫通してる時に輪郭線を表示してくれないことだ.例えば,Vidroの画像では,側面のサイドスカート部分を見ると,ヒンジと車体の切れ目の部分には輪郭線が引かれている.一方で,FreeStyleのほうは輪郭線が無い.これを踏まえて画像全体を見直すと,こういう貫通パーツ全体に輪郭線が表示されていないのが分かる.
何とかしたいところだけど,FreeStyleの資料ってどこかにないかしら?自分でもいろいろ探ってみようとは思う.

女の子の顔を作っていたのだが,この成果を前作ったアンドロイドに反映することにした.特に,口周りが前よりもリアルになっているのと,鼻の穴を作ったことが大きな変化だろう.あと,目がアニメバランス過ぎたので,0.8倍してみた.これでも実際の人間よりは大き目のはず.
まだ目の周りが微妙に不自然なままなので,微調整が必要.
CyclesでHairをGPUレンダリングできるようになったので,草原の素を作ってみた.

素晴らしい,とてもはやい!

そういえば全然弄ってなかったダイナミックペイントと組み合わせて,草を分け入る動画を試作してみる.WeightマップにCubeが通り過ぎたところをペイントして,そのWeight情報を基にHairの長さを決定しているだけだ.非常に簡単.
ただ,進行方向に草をなぎ倒すのは少々面倒かもしれない.物理演算でやるのは無駄に重いだろうし,望んだ結果を得るのが逆に難しいと思う.一番現実的なのは,
- 物体が通った後の草をすべて刈り取る(WeightにDynamic Paintして,HairのLengthで反映)
- 新たに通過した後の場所に草を植えこむ
の手順だろうか… この手順なら,植える方の草の向きはエミッターの設定次第でどうとでもなるだろう.
今まで使っていたイジェール・ジオメトリック・サンセリフフォントに,大文字を追加した.

これによって,固有名詞や略称を含んだ(つまり大文字を含んだ)文字列も正常に表示できるようになったので,これに合わせてオンライン辞書にイジェール文字による表示機能を付けた.アップロードしてあるフォントファイルを読み込んで表示するので,閲覧者のPCにフォントがインストールされていなくても読める.
次にやろうとしているのは,筆記体フォントの作成と単語の拡充である.単語拡充は永遠の課題として,筆記体の方は形状の策定は終わっている.

こんな感じ.全体的にラテンアルファベットの筆記体よりも折り返し?が多くて書きにくそうだが,昔のドイツ式の筆記体なんかを見ると,これでもやっていけるだろうという気になる.
取り敢えず,足元の地固めは大方済んだ.動詞のアスペクトもそれなりに考えたし,派生の基本的なルールも揃えたので,あとはひたすら造語していくだけだ.まずは大々的な例文が書けるくらいの語彙数には持っていきたい.特に,現在のイジェール語は動詞周りの策定が遅れたせいで,1000語以上あるにもかかわらず動詞が150語程度しかないと言うバランスになっている.基本の動詞はさっさと追加していかないと,文章作成もおぼつかない.
久しぶりにCSSを弄って,デザインを変更した.前は赤と黄色と黒を使ったびびっとなデザインだったけど,モノトーンを基本にしたデザインに更新した.ビビットな色使いは
- 可読性よりも目を引くことを重視する
- 見る時間が短い
の2点を満たしている場合には非常に有効だが,そうでない場合は次第に鬱陶しくなってくる.日常的に見る物に関しては,新聞の様に「侵略的ではない」デザインにすべきだろう.
最近はBlender Game Engineに手を出してる.
というのも,Untyはどうにもとっつきにくい部分があったのよね.自分はプログラムのテクニックや,テクニックの身に付け方をあまり知らないのでCGの側のテクニックで(ある程度速度や柔軟性を犠牲にしても)対応できる方が好ましい.
そこで手を出したのがBGE(Blender Game Engine).これはBlenderに初めから同封されているゲームエンジンで,ノードエディターと似たようなインターフェースを使えば,プログラミング皆無でもゲーム制作が出来る.
何より自分が助かったのは,Blenderでのaction(ムービーの構成要素となる,ひとかたまりの動きのシーケンス)を使って動きの無茶を利かせられるところ,オブジェクト同士の親子関係を動作にもそのまま活かせるところとか.まあ,後者はUnityでもできるんだけどね…

これは中央の陣地を護るタワーディフェンスゲームのひな型を作ろうとしているところ.カメラも砲もインターフェースパネルも親子関係を利用すれば簡単に連動させられるのですこぶる楽.

こっちはSTG.実はこれが最初にBGEで作ったゲーム.疾走感を出すために奥で星を吐き出すオブジェクトが高速回転していて,そこからランダムに星が飛び出して後ろへ飛び去って行くようになっている.親子関係を使うことでかなり楽をしている.
キーボード入力やマウスオーバー,アクション同士のスムーズな合成(ジャンプしながら前進するなど)も最初からBGEの機能として搭載されているので本当に簡単.
ただ,最初にどういうゲームを作りたくて,何を取得して何をするのかという設計をしっかりしておかないと,全体の見通しがものすごく悪くなるので注意が必要.プログラムを使わなくていい反面,すべての状況を俯瞰し難いからだ.
Pythonを使えばもっとすっきり,かつ複雑な事も出来る.なのでPythonが使える人にもおすすめ.