2021/09/03

ニコニコ動画の投稿数制限解除

 2021/08/13ぐらいから、ニコニコ動画で長らく続いていた一般アカウントに対する投稿数制限ルールが変更されました。

  • Level 7までは動画50本まで。
  • Level 8-12は動画70本まで。
  • Level13-17は動画90本まで。
  • Level18以上なら本数無制限。

2021/09/03時点でのうp主のアカウント状況。

  • tubep / 33 (795/4600) ... 142本
  • tubep101 / 26 (2200/3000) ... 174本
  • tubep102 / 15 (500/900) ... 50本
  • tubep103 / 13 (650/700) ... 50本
  • tubep104 / 16 (545/1000) ... 50本
  • tubep105 / 15 (95/900) ... 50本
  • tubep106 / 8 (15/300) ... 11本
ということで、初代tubepと二代目tubep101は無制限です。
1つにまとまってるほうが管理は簡単なので、どうしようかなぁと。
tubepに戻るかなぁ。でもこのルールもまた将来変更になるかもしれないしなぁ。
特に初期の投稿はFullHDとかになってないので、本当なら投稿無制限になったことだし、投稿し直したいところですがさすがにそれをするだけの元気はない。

気にしたこと全然なかったのですが、TubeP103時代の動画はプレ垢ユーザに人気ないのでしょうかw謎です。
それにしても、ニコニコ動画だけで500本以上投稿していたんですね。
YouTubeにもiwara.tvにもあるので(もちろん重複はありますが)、我ながらクラクラっと眩暈がします。見るだけで丸々2~3日かかるぐらい。



2021/03/21

Windows batchで一部分的だけ一時的にコメントアウトする方法

 Windows batchで一部分的だけ一時的に
コメントアウトする方法

2021/03/21 TubeP

あ…ありのまま、今、起こった事を話すぜ!ほんとどなたかすっきりした解説をしてください。

Windows batchファイルはうp主的に難易度高いので、試行錯誤を繰り返してます。その時にお世話になったのが、一部分だけ一時的にコメントアウトする方法です。


方法


BATCHファイルの一時的にコメントアウトしたい部分(実行させたくない部分)の前の行として、

(

というカッコ一文字だけの行を追記します。同じくコメントアウトしたい部分の次の行に

)|echo "スクリプト中の ( から ) までを跳ばしました." 

を挿入します。echoの後ろの文字列はなんでも構いません。
あと、挟まれた部分にどこでもいいから1回でも rem 文を入れておきます。

この技法(トリック?)を使うとコメントアウト部分を削除しなくて済むので、特にデバッグ時には便利(某言語でのifdef文の感覚ですね)。
ただし可読性は猛烈に悪いので、デバッグ中など本当に一時的な作業にしかお勧めできませんねぇ。

これについてはにわかには信じがたいと思うので、以下に動作確認用のコードをつけておきます。windows10 Version 1909で検証してます。


【00: 通常のコードブロック利用】

丸カッコで括った範囲はコードブロックと呼ばれるようです。括っただけですから、実行されるのは当然です。

@echo off

echo Commands will be executed.
echo %DATE%
echo %TIME%

rem 
(
  echo Executing the line. >  result-00executed.txt
  echo %TIME%              >> result-00executed.txt
  echo OK, it is good.     >> result-00executed.txt
)
echo End of the %0 .
cmd /k

実行すると、同じフォルダ内にresult-00executed.txtが生成され、echo3行分の出力がされているはずです。

Executing the line. 
14:01:04.37              
OK, it is good. 
 
 


【01: rem文の追加】

対象のコードブロックにrem文を追加します。rem文は単なるメモですから、さきほどと同様、rem文に続くechoは 3行とも実行されるのが当然です。

@echo off

echo Commands will be executed.
echo %DATE%
echo %TIME%

rem 
(
  rem These are the target lines.
  echo Executing the line. >  result-01justrem.txt
  echo %TIME%              >> result-01justrem.txt
  echo It is still good.   >> result-01justrem.txt
)
echo End of the %0 .

cmd /k

実行すると、同じフォルダ内にresult-01justrem.txtが生成され、echo3行分の出力がされているはずです。

Executing the line. 
14:10:14.09              
It is still good.   
 

【02: echo へのパイプ】

対象のコードブロックの後ろにechoを接続します。見かけ上、コードブロックの標準出力をechoに送ることになります。後ろにつないだだけなので、それより前の挙動が変わることはないような気がします。それでも、なぜかコードブロック全体の実行がキャンセルされます。この例では、result-02pipeecho.txtは生成されずに終わります。

@echo off

echo Commands will be CANCELLED.
echo %DATE%
echo %TIME%

rem 
(
  rem These are the target lines.
  echo Executing the line. >  result-02pipeecho.txt
  echo %TIME%              >> result-02pipeecho.txt
  echo This is weird.      >> result-02pipeecho.txt
)|echo This is the trick.

echo End of the %0 .

cmd /k

挿入するrem文はコードブロックの先頭である必要はなく、最後でも途中でも有効です。rem文がなくなると、(当たり前ですが)01と同じ動作に戻って、result-02pipeecho.txtが生成されるようになります。



便利だけどこの謎技法、誰かのお役に立ちますかねぇ。
むしろ大勢の人の混乱を招くかもしれませんねぇ(笑い)。
こんなWindows環境で仕事されてる方が大勢おられるかと思うと、頭下がります。
今回はうp主は趣味の一環でbatch環境を触りましたが、いろいろおなかいっぱいでした。

windows バッチファイルあるある

 windows バッチファイルあるある 

2021/03/21 TubeP

MMD-VR180 HOWTO用にBowlRollで配っているファイルの1つ 325-305-VR180-bat.bat を書くときに学んだwindows batファイルあるあるネタです。うp主はWindowsの人ではないので、結構難儀しました。誰の役に立つのやら。


Tips 誤作動除け


作業時に間違えてbatchファイルをダブルクリックしたり、他のファイルをドロップしたりすると実行が始まって慌てることがあります。うp主は不注意なのでよくやっちゃいます。そういう方は、最初(とか面倒くさい処理が始まる前のところ)に、

echo Starting encoding, wait for 10 sec to start.
timeout /T 10

というのを挿入しておくと10秒待ってくれるので、その間に停止処理できるようになります。


Tips ウィンドウ表示の維持


batファイルを実行すると、通常は全て終わったら実行ウィンドウは片づけられちゃいます。そういうのが寂しい人向け。

cmd /k

を最後に入れておけば、表示が残ります。
上の10秒待ちと組み合わせるとこんな感じ。



Tips 行の接続


1行が長くなると読みくくなるので、折り返したくなりますよね?
そういうときは折り返す行の最後に"^"を置くそうです。
特にffmpegの引数は延々と書くことになるので、これ大事。


Tips 一部区間をまるまる飛ばす


今回の一番の魔法です。

(

というカッコ一文字だけの行と

)|echo "スクリプト中の ( から ) までを跳ばしました." 

という行でバッチファイルの一部を挟むと、その部分の実行をしなくなります。そんな馬鹿な、と思うかもしれません。私もそう思います。
でもね、挟まれた部分にどこでもいいから1回でも rem 文があると本当にスキップするのです。誰かすっきりした解説してください‥

この技法(トリック?)を使うと削除しなくて済むので、特にデバッグ時には便利。

echo文の後ろは自分で適宜書き換えましょう。
例えば、これを使って、VR135生成部分をコメントアウトしたりできます。
ただし可読性が猛烈に悪いので、一時的な作業にしかお勧めできませんねぇ。
これについてはにわかには信じがたいと思うので、別途実例をまとめてみました


Tips 変数


変数のセットにはSET命令、というところは容易に想像つきましたが、変数の参照時には変数名の前「後」に%を付けるというのがなかなか。特に後ろにつけるというのはうp主には新鮮過ぎました。じゃあ%0%じゃないのか、とか突っ込みたくなる。


Tips 変数操作


他のスクリプト言語でもそうですけど、変数に対する条件付代入って気合入りすぎてて謎です。解説する気ありませんが、下記の2行で、「バッチファイル自身のファイル名の先頭7文字」をMOVIENAME変数に代入しています。

