見出し画像

MMD:screen.xでステージに火を放つ

ピコやん歌手音ピコ誕生祭、3日目――

やりたいこと

合わせ鏡エフェクト(ikWorkingWalls)の鏡面にも炎を表示したい。

具体的にはこのように……。

https://www.nicovideo.jp/watch/sm41458842

「合わせ鏡エフェクト」はこちら。
https://seiga.nicovideo.jp/seiga/im9541772
配布ステージ(廃国道沿いのお城みたいな鏡のある部屋)にも同梱しています。

MMDというかMMEで炎のパーティクルといえば例えば「SelfBurning」などがあるんですが、これらのエフェクトで描画されたものはikWorkingWallsの鏡面には描画されないんですよね。
(ちなみに実は今回の動画でもよく見るとAutoLuminousで光らせているランプの光り具合が鏡の中と外で違う)
というわけでこのようにしました。

1.動画をアクセサリ(.x形式ファイル)に投影する

MMDでは「テクスチャに"screen.bmp"を指定した.x形式ファイル」に動画を表示することができます。
くわしいことは「screen.x MMD」で検索して下さい(丸投げ)

1-1.合わせ鏡エフェクトを読み込んでセットアップした状態

MMDステージ「廃国道沿いのお城みたいな鏡のある部屋」

MMEのエフェクト割り当てから不要なもの(壁紙・床のカーペット・ベッドの布団)を非表示にしてあります

メイン側。黒塗り部分はファイルパスです
エフェクト側

余談ですがここで「Mainタブでは表示・WorkingWallRT側では非表示」にしておくと鏡に映らない化生の表現ができます。具体的にはこのように……。

渦音さん a.k.a.渦音ヒト:UTAU音源(中の人はわたしです)。吸血鬼なので鏡に映らない。

1-2.別途作っておいた「焦げ」モデルを読み込む
床と壁紙に焦げ跡をつけています。

動画ではほとんど映らなかったんですが壁紙がやや焼け焦げている
本体とは別のモデル(pmx形式アクセサリ)

1-3.「炎を表示する」用の.x形式アクセサリを読み込んで位置とかを調整

1-4.「炎のアニメーション」の動画を読み込み、MMDのメニューから背景>スクリーン用キャプチャON・モード3(背景AVI)を選択

読み込んだ

1-5.3で読み込んだアクセサリを加算合成にする

加算合成にした

1-6.AutoLuminousを読み込み、MMEのエフェクト割り当てから「AL_EmitterRT」を開いて3のアクセサリを選択、エフェクトを解除する
AutoLuminous

(これはAutoLuminous3の配布動画ですが、最新版はAutoLuminous4です)
ニコニコ動画の動画説明文からリンクされている短縮URLが現在機能しないので、なんとかして生きてるリンクを探してきました
https://onedrive.live.com/?id=EF581C37A4524EDA%21108&cid=EF581C37A4524EDA

該当オブジェクトを右クリックして「解除」
解除した状態。鏡面に写ってる方は変化していませんが……

1-7.ライトとかAutoLuminousの光りかたとかを調整して完成

はい。
設定は概ねこのように。あとでAVIutl側でいじるのでライティングは暗めにしてあります


2.そもそも「炎のアニメーション」動画はどこから出てきたのかというとAVIutlで作っています。


レイヤーを下から順に表示していく

「ノイズ」のパラメータをいじって作るのが定石ではありますが、こちらの「炎@背景型カスタムオブジェクト」が超便利なのでよく使っている。


レイヤー構造

下(Layer1)から順に※
0xff0000(赤)~0x000000(黒)のグラデーションを「標準」
0xff6700(オレンジ)~0x000000(黒)のグラデーションを「加算」
0xffce00(黄色)~0x000000(黒)のグラデーションを「加算」
0x0000ff(青)~0x000000(黒)のグラデーションを「加算」

バラバラに表示するとこうで、
全部重ねるとこう

と4色の炎を拡大率や透明度をいじりながら重ねています。
※AVIutlのレイヤー上下関係は拡張編集タイムラインの見た目の並びと逆なので、「Layer 1」が一番下、その上に「Layer 2」「Layer 3」……と順番に積み上げられて描画される

その上に0x000000(白)~0x000000(黒)のグラデーションを「乗算」

静止画だと少しわかりにくい

で炎の波打ち具合を調整
そしてさらに色調補正(コントラストと輝度を上げる)とフレームバッファ(BPM同期発光)を載せています。

ハイコントラストにするとより炎っぽい。

こうしてできあがった炎を動画に必要なフレーム数だけループさせたものを作ってAVI形式で書き出し、MMD上に読み込ませることでステージ上に火を放つことができました。
実際はもうちょっとゴチャゴチャやってたんですが作業中のアドリブでファイル構造がゴチャゴチャだったのでそのままお出しするわけにも行かずやや簡略化されています。

まとめ

・screen.xを応用したエフェクトは割と応用がきく
・炎の色は実際に燃えているもの(仏壇の蝋燭とそれに火を点けるときのマッチ、お盆の送り火など)を観察しつつややデフォルメした色です。
・渦音Pは年1ペースで動画でなにか燃やしている(今調べたら2019年が2件2020年が1件・2021年投稿分は0件だったんですが今年2回ヒアソビモーションを使っていて両方ともなにかしら燃やしてたのでマジで年1ペースだった
・追伸:この記事で使っているステージの解説動画も作りました。

https://www.nicovideo.jp/watch/sm41500504

関連リンク

MikuMikuDance
https://sites.google.com/view/vpvp/?pli=1
MikuMikuEffect
https://www.nicovideo.jp/watch/sm12149815
MMEの導入方法
https://okoneya.jp/mme_study/index.php?インストールしよう
AVIutl
http://spring-fragrance.mints.ne.jp/aviutl/

手書きで「おさいせんばこ」と書かれた箱が置いてある。投入されたサポートはガソリン代になり、動画の素材になります。