使い方


プラグイン設定について

MikuMikuDance.exeと同じディレクトリに、READMEのとおりファイル/ディレクトリを配置してください。
MikuMikuDance.exeを起動し、メニュー右にMMDBridgeのメニューが出ることを確認してください。

メニューから、MMDBridgeのプラグイン設定を開くと、MikuMikuDance.exeと同じディレクトリにある、「.py」のスクリプトを検索し、
コンボボックスに表示しています。使用するスクリプトを選択してください。
また、MMDBridgeでは、レンダリングの際に、出力サイズとFPSが必要なので、MMDの設定に加え、ここでも指定してください。


mmdbridge_octane.py について

mmdbridge_octane.py を使用するには、
mmdbridge_octane.py をテキストエディタで開き、octane renderの実行ファイルパスを指定してください。
デフォルトでは、MikuMikuDance.exeがあるディレクトリの、tmpフォルダにobj/mtl/テクスチャなどを出力し、
octane renderでレンダリングした結果を、MikuMikuDance.exeがあるディレクトリの、outフォルダに出力するようにしています。
なお、octane renderのバッチレンダリングを利用するには、octane renderの商用版が必要です。
また、octane renderは、NVidiaのCUDAが動作するGPUが無いと動作しませんのでご注意下さい。

PythonのAPIについて

MMDBridgeは、設定で指定されているpythonスクリプトを、1フレームごとに再読み込みして呼び出します。

pythonでは、
import mmdbridge
from mmdbridge import *

でモジュールをインポートすることにより、MMDBridgeのAPIにアクセスすることができます。

APIは以下のとおりです。

pythonスクリプトのインタフェース: 現状範囲外のインデックス突っ込んだら落ちるので注意。

引数3:法線を出力するかどうか
引数4:UVを出力するかどうか
引数5:カメラの回転にXYZのオイラー角を使用するかどうか。Falseの場合はクオータニオンの軸を使用する。 
 関数名引数1 引数2 引数3返値  役割
messagebox str 文字列 - - -文字列をメッセージボックスで表示する
get_vertex_buffer_size  - - - int頂点バッファの個数を返す
get_vertex_size int 頂点バッファのインデックス - - int頂点の個数を返す
get_vertex int 頂点バッファのインデックス int 頂点のインデックス - [float,float,float] 頂点のx y z座標を返す。
get_normal_sizeint 頂点バッファのインデックス - - int法線の個数を返す
get_normalint 頂点バッファのインデックスint 法線のインデックス - [float,float,float]法線のx y z座標を返す。
get_uv_sizeint 頂点バッファインデックス - - int UVの個数を返す
get_uvint 頂点バッファインデックスint UVのインデックス  - [float,float] UVのu v座標を返す。
DirectXなので0~1の範囲の値です。
get_material_sizeint 頂点バッファインデックス - - int マテリアルの個数を返す 
get_ambientint 頂点バッファインデックスint マテリアルのインデックス  - [float,float,float]マテリアルのアンビエント色r g bを返す。 
0~1の範囲の値です。
get_diffuseint 頂点バッファインデックスint マテリアルのインデックス - [float,float,float,float]マテリアルのディフューズ色r g b aを返す。 
0~1の範囲の値です。
get_specularint 頂点バッファインデックス int マテリアルのインデックス  - [float float float]マテリアルのスペキュラ色r g bを返す。
0~1の範囲の値です。
get_emissiveint 頂点バッファインデックス int マテリアルのインデックス  - [float float float]マテリアルのエミッシブ色r g bを返す。
0~1の範囲の値です。
get_powerint 頂点バッファインデックス int マテリアルのインデックス  - floatマテリアルのpowerを返す。
get_textureint 頂点バッファインデックス int マテリアルのインデックス   - strver0.4以降
マテリアルに設定されたテクスチャ名を返します。
この名前は、copy_texturesで出力されたファイル名に等しく、拡張子を含みます。
ver0.4βまで
マテリアルに設定されたテクスチャ名を返します。
この名前は、export_texturesで出力されたファイル名に等しく、拡張子は含みません。
 get_exported_texture int 頂点バッファインデックスint マテリアルのインデックス - str※ver0.4以降で使用可能
