TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

3Dモデルから学習データを生成する その3(顔の向きを変える)

前回に続きBlenderで読み込んだ初音ミクMMDモデルを使って、マンガキャラクターの顔パーツ検出用学習データの生成を試みる。

前回は、トゥーンレンダリングを使用して3Dモデルからマンガ風の画像を生成した。
今回は、学習データのバリエーションを増やすため、3Dモデルの顔の向きを変えることを試みる。

Blenderで顔の向きを変えるには、ボーンを操作してポーズを付ける。

ボーンの操作

顔の向きを変えるため、首のボーンを回転させる。

デフォルトレイアウトの画面右上のOutliner領域から
Scene→初音ミク初音ミク_arm→Pose→センター→上半身→首
をクリックする。

f:id:TadaoYamaoka:20170402220122p:plain

TransformのRotation Modeを「XYZ Euler」に変更し、RotationのYの値を「30°」に設定する。

f:id:TadaoYamaoka:20170402220309p:plain

Pythonのコードでは以下のように記述する。

bpy.data.objects['初音ミク_arm'].pose.bones['首'].rotation_mode = 'XYZ'
bpy.data.objects['初音ミク_arm'].pose.bones['首'].rotation_euler.y = radians(30)

レンダリングを行うと以下のようになる。
f:id:TadaoYamaoka:20170402220611p:plain

顔の向きを変えることができた。

同様の方法で、上下を含めて顔の向きをランダムに変更することで、学習データを生成できる。

次回は、3Dモデル上の顔のランドマーク位置からスクリーン上での座標を計算で求める予定。