Starlight Ensign

Composite Nodeで横一直線に光るエフェクト

flash

こんな感じになるやつ.RenderLayerのPassesでEmitにチェックを入れて,Emitを設定した表面材質を取り出す.それをGlareフィルターに突っ込んで,横に引き伸ばす.Fade値を1に近づけるほど,無限長の直線に近づくようだ.

同じようなセッティングで,Streaksを4つに増やせば十字に光るようになる.Angle Offを45度に設定すれば,X字に光るはずだ.

viewport設定とメディアクエリによるレスポンシブデザイン

viewportを設定し,スマホやタブレットではタッチに最適化した要素が表示されるようにサイトを修正した.判定基準はユーザーエージェントにおけるデバイス情報ではなく「画面サイズが512px以下か否か」なので,PCでも横幅を狭くすると表示を試すことができる.デバイス情報を用いないことで,新デバイスが登場する度にきちんと表示されるか心配になる必要はない.viwport設定でwidth=device-widthと設定してあるので,大抵のスマホ端末では幅が512px以下に設定されるので,適切に誘導されるはずだ.NexusやKindleでは幅が500px以上あるので,PCサイトと同様の見た目になるはず.

もともとこのサイトはdiv要素やp要素にclassとidを大量に付与して,CSSで見た目を制御していた.そのため,スマホ用サイトを新たに立ち上げるよりは,CSSにメディアクエリを使って制御したほうが楽だ.主に弄ったのは

  • !important 設定によるリンク要素の強制ボタン化
  • floatを設定した要素の幅をそれぞれ100%にすることでサイドバーを下に移動
  • 画面幅が狭い時はトップメニューをfloat化してボタン化することで押しやすく

といったところ.トップメニューは上下のボーダーを上書きした上で,#topMenu ul li で基本的な設定を施し,#topMenu ul li:nth-child(2n)で偶数番目のボタンに対してfloat:right;を設定してある.基礎的なことを組み合わせるだけでも,だいぶわかりやすいサイトは作れるとわかったので良かった.

MMDモーションファイル(VMD)をBlenderの自作モデルに適応するまで

タイトルの通りのことを実現できた.この効果は思っていたより絶大で,MMD用モーションデータというライブラリ(しかも,使われることが前提になっていて写真トレス問題みたいなことが起こりづらいので気軽に試せる!)がBlenderリソースとして使えるようになる.これはポージングのテストで,FreeStyleと組み合わせて使っている.

57s

具体的な方法は続きに書いた.

続きを読む

Blender+FreeStyleとSmokeの組み合わせ

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

27

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

試しにSmokeと普通の物体を組み合わせた状態でレンダリングしてみるとこうなる.

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

KP
しかもなんか色々と変.

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

ExG

ex
右下部分以外の線が消えてしまった.

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

RLl
こんな感じ.

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

CN

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

1

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

27s

BlenderのCyclesで草原

CyclesでHairをGPUレンダリングできるようになったので,草原の素を作ってみた.

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

くさわけ
そういえば全然弄ってなかったダイナミックペイントと組み合わせて,草を分け入る動画を試作してみる.WeightマップにCubeが通り過ぎたところをペイントして,そのWeight情報を基にHairの長さを決定しているだけだ.非常に簡単.

ただ,進行方向に草をなぎ倒すのは少々面倒かもしれない.物理演算でやるのは無駄に重いだろうし,望んだ結果を得るのが逆に難しいと思う.一番現実的なのは,

  • 物体が通った後の草をすべて刈り取る(WeightにDynamic Paintして,HairのLengthで反映)
  • 新たに通過した後の場所に草を植えこむ

の手順だろうか… この手順なら,植える方の草の向きはエミッターの設定次第でどうとでもなるだろう.