画像から 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 ポーズで描かせて起こすと、手先に平たい板のような物が付きました。

seed を 42・1042・7 の3つで起こすと、板が付いたのは 42 と 1042 でした。7 では板は付きませんでしたが、腕を含む左右の幅は絵の 1.56 倍で、板の付いた2つ(1.55 倍と 1.56 倍)とほとんど変わりません。手先の板だけを消せば済む話ではなく、腕そのものが絵より長く起きていました。seed を選び直して当たりを探しても、ここは抜けられませんでした。
横の2枚に、腕の長さが写っていない
T ポーズでは、腕が肩から真横に伸びています。横から描いた2枚では、その腕がこちらに向いた点としてしか写りません。腕がどこまで伸びているかが分かるのは、正面と背面の2枚だけです。
袖の太い人物では、この姿勢のままで困りませんでした。手先の板と長い腕が出たのは、腕の細い人物のときです。4方向の絵を揃えたつもりでも、腕の長さについては2方向分の手掛かりしか渡せていませんでした。

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

seed 42 で起こすと、手先に板は付きませんでした。幅は正面で絵の 1.011 倍、横で 1.018 倍で、T ポーズのときの 1.55 倍を超える伸びは無くなりました。
A ポーズで起きた模型に骨を付けて T ポーズの動きを写すときは、腕の骨の休みの向きを、水平に上げた向きに直してから差を取る必要がありました。
おわりに
4方向の絵から人物を起こすときは、横の絵にも腕の長さが写る A ポーズで描かせると、試した seed 42 では、腕の細い人物でも手先の板と腕の伸びは出ませんでした。seed を替えて当たりを探すより、入力の絵の姿勢を見直す方が効きました。ただ、解けたのは腕の幅と手先の板までで、この先の段まで通した人物の見た目は粗いままでした。
※ Pixal3D の振る舞いは執筆時点で試した物で、いまは変わっている可能性があります。


