初めてblenderとMMDを組み合わせて動画を作ったので、
その時調べたことやつまずいたところを書いていきたいと思います。
blenderでステージをモデリングする
とりあえずステージを作りました。

blenderはPBRなので、光と影のごまかしがしにくいです。
光源も「いい感じ」に配置する必要がある。
とりあえずエリアライトを2つ、ポイントライトを2つ。
MMDでの作業とレンダリング
ステージをMMDに持ってくる。
ステージをMMDに持っていくのだが、きちんとテクスチャ張ってエクスポートすると手間なので簡略化します。
まず、ファイル>エクスポート>>WaveFont(.obj)でobj形式で書き出します。

拡大縮小はステージを作ったときの寸法によりますが、5にするとちょうどいい感じです。
拡大率5で、blender上での1mがMMDやPMXEの1グリッド分になるので目安になります。
objにしたらPMXEで読み込みます。
そして、材質色を白くして、テクスチャなどを真っ白にします。
拡散色1、反射色0、環境色0です。

このままだと真っ白で何もわからないので、スフィアマップを入れます。
画像を開かずに、パスを直接入力すれば選択材質のスフィアを一気に書き換えられるので便利です。

これで見やすくなりました。
左右が逆になっているので、モデルの鏡像化で左右を入れ替えます。

これでPMXに出力すれば、MMDで読み込めるようになります。
キャラとカメラの編集
MMDにもってきたら、キャラクターを読み込んだり、MMEをつけたり、カメラをつけたり、
モーションの破綻を直したりなどなど、MMD上でのいつもの作業を行っていきます。

納得できる結果ができたら、出力します。
まず、ステージを消して、背景を透過したキャラだけの動画データをRGBAで書き出します。
次に、カメラデータをvmdで書き出します。
この「キャラクターの動画データ」と「カメラのモーションデータ」をblenderに持ち込みます。
MMDとblenderの合成、レンダリング
カメラデータの読み込みと修正
blenderに戻り、先ほど出力したカメラーデータを読み込みます。
MMDのデータを読み込むには「mmd_tools」というプラグインが必要です。
カメラを選択した状態でインポートすることで読み込むことができます。。

この状態だと、カメラがずれています。ステージを出力した時に、サイズを5倍して出力しているためです。
カメラの動きを1/5にしなければならないので、ヌルオブジェクトを作成し、そこにカメラを入れて、
親にしたヌルオブジェクトを0.2倍にします。

コンポジットする
blenderのレンダリングと、MMDでのレンダリングを組み合わせて1つの動画にします。
以下のノードで、深度でぼかした背景にMMDで出力した動画を重ねて、グローで光らせています。

blender2.8からで、デフォルトでFilmic変換になっていて彩度が落ちるようになっているので、標準に変えます。
ドライバーで時間とカメラ位置を取得しています。
なぜかMMDとblenderで6fほどずれてたので修正しています。原因は不明です。
被写界深度(DOF)について
カメラの被写界深度は重すぎて動画出力にはきつかったので、ピンボケで妥協しました。
今回はキャラがだいたい真ん中にいたので、カメラのY位置で深度マップを調整しています。
ブルームについて
発光処理にはブルームを使わずに、グレアを使ってコンポジットさせています。
キャラの表示の前にブルームがかかると、キャラの手前に光が広がらないからです。
上のように組むことで背景とキャラが合成されてからグレアがかかるので、光のぼかしがキャラで隠れずに合成させます。

Aviutilでの編集
色調補正、歌詞入れ等々をAviutilで行います。
あとはAviutilで編集をすれば完成です。