MikuMikuDayo

0 1

Download(x64_win)

はじめに

MikuMikuDayoは、サンドマン氏が開発したPMXファイル用のレンダラです
MITライセンスのオープンソースで公開されています
https://github.com/pennennennennennenem/MikuMikuDayo

本サイトで公開するMikuMikuDayoは、サンドマン氏の制作物(バージョンβ1)をもとに𝕔𝕒𝕥𝕟𝕚𝕡が、ひとまずキャラクター1体が踊るダンス動画を作れるように改修を加えたものです
(𝕔𝕒𝕥𝕟𝕚𝕡が改修を加えたMikuMikuDayoもMITライセンスのオープンソースです)

(2025/02/16 追記) サンドマン氏がMikuMikuDayoバージョンβ2をリリースし、本家のMikuMikuDayoで動画が作れるようになりました
なのでMikuMikuDayoで動画を制作したい方は、サンドマン氏が公開しているMikuMikuDayoを使用することをお勧めします

キャラクターのほかにステージを一つ読み込むことができ、それぞれにVMDファイルによるモーションを読み込むことができます(VPDには対応していません)
カメラモーションの読み込みにも対応しています(照明の読み込みには対応していません)
AVIファイルへの出力ができます(透過AVIには対応していません。したいなぁ)

このツールでの作例は以下の動画を見ていただけますと幸いです
 http://nico.ms/sm43900055

以下、サンドマン氏のReadMeを引用しつつツールの説明等を記載していきます

概要

なんかこれじゃない PMXファイル用のアニメーション出力レンダラです

ベースであるサンドマン氏の”なんかこれじゃないPMXファイル用レンダラ”は、sdPBRなどのシェーダを作るにあたって新しいレンダリング手法を試す時に、お手本が無いと結果が正しいのかどうかわからないので、そのお手本を作るためのモノとして作られました

本サイトでリリースするMikuMikuDayoは、キャラクター1体をダンスさせるぐらいの動画であれば作って遊べますが、できることは動画を作ることだけで振り付けを作ることはできませんので、DanceではなくてDayoです

つくりかけです

そういうことでよろしくです

起動方法

エクスプローラ上でx64\release\MikuMikuDayo.exeをダブルクリック!

操作方法

マウスやテンキーでの操作については画面に表示される通りなのでメニューについて

Fileメニュー

Fileメニューでスカイボックス,モデル,モーション,カメラの読み込みが出来ます。モデルはPMX2.0形式のみ対応しています(PMDやXは不可)。読み込んだモデルやモーションなどの情報をまとめてプロジェクトファイルに保存や読込みが出来ます。

Viewメニュー

以下の3種類からシェーダを選択できます

また、各種設定や情報を確認するウィンドウを表示できます

Motionメニュー

Effectメニュー

Captureメニュー

VMDファイル読み込み時のコードページについて

VMDファイルに格納されているボーン名・モーフ名を示す文字列はANSIでエンコードされているため、VMDファイル内にボーン名として格納されているバイト列と表示される文字列との対応は環境により異なる可能性があります。これに対応できるよう、VMDファイルが作成された際に使われていたコードページが何であるかをconfig.json内のvmd_codepageで指定できるようになっています

デフォルトでは日本語(Shift-JIS)を示すコードページ932が指定されていますが、もし他国語版モデル専用のモーションが正しく扱えない場合は、config.json内のvmd_codepageを変更すると解消できるかもしれません

現状ではいずれにしてもPMXファイルでのボーン名・モーフ名と完全一致した場合のみ正しく認識する実装になっているので、ANSIエンコードされた状態で15バイトを超えるボーン名・モーフ名を指すキーフレームは扱えませんのでご注意ください

材質の設定方法

PMXファイルに含まれる物体の材質名に応じて金属や肌などの質感を切り替えています。ですから、モデルをコピーしたうえでPMXeditorで材質名の変更を適宜行う必要があるでしょう

config.jsonをいじると材質名に含まれるキーワードと材質の対応付けを変えられますが、エラーチェックは雑なので正しく読み込めるjsonファイルでないとどんなエラーが出るか分かりませんから、バックアップを取ってからいじって下さい

デフォルトのconfig.jsonでは以下のような設定になっていますので、PMXファイルをいじる場合の参考にしてください

