画像から 3D の模型を起こす Pixal3D に、人物の正面・横・背面・反対の横の4方向の絵を渡して、検証用に用意した人物を作り、12,000 三角形・骨付きにして動きを付けられるかを技術検証しました。動きを付けるところまではできましたが、見た目は粗いままで、成功とは言いがたい出来でした。

この記事は、その最初の段、4方向の絵から模型を起こす所で詰まった話です。最初の人物は T ポーズの絵から絵どおりに起きたのに、腕の細い女の子の人物では、手先に平たい板が付いたり、腕が絵より長く伸びたりしました。

結論

  • T ポーズの絵では、横の2枚に腕がこちら向きの点としてしか写らず、腕の長さの手掛かりが正面と背面の2枚だけになります。
  • 腕の細い人物を T ポーズで描かせると、seed 3つのうち2つで手先に平たい板が付きました。板の無い seed でも、腕を含む左右の幅が絵の 1.56 倍ありました。
  • A ポーズ(腕を体の横で斜め下に下ろし、手を体から離す)で描かせると、seed 42 の1回では板は付かず、幅のずれは正面で 1.1%、横で 1.8% でした。
  • 袖の太い人物は T ポーズでもずれが 0.6% で、試した中で崩れたのは腕の細い人物でした。

試した環境

  • 4方向の絵:Codex に、正面・横・背面・反対の横を横一列に並べて描かせた
  • Pixal3D:4方向の絵から形と色を一度に起こす使い方
  • 人物:約 2.6 頭身。40〜60px ほどの小さな表示を想定
  • 比べた値:模型を絵の中の被写体と同じ高さに合わせ、絵の被写体の幅に対する模型の幅を出した(正面と背面は腕を含む左右の幅)

T ポーズの絵から、手先に板の付いた模型が起きた

最初に試した人物は袖の太い上着を着ていて、T ポーズで描いた4方向の絵から、絵とほぼ同じ幅の模型が起きました。幅のずれは 0.6% です。

同じやり方で、腕の細い女の子の人物を T ポーズで描かせて起こすと、手先に平たい板のような物が付きました。

T ポーズの絵から起こした腕の細い人物。手先に平たい板が付いている

seed を 42・1042・7 の3つで起こすと、板が付いたのは 42 と 1042 でした。7 では板は付きませんでしたが、腕を含む左右の幅は絵の 1.56 倍で、板の付いた2つ(1.55 倍と 1.56 倍)とほとんど変わりません。手先の板だけを消せば済む話ではなく、腕そのものが絵より長く起きていました。seed を選び直して当たりを探しても、ここは抜けられませんでした。

袖の太い人物の T ポーズは 1.006 倍、腕の細い人物の T ポーズは seed 42・1042・7 で 1.552〜1.563 倍、A ポーズは 1.011 倍

横の2枚に、腕の長さが写っていない

T ポーズでは、腕が肩から真横に伸びています。横から描いた2枚では、その腕がこちらに向いた点としてしか写りません。腕がどこまで伸びているかが分かるのは、正面と背面の2枚だけです。

袖の太い人物では、この姿勢のままで困りませんでした。手先の板と長い腕が出たのは、腕の細い人物のときです。4方向の絵を揃えたつもりでも、腕の長さについては2方向分の手掛かりしか渡せていませんでした。

真横から見た、腕を広げた人形と腕を下ろした人形のシルエット

A ポーズで描かせると、絵どおりの幅に収まった

腕の細い人物の4方向の絵を、A ポーズで描かせ直しました。腕を体の横で斜め下に下ろし、手を体から離した姿勢です。

A ポーズの絵から起こした腕の細い人物。手先に板は無く、腕の長さが絵に近い

seed 42 で起こすと、手先に板は付きませんでした。幅は正面で絵の 1.011 倍、横で 1.018 倍で、T ポーズのときの 1.55 倍を超える伸びは無くなりました。

A ポーズで起きた模型に骨を付けて T ポーズの動きを写すときは、腕の骨の休みの向きを、水平に上げた向きに直してから差を取る必要がありました。

おわりに

4方向の絵から人物を起こすときは、横の絵にも腕の長さが写る A ポーズで描かせると、試した seed 42 では、腕の細い人物でも手先の板と腕の伸びは出ませんでした。seed を替えて当たりを探すより、入力の絵の姿勢を見直す方が効きました。ただ、解けたのは腕の幅と手先の板までで、この先の段まで通した人物の見た目は粗いままでした。

※ Pixal3D の振る舞いは執筆時点で試した物で、いまは変わっている可能性があります。