set FNAME=%~n0
set MOVIENAME=%FNAME:~0,7%

% (パーセント) - DOS コマンド一覧


Tips 遅延環境変数


今回はカッコ "(" の中で変数代入をしない(ように実は書き直した)ので出てきませんが、遅延環境変数にもヤラレました。わかってしまえばどうということないんだけど、ほかのスクリプト言語からするとあり得ない仕様なのでびっくり。それぐらい古くからあるということなのでしょうかね。

【BAT】IF文やFOR文の括弧内で変更した変数の値を取得する方法
Use parentheses/brackets to group expressions in a Windows batch file.


記述例


以下が実際に MMD-VR180 HOWTO用に書いた 325-305-VR180-bat.bat です。MMD-VR180 HOWTOとして使う際には、実際には更新されている可能性があるので、利用時はこれをコピペするのではなく、BowlRollから最新版をDLしてください。

https://bowlroll.net/file/249559

2021/03/19

大腿ボーンの物理焼き込み対策

 大腿ボーンの物理焼き込み方法

2021/03/19 TubeP

MMD人体モデルの中には、足が独自のボーン構造しているのがあります。滑らかな足の形状を表現するために、物理が仕込まれている模様です。(例えば、かわいいおにぎり道場式モデルの脚などがこれに該当します)

このことが、VR180化のときの物理焼き込みに障害となります。物理を停止(メニューから物理演算演算しない)してしまうと、この独自構造で形を保っていた脚が破綻してしまうのです(泣)。


それで、MMD-VR180 HOWTOを書いたついでにいろいろ試してみると、これまでの対処策(恥ずかしいので秘密にしておきます)は基本間違っていたことに気づきました。

相変わらず正しい方法が見つけられない(そもそも原理的に存在するのかも不明?)のですが、映像化してバレない程度の対処策を今回見つけたのでメモしておきます。

1. 左足ボーンのキーフレームを0フレームから9999フレームまで範囲選択してコピー
2. 左大腿ボーンを選択
3. メニューから別フレームへペーストを実行


左足は骨折解消しているのがわかりますね。このままでは右足が折れたままなので、右足と右大腿についても同じことをします。これで骨折してない感じになるようです。いつもこうなるのかわからないのですが、おおむねいい感じです。

ちなみに、MMDで動画作るようになってそろそろ10年ですが、10年目にして初めて、「別フレームへペースト」コマンドを知りました。こんな便利なのもっと早く誰か教えてよ。今までは外部に持ち出して編集してたです。


参考


・さぼてんP様の第6期MMD初心者講座 勝手に出席ノート
・今回の対処で作れるようになったVR180動画(近日登場予定)
・MMD-VR180 HOWTO (bit.ly作りました) http://bit.ly/MMD-VR180-HOWTO


後記


これまでこういうブログとか書いてこなかったのですが、先人の知恵に感謝すべく、自分でも多少書いていくことにしました。でもなんかすぐ飽きそうな気もします。


場合によっては、単純に大腿ボーン(物理)の焼き込みを全部削除するだけでも解決できる場合もあるようです。再生するときは物理をさせないこと。こちらのほうが対処方法としては簡単ですね。 2022/03/21追記

2021/03/15

Windows10のDLNAサーバのフォルダ情報強制更新


DLNAサーバのフォルダ情報を強制更新する方法

2021/03/15 TubeP

うp主は Oculus Quest2(OQ2) でダウンロードしたVR180動画を見るときにDeoVR Video Player (DeoVR)を使っています。


DeoVRはDLNAサーバ接続機能を有していて、無線LAN越しにWindows10のPC(PC)内にあるVR180動画を視聴することができて大変便利です。

でも、DLNAサーバ接続をしている状態で、PCのほうのWindows Media Player(WMP)の監視下にあるフォルダに新しくファイルを置いても、OQ2のDeoVRのほうで表示がでてきません。放っておくと、もちろんいつかはなんかの拍子に出てくるのですが、こちとら今置いたのを今見たいのです。

それで、強制更新する方法を求めて、DLNAサーバ再起動したり、OQ2再起動したり、WMPの監視フォルダの設定を一旦外して付け直したりとか、WMPの設定ファイル(Usersの下)を消すとか、それはもう様々なことを挑戦してみたのですが、なかなか確実にこうすれば更新してもらえる、という方法(でかつ手軽なの)がつい最近までわかりませんでした。ネットでも探したんですけど、全然出てこない。探し方が悪いのか、DLNAが見捨てられた日陰技術なのか‥