jsonオブジェクトは以下の構成になっています

default_material

例 “default_material”: { “IOR”:[1.5,0], “roughness”:[0.5,0.5] },

使用できるマテリアルパラメータ名とパラメータの記述法は以下の通りです
大文字・小文字は区別されます
正しく認識できないマテリアルパラメータ名を指定してもエラーは出ずに認識されないだけになるため、正確に書いて下さい

MikuMikuDayoではレイトレーシングを使っており、主要な光源はSkyboxとなります。各材質がまったく発光しない設定で室内ステージを読み込むと、Skyboxからの光がステージに遮断され、内側は真っ暗になってしまいます(現実で考えれば、閉め切った部屋の電気を消せば真っ暗になりますよね)。なので、それぞれの材質に”light”による小さい発光要素を付け足すことでひとまず真っ暗にならないようにすることができます(0.1~0.3ぐらいがいい感じになると思います)。

material

“name”の後にマテリアル名を文字列で指定する必要があります。あとはdefault_materialと同様のオブジェクトを配列で指定します

rule

例 [ { “keyword”:[“金”,”メタル”,”metal”], “material”:”metal” }, … ]

“keyword”配列に指定されたキーワードのどれか一つを材質名に持つ場合、”material”に指定されたマテリアルが適用されます

マテリアルをGUIで設定できるようにしたいですが、予定は未定ですので、config.jsonで指定することに慣れておくと良いかもしれません。設定したjsonファイルはWorkspace内のLoad Json file..ボタンで読み込むことでレンダリングに反映させることができます(jsonファイルを更新したらリアルタイムにDayoに反映するぐらいはしたいなぁと思いますが、予定は未定です)

構築方法

srcディレクトリとlibディレクトリにソースコードが入っています
MikuMikuDayoアプリケーション本体のソースはsrcディレクトリのdayo.cppとdayoWorkspace.cppファイルです
libディレクトリにはアプリケーション本体から使われる様々なSW部品が入っています
全く整理されてないので無理して自分でビルドしなくてもいいです

シェーダのソースコードはMikuMikuDayo\hlslに入っています

VisualStudio2022でのビルドを念頭にしています
Nvidia CUDA Toolkitのインストールが別途必要ですが、それ以外のソースコードはこのリポジトリに全て入っていますので、ソリューションファイルをVisualStudioで開き、ビルドを行えば本体のEXEは生成されます(その他必要なDLLのバイナリは、リリースパッケージより取得してください)。

なお、使用している各オープンソースソフトウェアのリポジトリ等は以下のリンクを参照ください。

DirectX TexはNuGetでインストールするのが簡単です

SimpleMath.cpp, SimleMath.h, d3dx12.hについてはDirectX12Tkから3つのファイルをコピーしてプロジェクトのソースファイルに入れればOKです

BulletPhysicsは付属のcmakeのオプションだとDirectXTex等と一緒に使えないライブラリが出力されるのでPMXLoader.ixxの先頭付近に書いてある方法を使ってビルドしています。

OIDNについては、上記リンクよりダウンロードしたoidn-2.2.2.x64.windows.zipを展開し、oidn.hppにインクルードパスを通し、OpenImageDenoise.libにライブラリパスを通せばOKです

OpenCVについては、上記リンクよりダウンロードし、opencv.hppにインクルードパスを通し、opencv_world490.libとopencv_world490d.libにライブラリパスを通せばOKです

Nvidia CUDA Toolkitは、OpenCVを含めたMikuMikuDayoをビルドする際に必要です。CUDA_PATHの環境変数にCUDA Toolkitのインストール先のパスがセットされている必要があります

使用範囲

MITライセンスで公開されたソフトウェアです

このソフトウェアを使用して作った画像についてはこのソフトウェアの作者は何ら権利も義務も持ちませんから、各自の責任で使って下さい

謝辞

sampleフォルダに添付されているskybox用HDRI lebombo_2k.hdr は、polyhaven.comにて公開されている物を利用させていただきました

PMXLoaderの物理演算対応にあたってはbenikabocha氏sabaを参考にさせていただきました

本サイトで公開するMikuMikuDayoはサンドマン様の制作物をもとに制作させていただきました

誠にありがとうございます

FAQ