export_texturesで出力されたファイル名を返します。拡張子は含みません。
ver0.4βまでのget_texture関数と同じです。

get_face_sizeint 頂点バッファインデックス int マテリアルのインデックス   - int 面の個数を返す 
get_faceint 頂点バッファインデックス int マテリアルのインデックス  int 面のインデックス [int int int]面の各頂点の頂点番号を返す。
頂点番号は、1pmdファイルごとに 1~頂点数 の番号が割り振られていることに注意。
set_texture_buffer_enabledint 1(有効)または0(無効) - - -使用していません。
テクスチャバッファが有効かどうかを設定する。
デフォルトは無効であるので、get_texture_buffer_sizeはデフォルトで0を返す。
有効にし、有効であるときに1度でもレンダリングしていれば、
有効であるときに取得したテクスチャバッファを利用できる。
get_texture_buffer_size -  -   -  int使用していません。
テクスチャバッファの個数を返す。 
これはこのフレームでアクセスできる全てのテクスチャの個数です。
get_texture_sizeint テクスチャバッファインデックス  -   - [int int]使用していません。テクスチャの幅、高さを返す。
get_texture_nameint テクスチャバッファインデックス  - - str 使用していません。
テクスチャ名を返す。 
この名前は、29番のexport_texturesで出力されたファイル名に等しいです。
get_texture_pixelint テクスチャバッファインデックス  int ピクセル位置 - [float float float float]使用していません。
テクスチャのピクセルのr g b a色を返す。 0~1の範囲の値です。
ピクセル位置は、たぶん画像左上が基準です。
get_camera_up - - - [float float float]カメラのUpベクトルを返す 
get_camera_at - -  - [float float float] カメラの注視点のx y z座標を返す。 
get_camera_eye - - - [float float float]カメラの視点のx y z座標を返す。 
get_camera_fovy - -  - float
カメラの垂直視野をradianで返す
get_camera_aspect - - - float出力サイズのアスペクト比を返す 
get_camera_near - -  - float使用していません。nearを返すかもしれない
get_camera_far - -  - float使用していません。farを返すかもしれない 
export_textureint 頂点バッファインデックス int マテリアルのインデックスstr 保存先の絶対パス(拡張子含)  int 成功なら1失敗なら0 指定したマテリアルのテクスチャを、指定したパスに保存します。
ファイル形式は、"bmp" "png" "tga" "dds" "ppm" "dib" "hdr" "pfm"のいずれかで、第三引数に、拡張子を含めた絶対パスを入れて指定します。
保存はD3DXSaveTextureToFile関数を使用しているため、元のファイルのビット数を必ずしも保持しないことに注意。
export_texturesstr 保存先ディレクトリのパス str ファイル形式 - int 成功なら1失敗なら0使用していません。
全てのテクスチャを指定したディレクトリに保存します。
ファイル形式は、"bmp" "png" "tga" "dds" "ppm" "dib" "hdr" "pfm"のいずれか。
ファイル名はget_exported_textureで取得できますが、凄く適当なものになります。
保存はD3DXSaveTextureToFile関数を使用しているため、元のファイルのビット数を必ずしも保持しないことに注意。
export_uncopied_texturesstr 保存先ディレクトリのパス  str ファイル形式 - int 成功なら1失敗なら0※ver0.4以降で使用可
全てのテクスチャから、 copy_textures関数でコピー可能なテクスチャを除いた
テクスチャを指定したディレクトリに保存します。
ファイル形式は、"bmp" "png" "tga" "dds" "ppm" "dib" "hdr" "pfm"のいずれか。
ファイル名はget_exported_textureで取得できますが、凄く適当なものになります。
保存はD3DXSaveTextureToFile関数を使用しているため、元のファイルのビット数を必ずしも保持しないことに注意。
 copy_texturesstr 保存先のディレクトリのパス -  - int 成功なら1 失敗なら0※ver0.4以降で使用可