でも、ふふふ、うp主は結局独力で見つけましたよ。100%確実に更新してくれる方法。前提として、Windows10で普通にDLNAサーバが使えてる状況だとします。(DLNAのセットアップの仕方はネットにたくさん情報あるのでそちらをどうぞ。例えばこんな感じ?

【対策】
あるフォルダに新しくファイルを置いたあと、そのフォルダ名を変更する。
(フォルダ名を戻したければ、2秒後ぐらいに元のフォルダ名に戻す)

これだけです。別にフォルダ名を戻す必要はありません。
察するところ、WMPは管理下のコンテンツについて、更新の自動検知をフォルダ名でしか行っていないみたいです。(だからWMPにライブラリの再構築を命令しても新しいファイルの存在を無視したりしてくれる‥)

同じお悩みを抱えてる方の助けになれば幸いですー。


ここからは閑話。

YouTubeVRというアプリがOQ2にあって、たいていのVR180動画はつべ経由で見られる中、なんでわざわざDeoVRでファイル視聴したいかって?紳士同胞諸君ならわかりますよね。

うp主から提供しているおまけ系VR180とかもこれでゆっくり見れるかと思います。
(ちなみに Mirage SoloとかはmicroSDが挿せるのでDNLA使わなくても見れたり)

DLNAはその趣旨からいって、まわりに(同じ無線LANに参加してる人たちには)ダダ洩れするので、紳士系を見るときはくれぐれもご注意ください。周りにばれたらトラウマになるでしょうからね!

2021/03/10

MMD-VR180 HOWTO Chap.5 レンダリング

 MMD-VR180 HOWTO 【目次】


5. レンダリングとエンコーディング


レンダリングではWindows自動化ツール UWSC を用います。
10回MikuMikuDanceを起動することで10本のaviファイルを作成します。
エンコーディングは、レンダリングの最後に、UWSCからwindowsバッチファイルを実行することで実現します。この中で、ffmpegを複数回呼び出し、aviファイルをmp4に統合します。
最後に統合されたmp4にメタタグを書き込んで、VR180用のmp4を完成させます。

5.1. ターゲットpmmファイルの確定


前節で作成した325-304final.pmmをMikuMikuDanceで読み込みます。
カメラ編集モードにします。
・メニューから、物理演算⇒演算しない、になっていることを確認します。
・メニューから、MMEffect⇒エフェクト使用、になっていることを確認します。
・カメラ操作の登録が第0フレームにしかないことを再度確認します。
フレーム操作を第0フレームに合わせます。
・カメラ操作で、「パース」、視野角135°、ボーン追従「VR180視点f16」の「作業用視点」
となっていることを確認します。
・視点で、「追従」、「ボーン」になっていることを確認します。
・アクセサリ操作で、「EquirectangularX」でRzが90°になっていることを確認します。
上図の状態でpmmを保存します。これがターゲットpmmになります。
ここではこれを 325-305-VR180.pmm とします。
最後に、MikuMikuDanceをウィンドウ状態にして閉じてください。(フルスクリーン状態で閉じると、レンダリング開始後もMikuMikuDanceがフルスクリーンで起動して、デスクトップ全体の様子を見るのが難しくなります)
これ以降、ユーザが手動でMikuMikuDanceを起動することはありません。

以降の説明のため、ターゲットpmmファイルは下記のディレクトリに保存されているものとします。(場所さえわかるのならどこでも構いません)
X:\mmd\tubep\325-VR180\325-305-VR180.pmm
X:\mmd\tubep\325-VR180\325-305-VR180.emm

5.2. ワーキングディレクトリの準備


5.2.1. ワーキングディレクトリの作成


空き容量が1TBあるドライブで、ワーキングディレクトリを用意してください。
うp主の例では、CドライブがWindows関係、XドライブがHDDでMikuMikuDance関係、Yドライブが1TBのSSDでワーキングディレクトリ専用にしています。
ここでは、 Y:\tmp-work をワーキングディレクトリとします。
Y:\tmp-work

[memo1] レンダリングとエンコーディングにおいて、325-305の30秒動画の例でおおよそ80GBを使用していました。作業が終われば、必要なmp4だけ残せばよく、他は消して構いません。325-305の例では325-305_LRM-5760-injected.mp4 (100MB)が最終的な生成物になります。必要なディスクサイズは作成する動画の長さと画の細かさに依存しますが、500GBでは足りなくなることが経験上何度かありました。SSDである必要はありませんが、エンコーディングでは大サイズのファイルの読み込みと書き出しを大量に行うため、SSDのほうが処理時間が多少短くなるようです。

[memo2]  解像度を5Kにして5分を超えるような動画だと、1TBでも足りなくなるかもしれませんorz。作業を見守っていてディスクが溢れそうになったら、中間ファイル(特にzzで始まるaviファイル)でもう処理済みのものは途中でも消していって大丈夫です。 


5.2.2. 音楽ファイルの準備


ワーキングディレクトリに、ターゲットpmmで使っている音源wavファイルをコピーし、music.wavという名前にしておきます。これがエンコーディングの最後に音声トラックとして使用されます。
Y:\tmp-work\music.wav

5.2.3. マスクファイルの準備


ワーキングディレクトリに、うp主が配布しているエンコーディング時のブレンディング用マスクファイル一式(pngファイル8個)をコピーして置きます。必要なのはターゲットpmmで設定した表示解像度に対応する2個だけなのですが、この際、全部置いておきましょう。ファイル名は変えないでください。

5.4. UWSCのインストール


Windows操作自動化ツールUWSCをインストールして使えるようにしておきます。
http://www.uwsc.info/ (2021/3/9現在ダウン中)

起動して、以下のようなウィンドウが出せるようになればOKです。


5.5. ffmpegのインストール


ffmpegをインストールして使えるようにしておきます。
https://www.gyan.dev/ffmpeg/builds/ (公式から辿れるWindows版DLリンク)
とっつきにくいサイトですが、DLは2つ目のURLの中に置いてあります。
そのページの FFmpeg Windows Builds の Release というセクションで ffmpeg-release-essentials.zip を選んでDLしてください。

インストーラはなく、単に展開すればすぐ使えます。windowsのコマンドプロンプトで実行できることを確認しておいてください。以下のように実行できるならOKです。


展開先を覚えておく必要があります。ここでは、以下の場所に展開したとします。
X:\ffmpeg\bin\ffmpeg.exe
X:\ffmpeg\bin\ffprobe.exe

5.6. UWSCスクリプトの準備


うp主から提供する Tark-tbp12-bones.uws を用います。
中身はテキストなので、メモ帳等で内容確認することができます。
変更する必要はありません。

5.7. UWSC設定ファイルの準備


うp主から提供する 325-305-VR180-uws.ini をコピーしファイル名を書き換えて準備します。コピー先はどこでもいいのですが、ターゲットの325-305-VR180.pmmと同じところに、先頭の7文字を揃えて置いておくとわかりやすいと思います。例ではターゲットが"325-305"で始まっているので、次のようになるでしょう。
X:\mmd\tubep\325-VR180\325-305-VR180-uws.ini

325-305-VR180-uws.iniはTark様のsample\sample180.iniからの改変です。
中身はテキストなので、メモ帳にドロップすれば編集できます。
以下の部分はターゲットpmmが変わるたびに中身を書き換える必要があります。
POST_PROCESSのファイル名の先頭7文字とAVI_PREFIXの末尾7文字は一致している必要があります。
---------
PMM_FILE    ="X:\mmd\tubep\325-VR180\325-305-VR180.pmm"
POST_PROCESS="X:\mmd\tubep\325-VR180\325-305-VR180-bat.bat"
AVI_PREFIX  ="Y:\tmp-work\325-305"
---------
以下の部分は各自の環境に合わせて書き換える必要があります。 
ここではCODECとして UT codec を利用しています。
MikuMikuDanceを直接操作してaviを書き出すときに指定できるものの中(かつffmpegが出コードできるもの)から選んでください。UT codec導入済みなら変更する必要はないでしょう。
FRAME_RATEは、MikuMikuDanceを直接操作してaviを書き出すときに指定するfpsと同じものです。  通常は60のままでいいでしょう。
---------
MMD="X:\mmd\x64\MikuMikuDance_v932x64\MikuMikuDance.exe"
CODEC="UtVideo YUV420 BT.709 DMO"
FRAME_RATE=60
---------

[memo] エクスプローラの「パスのコピー」ボタンを使うと選択したファイルの絶対パスがコピーバッファに入るので作業が楽です。


[memo] ファイルの後半にある"nop"(no operationの略)行のコメントオンオフを上手に利用すると、もしレンダリングが途中で失敗したときに、成功した部分についてはスキップして失敗した部分のみ再レンダリングさせることができます。

5.8. レンダリング用バッチファイルの準備


うp主から提供する 325-305-VR180-bat.bat をコピーしファイル名を書き換えて準備します。コピー先はどこでもいいのですが、ターゲットの325-305-VR180.pmmと同じところに、先頭の7文字を揃えて置いておくとわかりやすいと思います。例ではターゲットが"325-305"で始まっているので、次のようになるでしょう。
X:\mmd\tubep\325-VR180\325-305-VR180-bat.bat

325-305-VR180-bat.batはTark様のsample\call_ffmpeg_180.batを参考に書き下ろしたものです。
中身はテキストなので、メモ帳にドロップすれば編集できます。
以下の部分はご自身の環境に合わせて書き換えてください。
---------
rem ffmpegとffprobeをインストール先に合わせる
set FFMBIN=X:\ffmpeg\bin\ffmpeg
set FFMPRB=X:\ffmpeg\bin\ffprobe
rem ワーキングフォルダに移動
Y:
cd Y:\tmp-work
---------

内部でファイル名の先頭7文字を自動抽出して映像ファイル名の確定に使っているので、ファイル名の先頭7文字は 5.7.節と5.8.節を通じて一貫するようにしてください。

このバッチファイルの内容は、UWSCで自動処理によるレンダリングが行われたあとの最後で実行されます。
ffmpegとffprobe用いて、エンコーディングを行います。

[memo] 何らかの事情で自動実行されなかった場合は、(レンダリングまで全て正常終了していてファイルが揃った状態ならば)本ファイルをダブルクリックしてエンコーディングのみ実行できます。

5.9. 実行


5.9.1. 実行開始


ここまでで全ての準備が整いました。
いよいよ実行です。
実行を開始すると、2時間から10時間程度はPCが使えなくなります。
途中でポップアップや通知などが出てくると処理が中断してしまう可能性があるので、そうならないようにしておいたほうがいいでしょう。様子がわかるようスクリーンセーバーもオフにしておきましょう。
(手を付けないままぶんぶん回り続けるPCを見ると、なんとなく「俺ってコンピュータ使いだよな」という気分がして微妙に楽しいのはうp主だけかしら‥)

1. UWSCを起動し以下のようなウィンドウを表示させます。
2. 上記5.6.節で用意したTark-tbp12-bones.uwsをドロップします。
3. 設定ファイルを聞いてくるので、自分で書き換えた325-305-VR180-uws.ini をドロップします。
4. UWSCがMikuMikuDanceを呼び出してレンダリング処理を始めるので、そっと見守り続けます。(1時間から6時間ぐらいかかります)
5. UWSCがMikuMikuDanceを10回呼び出した後、最後にバッチファイルを呼び出してエンコーディングを開始するので、終わるまでさらに待ちます。(1時間から4時間ぐらいかかります)この状態になったら、バッチファイル実行ウィンドウに触れない限り、PCのデスクトップ環境を触っても一応大丈夫です。(それでも、慣れないうちは触らないほうがいいと思います)

5.9.2. 実行状況の解説

この節では、生成される動画ファイルをそれぞれ解説します。自動化によって順次生成されてくるので、作業としては何もしません。見ているだけです。

レンダリングパートで、UWSCはMikuMikuDanceを10回呼び出して、aviファイルを10本作製します。作製順は 325-305-VR180-uws.ini に記載されている順です。L0 / R0 / L1 / R1 / L2 / R2 / L3 / R3 / L4 / R4 の順になります。Lが左目、Rが右目に相当します。
aviファイルは中間ファイルなので、画質を保つため、ロスレスなUT codecを用いています。そのため、どのaviファイルもサイズが巨大です。

エンコーディングパートでは、UWSCは 325-305-VR180-bat.bat を起動します。
黒地に文字がいっぱいなコマンドウィンドウが表示されて、中でffmpegを実行させている様子が見えるようになりだしたら、エンコーディングパートに移った証拠です。このコマンドウィンドウに文字を打ち込んだりしないようにしてください。(確か何かキーを打つと中断します。エンターキー打つと再開しますけど)

まず左目分をエンコーディングします。
L1とL2からzzL12-.aviを作成します。
L3とL4からzzL34-.aviを作成します。
zzL12-.aviとzzL34-.aviをブレンディングさせながらzzL1234-.aviを作成します。
L0とzzL1234-.aviをブレンディングさせながら325-305_Lm.aviを作成します。
この4つの作業のうち、前半二つは貼り合わせるだけなので比較的高速なのですが、後半二つはものすごく時間がかかります。(うp主の環境で速度比が1/15に届かないぐらい。つまり4分の動画ならそれぞれ60分かかります)
こうして得た325-305_Lm.aviが左目分の最終形態になります。
同様に右目分もエンコーディングします。
両目分を結合してmp4にします(LR-xxxx.mp4)。サイズが大きいことと、mp4圧縮をするため、この部分の処理も時間がかかります。そのあと、music.wavを合わせて主ターゲットの(LRM-xxxx.mp4)を完成させます。主ターゲットが5Kのときはそこから4K版を作ります。同様に、主ターゲットからiwara.tv用の4K/300MB版も作ります。
完成した様子が下図です。下ではアイコンを拾ってきたのでアスペクト比がおかしい表示になていますが、本当は2:1の横長動画です。
解像度は、ターゲットpmmで指定した値に従います。325-305-VR180.pmmの例では、5K (2880x2880) としていたので、325-305_LRM-5760.mp4が主ターゲット(上図左)です。これが後のYouTube向けになります。
うp主の所有するVRデバイス辺りだと5Kはちょっと再生が大変なので、自動的に4Kも同時に生成するようにしています(上図中央)。また、iwara.tvでは300MBまでというファイルサイズ制限があるので、4Kでさらに300MBというmicro版も生成するようにしています(上図右)。micro版は画質がむごいので、あくまで案内掲示用だと思ってください。

【余談】
なお、同時にVR135も生成しています。mp4ではありますが、使わないのなら消して構いません。
周辺部を統合していないので、周辺部が黒くなっています。ファイルサイズはVR180とVR135でほとんど違いがありません。
ファイルサイズ小さくないわ範囲は狭いわで、いいところがありませんね。ならなんで作ってるのか?ということですが、慣れてくると、
1. レンダリング時にL0とR0の生成が済んだ時点でUWSCを強制終了
2. エンコーディング用バッチファイルを手動実行(ダブルクリックするだけ)
でもVR135だけは生成されます。つまり短時間で速報版が作れます。レンダリングは2本だけになるので、所要時間は1/5になります。エンコーディングも行うのは両目分の統合のみなので、実行時間は1/4程度?で済みます。(速報版と言っても、結構普通に見れます。視聴時に首をあちこち回さないような人ならこれで十分) 
速報版を視聴してみて、期待通りなら、uws.ini内のnopが並んでいるところで、3(=L0)と4(=R0)を(コメントを外して)nop対象にして、UWSC実行を再度行うと、今度はL0とR0に手を付けずにL1からレンダリングが開始されます。
なお、VR135がずっと不要なら、batファイル内のVR135レンダリング部分を削除なりコメントアウトしてもいいかもしれません。

全てのmp4ファイルが無事に生成されているのを確認したら、サイズの大きい中間生成ファイルであるaviファイルは全て削除して構いません。

5.9.3. メタタグの埋め込み


Google VR180 Creator
ここではVR180 Creatorを利用します。
インストールして使えるようにしておいてください。
起動したら、「公開の準備」を選択して、主ターゲット(例では 325-305_LRM-5760.mp4 )をドロップします。

エクスポートすると、すぐにメタタグが埋め込まれた 325-305_KRM-5760-injected.mp4 が生成されます。ファイルサイズはほとんど変わりません。
これをYouTubeに投稿すれば、あとはYouTubeが勝手にVR180にしてくれます。
5KぐらいのVR180動画だと、YouTubeに投稿してからVRで視聴できるようになるまで運が悪いと1時間から半日ぐらいかかるときがあります(今はどうかわかりませんが、昔は公式に「待っててくれ」と書いてありましたw)。うp主はやりませんが、時間指定して封切とかしたい場合は、前の日ぐらいから準備しておいたほうがいいでしょうね。
このメタタグ埋め込みは、VR135でも同じ要領で可能です。

投稿まで辿り着くことができたら、是非ご連絡ください。
うp主、twitterとかSNS一切しないので、このblogの下のコメントか、つべのコメントか、iwaraのプライベートメッセージ辺りで‥。
喜んでお伺いしますw

5.10. 技術解説


Q. AviUtilとか使う方法も考えてよ!
A. 残念ながら対応予定はありません。うp主はAviUtilとかPremiereとか避けて通りたい人なのです。

Q. 延々と説明してた割には、結局先人の知恵の焼き直しじゃん。
A. その通りです。ポイントは技術ではなくて省力化wです。元2D動画のpmmファイルでカメラワークがカメラ中心位置≒注視点になっているようなのをいっぱいもってる人でそれをVR化したい人(=うp主)が手間最小でVR180をたくさん作れるようにしたかったのです。同じ境遇の紳士がどれぐらいいるのかしら。

Q.エンコーディング(でのブレンディング)はなんでこんな順番なの?
A. 5本のAVIファイルが以下のように重なっているので、境界をぼかしたマスク画像を使ってぼかし結合するようにしたのがポイントです。なおかつ、このときに中央のaviができるだけ使われるようにしてあります。これによって、視野角135°までは原理的に美しく、そこから周縁部の22.5°につながるところはブレンディングでそこそこテキトーに仕上がります。少なくとも境界線を見つけることは難しいでしょう。相当に色味が違うaviファイルでも結構ばれなくなります。
右側が12(左右)と34(上下)を結合するときのマスクです。黒いほうが一続きになっていることから、左右に一続きでつながっている34が優先的に採用されます。中央の縦の境界は次の0(中央)が上書きしてくるので、見えなくなります。結局四隅の斜め境界の辺りのみが接合面として残って、かつそれをブレンディングでぼかしてます。
もちろんAviUtilでもできるのでしょうけど、今回の手法の強みは、とにかく手を使っての作業が一切ないことです。特にレンダリングパートは、2回目以降は前回使ったバッチファイルをコピーしてファイル名を先頭7文字変更するだけなのでわずか数秒w

Q. 次はVR360だね!よろしく!
A. うーん、対応しないと思います。ゲームとかじゃないので、カメラワークも自由にできることになったし、わざわざ視聴者に後ろ振り返ってもらうような動画を作る意義はないと思います。やってみたい方はご自分でお願いします。

Q. こんなもん書いてる暇があったらもっと紳士動画作ってよ!
A. もっともなご意見ありがとうございます。うp主的にはこのHOWTOで他の紳士な方々が紳士VR量産してくださるようになれば、とても幸せです。ガチエロでもそうでなくてもいいです。いろいろ見たい。マジで。

Q. 中間ファイル(aviファイル)でかすぎ。なんとかならないの?
A. 実は、ベースになった手法では、中間ファイルを作らないようになっていました。ただ、うp主の環境ではいろいろと作業中断する羽目になることが多く、中間ファイルを作らない方式だと中断したら最初からやり直しになって心が折れそうでした。HDD(特に内蔵なら)でもそれほど遅くなるわけでもないですし、持ってなかったら買っちゃいましょう!(こちらについては需要が多そうなら改訂版考えます)

以上です。コメントや質問等は‥受け付ける保証はしませんが、とりあえずこのブログの(か、つべかニコ動あたりで)コメントにでもつけておいてください。

それでは、佳きMMDライフを。

2021/03/09

MMD-VR180 HOWTO Chap.0 概要

MMD-VR180 HOWTO

2024/12/31 TubeP 三版

この解説は、うp主ことTubePのMMDでのVR180作成手順を記録しておくものです。
もしどこかの誰かの役に立ったら嬉しいです。
お約束ですが,無保証です。実行はあくまでも自己責任でお願いします。

2021/03/09(初音ミクさんの日だw) TubeP拝

【目次】

0. 概要

0.1. 目的


本解説の趣旨は、第1にはうp主の備忘録、第2には様々な先人の皆様への感謝としての拙い情報提供です。この解説がMMDのVR180動画の増加に繋がれば幸いです。

目標は、すでに2D動画を作ったことがある方が、速やかにVR180動画も作れるようにすることです。元の2D動画の雰囲気をできるだけそのまま移す方法を示しています。(うp主は2D動画のストックがたくさんあって、これを自分でも早くVR180で見たいのです。他の方のMMDな2D動画のVRもいっぱい見たいのです。特にかわいくてほんのりエッチなのすごく見たいです)

0.2. 必要なソフトウェア


MikuMikuDanceで2D動画を普通に作成して投稿出来る環境と技量があることを前提とします。実際に必要なときにそれぞれ説明しますが、感謝の意も込めてここに列挙させて頂きます。

樋口優様の MikuMikuDance
舞力介入P様の MMEffect
極北P様の PMXエディタ(今回直接は使いませんがうp主的に謝意を)

蒼真アヤ様の解説動画(うp主がVR180を作るきっかけになった神動画)

ほうりき様の EquirectangularX.x(MMEがそのまま使える!貴方様も神ですか!)
Tark様の UWSC スクリプト(凄く勉強になりました)
あきら様の VMDファイルエディタ(カメラ移設自動化の決め手になりました)
Windows操作自動化ツールUWSC(本家サイトが‥vectorのリンクで代替中)
Google VR180 Creator (YouTubeへの投稿時に必要です)
nef様のMMDM (MMD Macro)(物理焼き込みに利用します)
無敵エンコーダー ffmpeg(昔からお世話になってます)
梅澤 威志様の ロスレスエンコーダー UT codec(直接登場しませんが導入済の前提) 
 

0.3. 必要なハードウェア


MikuMikuDanceの2D動画を作成できる環境はすでにあるものとします。
それに加えて、生成時に(うp主の趣味で)中間ファイルを一時的に大量に作る為、その一時的な置き場として1TB程度必要です。HDDでもいいですが、SSDだと少し速いです。作業が終われば中間ファイルは全て消せます。(ちなみに最終生成物のファイルサイズの目安は、ざっくりですが、4分程度の5K/60fps動画mp4だと1GBぐらいになります)

0.4. 必要な時間


元2D動画が視野角固定で動かしているようなカメラワークなら、慣れてくれば、編集に最小限必要な時間は30分程度です。
しかし、そのあとのレンダリングとエンコーディングには時間がかかります。i7-9750とNvidia RTX2060装備のPCで、下の30秒動画で2時間弱かかっています。3分ぐらいの動画だとその6倍ぐらいかかります。10時間ぐらいPCは延々と発熱し続けますw
特に前半のレンダリング中はwindows自動化ツールのためにデスクトップ環境を操作することも出来ないです。後半のエンコーディングに入れば操作そのものは出来る様になりますが、裏でCPUがぶんぶん回ってるのであまり快適ではありません。
お奨めは,寝る前にセットして起きるまで放置、ですw

0.5. うp主からの提供ファイル


(1) VR180視点f16.pmx
(2) Tark-tbp12-bones.uws
(3) 315-000-VR180-uws.ini
(4) 315-000-VR180-bat.bat
(5) エンコーディング時のブレンディング用マスク画像一式(8枚のpng)
(6) MMDMでの物理焼込用マクロファイル一式
まとめてBowlRollにおいてあります。
どこでどう使うかは、1.節以降の解説をご覧ください。
 

0.6. サンプル


VR180のstreamingは現在のところYouTubeでしか見られないので、YouTubeにサンプルを置いてます。これらをどのように作成していくかを次節以降で解説しています。

その1:元2D動画
皆様が普通に2Dで製作している動画だと思って下さい。今回はMikuMikuDanceに敬意を表して、きしめんをベースにしてます(皆様持ってられますしw)。

その2:カメラワーク移設2D動画
VMDファイルエディタのプラグインと(1)のVR180視点f15.pmxを利用して、全く同一のカメラワークをカメラ操作無しで実現します。その1と寸分たがわないのでつまらないですねw(同一にすることが目的ですから)

その3:VR180展開動画
編集後2時間待って得たVR180動画の展開版です。
左右5本ずつ動画が継ぎ目の見えない形で貼り合わされているのが分かると思います。

その4:VR180動画
最終的な成果です。元2D動画の雰囲気がよく残っていると思います。
YouTubeでの本解説の公式リンクにしてます。

おまけ1:VR135展開動画
長時間のレンダリング&エンコーディングが待てないという場合は、周縁部を見捨ててよければ作成までの時間を大幅に短縮できます。(必要なAVIは2本のみでエンコーディングも1回だけでOK)

おまけ2:VR135動画
おまけ1をVR180でストリーミングしてみた例です。中央しか見ないならこれで結構十分かもしれません。

おまけ3:デフォルト距離でのVR180化
上記のその4:VR完成では、没入感を出すために、編集過程でカメラからモデルまでの距離を一応変更していました。もしそれすらしなかったらどうなるか、という例がこちらです。これの場合、編集での調整作業が発生しないので、ファイル変換してドロップしてという数分程度の作業で済みます。

0.7. その他


この解説は、お約束の無責任無保証です。法律と良識に基づいてお使い下さい。
人々の対立を煽るような目的への利用はご遠慮ください。
貼ってある図やBowlRollに置いてあるファイルについて、再配布・改変・改変再配布・個人利用から商用利用まで、私から制限をかけることはありません。ただし、元がある場合は元の規約に準じてご利用ください。
もし、ツリー登録、リンクをして下さるなら、
ニコ  im10708783
にお願いします。本ページへのリンクとして、
というURLも作ってみました。
 

それでは、いよいよ解説開始です(なんか文章長い‥)。
1.節の カメラワーク移設 に進んでください。


0.8. 改訂履歴


2024/12/31 三版 Youtube 動画切替
2021/03/18 二版 VR180視点f16.pmx (「★見回し」ボーン)の追加
2021/03/09 初版

2021/03/08

MMD-VR180 HOWTO Chap.4 VR180カメラワーク調整


4. VR180カメラワーク調整


ここまでは EquirectangularX.x を導入しない状態でできるだけ準備してきました。
ここでは EquirectangularX.x を導入して、VR180ならではのカメラワークの微調整を行います。
MikuMikuDanceを起動し、325-303.pmm を読み込んだ状態で作業を開始します。


4.1. EquirectangularX.x の導入


サイト EquirectangularX.x (
ほうりき様)
https://bowlroll.net/file/166172
からEquirectangularX.xをDLして、アクセサリとしてMikuMikuDanceに読み込みます。

1. カメラ編集モードにします。第0フレームで作業します。
2. EquirectangularX.x の Rz を 90.0 に変更して登録します。
3. メニューから、表示⇒出力サイズを変更します。
  2K規格なら幅・高さとも 1024 です。
  4K規格なら幅・高さとも 2048 です。
  5K規格なら幅・高さとも 2880 です。
  作業としてはどれでも同じです。
  テストをしてる間は2Kがお手軽でよいでしょう(画は荒いですが)。
4. カメラ操作で、視野角を一旦125°にして登録します。
5. カメラ操作で、視野角の数値表示のところに135と無理矢理入力してエンターキーを押してから「登録」します。
6. 念のため、フレーム操作で数フレーム前後させてから第0フレームに戻ってください。視野角が135°になっていれば成功です。

[メモ] 125°でもいいのですが、この僅か10°(±5°ずつ)が、貼り合わせの継ぎ目境界をより視野の端に追いやるので、結構効くと感じています。レンダリング範囲が広くなって処理が遅くなるという副作用がありますが、どうせバッチ処理なので、うp主は気にしていませんwちなみに135°という値は EquirectangularX.x で対応できる上限値のようです。135°以上にすると画がおかしくなり始めます。あと、後のブレンディングのマスク処理で、マスク画像を135°に合わせてますので、135°以外の値では結果が予期していないものになります。

この状態が基本形になります。325-304preview1.pmm として保存しておきましょう。

この状態ですでに完成しているので、再生して不満がなければ、5.節のレンダリングに進んで構いません。

ちなみに、325-304preview1については、再生してみるとステージのないところが見えてしまって、そこに空中を漂う埃が黒く映ってしまっています(下左図の左端一帯の黒い点群)。そこで、MotionBlurエフェクトでついでに配られている黒背景.xをアクセサリリストのトップに導入して消しておきました。そうした修正をしたものを325-304preview2.pmmとします。


4.2. 調整


経験上、元の2D動画を視野角35°ぐらいで調整してあると、3.1.節の直変換だけで再生してみるとやや迫力不足(モデルさんが遠い)感じです。これを調整します。

調整中の映像確認は、モデル編集モードで「VR180視点f16」を選択し、「作業用視点」ボーンに追従しながら見るようにしてください(視点がボーン追従していれば出来上がりと幾何的には同じ画です。なお「作業用視点」ボーンは確認専用なのでこのボーンに編集点を打ってはいけません)。ただ、pmmの構造が複雑になってなってくると、ボーン追従が更新されなくなってしまうこともあるようです。そのときは、値を変えたらカメラ編集モードで確認し、すぐにモデル編集モードに戻る、ということを繰り返しましょう。
カメラ編集モードで思わずカメラ操作を登録しないように!(レンダリング時に画が狂います)


4.2.1. 円軌道カメラワーク


注視点を適切に設定していれば、大きさの調整=半径の変更、となります。
「VR180視点f16」モデルの「★アーム長-」ボーンのZ値の調整で一括変更できます。

フレーム操作で「VR180視点f16」モデルの「★アーム長-」ボーンを選択し、選択範囲を0から9999フレームぐらいにして範囲選択したあと、メニューから編集⇒ボーンフレーム位置角度補正でボーン位置のZ値を0.5倍にすれば一括変換できます。距離を削りすぎた場合は、同じ要領で1.2倍するとかいろいろ調整楽しんでください。

おおむねいい感じになったら、あとは、各時刻で「★アーム長-」ボーンのZ値を微調整していってください。

注視先がずれているような場合は、「★注視点」(と必要なら「★注視水平角」も)で調整し直しましょう。意図的に注視点からカメラを逸らすなら、「★見回し」で角度変更するのがいいかもしれません。それでも調整しきれない場合は、「▼移設カメラ」のX/Y/Z, Rx/Ry/Rzも使って構いません。(ただ予期しない動きになることが多いので大変です‥)


4.2.2. カメラ移設


2Dカメラを1.節から移設してきた場合は、なんとも言えません。元のカメラワークでカメラ中心位置が注視先になるようにしてあれば、大きさの調整≒▽距離(のZ値の変更)、と言えます。(配布されているカメラワークでこうなっていないものもたくさんありますので御注意)

カメラ中心位置が注視先になっているのなら、フレーム操作で「VR180視点f16」モデルの「▽距離」ボーンを選択し、選択範囲を0から9999フレームぐらいにして範囲選択したあと、メニューから編集⇒ボーンフレーム位置角度補正でボーン位置のZ値を適切な倍率にすれば一括変換できます。

325-304preview2.pmmでは、だいたいこの仮定が間違ってはいないので、一括変換で問題ないでしょう。1.1.5.節のようにボーン追従している場合は、同じ倍率を「▽移動follow」ボーンのZ値にも施します。

なお、カメラ中心位置が注視先でないような場合は、無理矢理でよければ、「▽距離」ボーンの位置Z値以外(位置X/Z, 回転Rx/Ry/Rz)も変更して構いません。(3.2.1.同様に「▼移設カメラ」で調整してもいいのですが、「▽距離」の編集点はカメラワークの切替になってるはずなので、その値を上書きしてしまうのが一番お手軽です)

あとは、さらに気に入るように、▽距離ボーンの値を適宜変更してください。

4.2.1. / 4.2.2. の調整が済んだら、325-304final.pmmとして保存しましょう。
カメラ操作登録(カメラ編集モードでの「カメラ」)が第0フレームにしかないことを再度確認してください。(うp主は最初のうち、思わずこれを何度もやってしまってデバッグに苦労しました)
これで1.節から3.節まで続いた編集作業は終了です。

ちなみに、325-304finalでは▽距離と▽距離followのZ値を0.5倍しただけで作業終了させています。
・その3 https://youtu.be/v7PFiQAdHOs (平面図)
・その4 https://youtu.be/tuvY3QAaXRI (VR)
・おまけ3 https://youtu.be/PHt7VUYg5-c (325-304preview2, 距離修正前)
です。その3の映像の中央部は、今MikuMikuDanceで見ているものとほぼ同じです(正確には左右の視差の分だけずれてますが)。おまけ3は距離の修正前です。その4では距離を半分にして対象に近づいていることになります。

次は5.節の レンダリングとエンコーディング で最後です。
まだ文章を読む気があるのなら、4.3.節も是非どうぞ。


4.3. Tips


ここからは、ま、どうでもいいことです。


4.3.1. 大きさの目安


本解説の方式に従うなら、EquirectangulerX.xの描画範囲は135°です。
カメラワークとしては、対象モデル(人型に限る)をこの独特の樽形状内に余裕もって納めるようにしておくのが最初のうちの目安です。
こうしておくと、手を突き出されてもだいたいギリギリセーフになることが多いです。
例えば、あにまさ式初音ミクVer.2で上下を均等に余らせる(中央がちょうどスカートの下端w)ような画を円軌道カメラワークで実現すると、円の中心(★注視点)の高さが9.60で、半径(★アーム長-)は-9.40です。

この状態でミクさんに左90°回ってもらって撮影すると、下の左になります。
このときのカメラ位置を緑の箱で可視化したのが下の右です。

この状態で「作業用視点」ボーンの回転角度をいじると、回りも確認できます。
緑の箱で示したカメラ位置でカメラを回す感覚です。
Rxを-45°にしてみたら下記のような画になってました。
袖がクリッピングに喰われてるか心配だったんですけど大丈夫そうですね。
円軌道の中心を肩の高さ程度に上げると、下の状態です。指先までレンダリングされてますね。半径を改めて調整しなくてもとりあえずOK。

この距離だとミクさんが結構近くて迫力を感じられます。ミクさんの手がカメラに届かないということは、こちらの手もミクサンの体には届かないw。でも、おそらくミクサンの手には届きます。(実際にVRデバイスでこれをやってる姿を他人に見られたら超恥ずかしいことでしょう‥)

これより近いと、手を伸ばせばミクサンの体に届く距離ということで、圧倒的な迫力になります。紳士的には最高!ですが、クリッピングに負ける可能性が飛躍的に高まることと、VRデバイス(とそれを見る人の立体認知能力)によっては近過ぎて立体視が難しくなります。


4.3.2. 常に中央にモデルを置くこと


2体以上の動画を作る場合、2D動画なら対象モデル達がフレームインしてれば特に問題ありませんが、VR180動画では配置に気を使うほうがよいです。
下記の例では、うp主の主観的には左はOK、右はあまりよくない例です。
うp主的考察としては、VRデバイスを被って空間的にものを見ているとき、一度に見れる範囲が左図ぐらいまでだからです。
とはいえ、ずっと左のような状態だと対象が遠くてVRで視聴する意味が薄れてしまいます。
解決策として、右のような感じの2Dカメラワーク区間では、時間を半分に区切って、前半はミクさんを中央寄りに、後半はすっとカメラを移動させてリンちゃんを中央寄りに据えたりすることで見易さに気を使ってます(下図参照)。VR180で中央がずっと空白というカメラワーク(上図左)が続くのは、かなり辛い感じの動画だとうp主は感じてます。


4.3.3. Working FloorがVR180では紳士的に無敵な件

もし、今回のうp主の記事がどこかの誰かの動画作成に貢献できているなら、うp主の希望はただ一点、できればWorking FloorなVR180動画作ってください、です(をぃ)。
うp主が理想とする動画は、(めいっぱい紳士な動画作るという欲望も否定しませんが)一見健全に見えてるけど、紳士なら気づくようなところに紳士さが埋め込まれてるような動画です。
作ってみれば実感してもらえると思うのですが、視野角135°の端(正面から端まで67.5°)というのは相当意識しないと目を向けない境界線です。しかし、VR180では当然、正面から90°まではレンダリングします。残り22.5°が紳士的に涅槃の領域だと悟りました。あとは下の図を見て察してください。点線が視野角135°の端です。これは4.3.1.の最後と同じカメラ配置です。ミクさんはVR的にかなり正面に大きく(手を伸ばせば顔に手が届くかもという程度に)迫っています。普通、そんなときに下とか見ませんよね。下に目を向ける(赤矢印)のは紳士だけw。

雑学が済んだところで、次の5.節の レンダリングとエンコーディング に移りましょう。









2021/03/05

MMD-VR180 HOWTO Chap.3 物理停止


3. 物理停止


MikuMikuDanceでは、実行ごとに物理シミュレーションの結果が異なります。例えば髪やスカートの挙動などです。こうした物体の挙動を EquirectangularX.x での複数回レンダリング中に同一になることを保証するために、あらかじめ物理演算の内容を保存し、再生時に保存した挙動によってのみレンダリングする(乱数等を用いない)ようにすることが本節の目的です。

[memo] 物理シミュレーションの結果を実行ごとに異ならないようにする方法もなくはないのですが、ここでは扱いません。止めておいたほうが(たぶん)スカートの破綻とか確実に見つけてつぶせるので嬉しいかなと。

物理停止の作業は、カメラワークと直接関係はしないので、本当はここで行う必要はありません。1.節より前でも、4.節より後でも構いません。次の4.節でVR180でのカメラワークを紳士の極限まで追求するには、今のうちに作業を行っておくのがよいと思います(笑)。
物理停止をすると、pmmファイルサイズが大きくなるので、MikuMikuDanceでpmmファイルを開くときや保存するときに時間がかかるようになります。注意してください。うp主の環境では、pmmファイルを開くのに2分以上かかることもよくあります。


3.1. MMDMの導入


感謝先 https://www.nicovideo.jp/watch/sm25422103
サイト https://dw.z5i.net/mmdm/ (nef様)
DLしたものを展開して使えるようにしておきます。
今回の動作確認は 0.0.2.6 版で行っています。


3.2. MMDM用スクリプトの導入


うp主の用意したMMDM用マクロ(「物理焼込」フォルダ)を、MMDMの macro フォルダの下に配置しておきます。(デフォルトで用意されている「sample」フォルダや「_hotkey」フォルダに並ぶ形にします)
成功すれば、MMDM起動時に、マクロメニューがこんな形に並ぶはずです。


3.3. 焼込実行


MikuMikuDanceとMMDMの両方を起動しておきます。
MikuMikuDanceに、325-302.ppmを読み込んでおきます。
MikuMikuDanceでは、メニューから「物理演算」⇒トレースモードを選択しておきます。
焼込実行の間は見た目は関係ないので、少しでも早く処理するために、メニューからMMEffect⇒エフェクト使用、をオフにしてMMEを停止してしておきましょう。

あとは、下記の作業を、物理を含んでいる全てのモデルそれぞれについて行います。
  1. MikuMikuDanceのモデル編集モードで物理を含むモデルを選択し、第0フレームに合わせたあと、メニューから「物理演算」⇒「物理影響ボーン選択」(フレーム操作ペインにて、当該ボーンが赤文字表示になるはず)
  2. MMDMでmacro⇒物理焼込⇒繰返・ボーン操作登録:**を選択
  3. 動画の長さに合わせたフレーム数を指定して実行
上記で、**に相当する部分には、毎フレーム/2フレーム毎/3フレーム毎/5フレーム毎、のいずれかを選んでください。
数字が小さいほど物理現象の正確な保存になります(たぶん)。
ただ、数字が小さいほど、登録フレーム数が増え、処理が遅くなります。
また、MikuMikuDanceには、登録できる編集点数の上限が600000個という制約があるので、数字が小さいと焼込途中で上限に達して焼込実行失敗という悲しい目に遭う可能性があります。
うp主の製作動画では、モデルが複数だったり、中には物理ボーンがてんこ盛りのモデルがあったりするので、3フレーム毎か5フレーム毎を使うことが多いです。

[メモ] 物理ボーンが50個あるようなモデルを3体使うと、1フレームで50x3=150点使います。6000フレームの映像(200秒=3分20秒)で毎フレーム打つと、150x6000=900000点になってこれだけでアウトです。そんなモデルあるのか、と思うかもしれませんが、意外にあるんですよねぇ。このような場合でも、3フレーム毎にしてしまえば、900000/3=300000点になって、何とかなる感じです(元からのモーションが使っている点数にもよりますが)。

髪やスカート等どこかで破綻が見つかったらパーツの配置などを見直して、焼込実行を再度実行してください。

最後に、メニューから「物理演算」⇒「演算しない」を選択して(MMEもエフェクトをオンにして)最初から最後まで通し再生し、物理が演算されてなくても、見た目上、物理が反映されているように見えることを確認しましょう。VR180では今のカメラ視野より広いところを撮影するので、その辺りにも破綻がないか確認しておいたほうがよいです(経験談)。

全ての確認が済んだら、325-303.pmm として保存します。保存には数分ぐらいかかると予想されます。忍耐強く待ってください。
これで3.節の内容は終了です。

次は 4.節 VR180カメラワーク調整 に進みます。


3.4. トラブルシューティング


稀に、上記の手順で物理停止すると、見た目がおかしくなるモデルがあります。物理など使って凝った形状生成していたりするとそうなることがあるようです。「物理演算」を「演算しない」にして再生すると見た目がおかしくなって、「物理演算」をするようにして再生すると見た目がまともになる場合がこれに該当します。
この場合は、使うモデルそれぞれで
1. 「物理演算」⇒「全ての物理ONフレーム選択」
2. 「物理演算」⇒「物理ON/OFFフレーム変換」
を行い、「×」とマークされている編集点を全て「◆」に入れ替えてください。
その後、「物理演算」を「トレースモード」(オン/オフモード、常に演算、でも構いません)で再生して挙動がおかしいモデルの部位を探し当てて、それについてだけ編集点を削除してください。
うまく削除できれば、「物理演算」を「トレースモード」で通し再生したときに挙動が正常に見えるようになると思います。この場合は、今後もトレースモードで再生するように指定した状態でpmmを保存しておいてください。

[メモ] 厳密には、この対処では複数回レンダリング時に物理シミュレーションの影響を受けるボーンが同じ挙動になることを保証できないのですが、経験上、おかしくなるような機構は乱数を用いていないので、トレースモードで同じ挙動になります。

ちなみにおにぎり道場式の大腿ボーンについての対処法は こちら にまとめました。



MMD-VR180 HOWTO Chap.2 2Dカメラワーク作成


2. 2Dカメラワーク作成


1.節では、元になるMMDからのカメラワーク移設のための準備を行いました。
2.節では、カメラワークを移設したうえで自由なカメラワークを作成する方法を説明します。なお、元になるカメラワークがない場合は、本節の内容からスタートすれば問題ありません。


2.1. カメラワーク構成の注意


2D動画と同じような感じでVR180にてカメラワークを作ると、HMD視聴時にVR酔いする可能性が高いです。VR酔いする原因は主にカメラの回転です。MikuMikuDanceでのカメラ軸で説明すると、危険な順は次の通り。
1. Z軸回転(水平を狂わすような回転)
2. X軸回転(見下ろす・見上げるような回転)
3. Y軸回転(左右を見回すような回転)
特にZ軸回転は危険です。Z軸+X軸回転を同時に行うと、うp主だと数秒程度で致死量です(弱い‥)。逆に、1秒程度までならVR180体験でのいいアクセントになります。

[メモ] なお、視聴時に椅子に座ってじっとしていればVR酔いはある程度抑えられます。首を振るにしてもX軸Y軸ならなんとかなります。Z軸に首を振ると(弱い人は)一気に酔います。どうでもいいかもしれませんが、酔いそうになったら、首を真っすぐにして、片目を瞑れば多少マシになります。HMD外すのが一番ですけどね。
私が大いに参考にさせていただいたほうりき様の補助ファイル群では、意図的にZ軸X軸回転操作しないようにしてあります。私の初期のVR180動画でもそれに従って、カメラ回転はY軸回転のみに限定していました。ただ、慣れてくるとだんだん物足りなくなるのも人の世の常です。そういう経緯に基づいているので、ここで紹介する方法は、ほうりき様の補助ファイル群を使う状態でさらに望めばZ軸X軸回転もできるようにします。このついでに、1.節からのカメラワークの移設もできるようにしています。
なんかごちゃごちゃしてますが、要するに、うp主のやりたいこと全部詰め込んだらものすごいツギハギになったってことです。


2.2. カメラワーク用pmxファイルの導入


本節の操作は、ほうりき様の EquirectangulerX.x の利用に向かっての準備です。
全て、MikuMikuDance上での操作です。あらかじめ、2D動画として構成済みのプロジェクト(pmm)があるとします。
ここまでの例で言えば、325-301.pmmをMikuMikuDanceで読み込んだ状態でここからの作業を開始します。

カメラワークがついている場合(1.節から来た場合)
カメラ操作を全フレームに渡って全て削除してください。

VR180視点f16.pmx を導入
VR180視点ft5.pmxはほうりき様の「視点ボーンアーム付き_EquiFX向けカメラ回転用.pmx」をうp主が小変更したものです。これをMikuMikuDanceで読み込みます。
作業が終わったとき、モデル操作のプルダウンメニューの最後が「VR180視点f16」になっていることを確認してください。(上のほうに他モデル等が並んでいるのは構いません)
※図ではf15になっていますが、f15でもf16でも説明は同じです。


2.3. カメラ初期設定


カメラ編集モードにします。
視点の「追従」をオンにして、「ボーン」にチェックを入れます。

カメラ操作において、第0フレームで、カメラパラメータを全て0として登録します。通常はカメラ中心Yが10.0、距離が45.0にデフォルト設定されていると思いますが、これらも0にしてください。

さらに、カメラ操作において、「パース」オン、ボーン追従を「VR180視点f16」の「作業用視点」にして登録してください。視野角はとりあえず好みの値で構いません。

作業が済んだらこんな感じの編集画面になっているはずです。
※図ではf15になっていますが、f15でもf16でも説明は同じです。

視野角について、新規作成の場合、うp主は30°から45°ぐらいをよく使います。1.節から来て元からのpmmにカメラワークがついていた場合は、視野角は固定値にしてあったでしょうから、その値をそのままにしておきましょう。325-301.pmmでは35°固定にしています。

これ以降、最後まで第0フレーム以外で編集点があってはいけません。
全てのカメラワークの動きは2.2.節で導入した「VR180視点f16.pmx」が担います。

参考までに、VR180視点f16.pmxの中のボーン構造は以下のようになっています。このボーン構造によって、カメラ操作をモデル操作に完全に移し替えています。


2.4. カメラワークの移設


ここの作業は、1.節でカメラモーションファイル(vmd)を作成した人のみ対象です。
そうでない場合は読み飛ばしてください。

MikuMikuDanceで、モデル編集モードにして、「VR180視点f16」モデルを選択しておきます。
第0フレームで作業することを忘れないように。
この状態で、1.節で作成した vmd ファイルを順不同でドロップします。(ボーン追従がない場合はvmdファイルは1つだけ、325-301.pmmのようにボーン追従がある場合はvmdファイルは4つあるはずです)
成功すれば、各ボーンに編集点が赤く表れるはずです。

【ボーン追従が含まれている場合のみの作業】
1.2.節でのメモをもとに、「VR180視点f16」の外部親を設定します。該当するフレームで、「VR180視点f16」モデルの「▽移動」ボーンに対して親設定を行います。325-301.pmmの例では、ボーン追従開始フレームの第300フレームと、通常復帰フレームの第409フレームで親設定を行います。
VR180視点f16モデル「▽移動」ボーンの親設定:300フレームと409フレーム

全ての作業が終了したら、カメラ編集モードにして再生してみてください。
カメラに編集点がないのに、元のpmmと全く同じ映像が確認できるはずです(感動‥)。


2.5. 2Dカメラワーク調整


カメラワークを1.節から持ち込んできているかどうかに基づいて、ここでの調整方法を変えたほうがよいと思います。なお、ここではまだ2Dでのカメラワークです。(視野角は一定値を保つようにしてください)

方法1:円軌道カメラワーク(新規作成)
カメラワークを1.節から持ち込んできていない場合の推奨方法です。
慣れてないうちは、ほうりき様の提案のように、円軌道だけで制御するのが見やすくてよいと思います。
・「VR180視点f16」モデルにおいて、4つのボーンで制御します。
 ⇒★注視点:カメラ中心の位置X/Y/Zを注視点にしましょう。
 ⇒★注視水平角:注視方向になります。
 ⇒★アーム長Z-:半径になります。(Zの負値で指定。X,Yは0のまま!)
 ⇒★見回し:カメラの最後の方向を調整します。(回転X/Y/Zで指定)


最後の「★見回し」ボーンは、三脚をそこにおいてその上に載せたカメラの向きを変えるイメージで操作するといいでしょう。特に見上げや見下ろしに便利だと思います。
※2021/03/18の改定でうp主的に便利そうだったので追加しました。

わかりにくければ、「可視化」モーフもつけてあるので参考にしてください。一時的に視点の「追従」をオフにして「ボーン」のチェック外すと可視化した構造を見ることができるでしょう。下図が「可視化」した状態です。緑の箱がカメラを、その中の赤箱が右目カメラ、青箱が左目カメラに相当します。水色の棒がアームに相当して、黄色い小球が注視点を表しています。
・外部親をつけることもできます。対象モデルの動きが激しくないのなら、「★注視点」ボーンの外部親を注視対象モデルの センターボーンにすることが一案です。例えば、 https://youtu.be/ULWMTE1ul5s の59秒目以降と1:56秒以降の数秒がその一例です。(
さらに根本側の「▽移動」ボーンで外部親設定してもよいです。この場合は、「▽」「▼」で始まる名前がついたボーンの影響も受けます)
・見上げや見下ろし等の斜め方向カメラワーク(円軌道そのものを傾けるようなカメラワーク)はしないほうがいいと思います。単純に注視点を上下させ(円軌道の水平を保ったまま上下だけさせ)、VR視聴者側が自分で見上げる・見下ろすよう促すほうが自然な感じです。どうしても斜め方向の角度をつけたい場合は、円軌道カメラワークの外の「▼移設カメラ」ボーンで行うのがいいでしょう。
 
方法2:カメラワーク移設からの調整
1.節で調整済みのはずなので、ここで調整することはないはずです。どうしても変更を加えたい場合は、「▼移設カメラ」ボーンか、「▽距離」ボーンの値を変更するのがよいでしょう。
[メモ] カメラワーク移設からの調整時に円軌道カメラワークを(重ねて)使ってももいいのですが、2.3.節のボーン構造を空間的に理解できていないと何が起こっているのか把握することが難しいのでお勧めしません。挑戦するにしても相当慣れてからにしましょう。
 
2Dでのカメラワークが決まったら、325-302.pmm として保存しておきましょう。
これで2D動画としてできることは済みました。
2.節の作業は終了です。

次は3.節で 物理停止 の作業をします。