マテリアルに設定されているテクスチャで、ファイルから読み込んだテクスチャであれば、
指定したディレクトリにコピーします。
同名のファイルが既に存在した場合も、上書きします。 
ファイル形式は、単純なコピーなので、元のファイル形式を維持します。
コピーしたファイル名はget_textureで取得できます。
get_frame_number - -  - int 現在レンダリング中のフレーム番号を返す。
このフレーム数は、プラグイン設定のFPS値と、MMDから得られるフレーム時刻を掛けたものです。
少し怪しいので将来的に算出方法は変わるかもしれないが、フレーム番号を返すことは変わらない。
get_start_frame int※ver0.5以降で使用可
プラグイン設定で設定された開始フレーム番号を返す。
get_end_frame - - int※ver0.5以降で使用可
プラグイン設定で設定された終了フレーム番号を返す。
get_frame_width - -  - int 出力フレームの幅を返す。
get_frame_height - -  - int 出力フレームの高さを返す。
get_base_path - - - strMikuMikuDance.exeがあるディレクトリのパスを返す。 
get_lightint 頂点バッファインデックス - - [float float float]MMDの平行光源のx y zベクトルを返す 
 get_light_colorint 頂点バッファインデックス -[float float float]※ver0.51以降で使用可
MMDの平行光源のr g bカラーを返す。範囲は0~1。
get_worldint 頂点バッファインデックス - - 要素16個のfloatのリスト使用していません。worldマトリックスを返すかもしれない。MMDはカメラを回転させる代わりにオブジェクトが回転している。よってここで得られるworldマトリックスは頂点バッファごとに違う値となっている。MMDBridgeのAPIで得られるカメラには、このworldマトリックスの逆行列を適用し、MMDBridgeではカメラが移動・回転するようにしているため、通常このマトリックスは必要ない
get_viewint 頂点バッファインデックス - - 要素16個のfloatのリスト使用していません。viewマトリックスを返すかもしれない。
get_projectionint 頂点バッファインデックス - - 要素16個のfloatのリスト使用していません。projectionマトリックスを返すかもしれない。
 is_accessory int 頂点バッファインデックス - - int 0(False)か1(True)※ver0.5以降で使用可
指定した頂点バッファがアクセサリかどうか返します。
 start_alembic_export str 保存先のファイルパス int 出力モード 引数3: bool
引数4: bool
引数5: bool
 - Alembic出力を開始します。
引数2: 出力モード
    ・0 = マテリアルごとのバッファ, 修正した頂点インデックスを使用。重い。
    ・1 = オブジェクトごとのバッファ, オリジナルの頂点インデックスを使用。軽い。
    ・2 = マテリアルごとのバッファ, 1面につき3頂点インデックス全て出力。凄く重い。
引数3: 法線を出力するかどうか。Trueなら出力。
引数4: UVを出力するかどうか。Trueなら出力。
引数5: カメラの回転をXYZオイラー角にするかどうか。Trueならオイラー角。Falseなクオータニオンかのらaxisとangle。オイラー角は後者のクオータニオンを変換したものを使用している。

 execute_alembic_export int フレーム番号 - - -※ver0.51以降で使用可
Alembicの1フレーム出力します。
先にstart_alembic_exportで保存先などを指定しておく必要があります。
 end_alembic_export -※ver0.51以降で使用可
実行中のAlembic出力を終了させます。 
なお、MMDを終了した場合もこの関数と同様の処理が行われます。
d3dx_invert_matrix要素16個のfloatのtuple - - 要素16個のfloatのリストD3DXMatrixInverseを実行して結果の逆行列を返します
d3dx_vec3_normalize要素3個のfloatのtuple - - 要素3個のfloatのtupleD3DXVec3Normalizeを実行して結果のベクトルを返します
get_object_size -- - int現在読み込まれている PMD/PMXファイルの個数を返します
get_bone_sizeint int  指定したインデックスのPMD/PMXファイルのボーン数を返します
 get_object_filenameint  str 指定したインデックスのPMD/PMXファイルのファイルパスを返します
 get_bone_nameint PMX/PMXインデックスint ボーンインデックス - str  指定したインデックスのボーンの名前を返します.
 get_bone_matrix int PMX/PMXインデックス int ボーンインデックス 要素数16個のfloatのリスト  指定したインデックスのボーンの行列を返します

サブページ (2): Alembic版の使い方 mmformat
Comments