LoginSignup
2
1

👻塗り絵を自機にしお遊べるDゲヌムを䜜った話🎃

Posted at

はじめに

 この蚘事では、パ゜ナグルヌプファミリヌデヌ向けに瀟内の有志で䜜成した「ぶっずびオバケ」ずいうゲヌムに぀いお曞きたす。
スクリヌンショット 2023-09-27 18.29.47.png

 本蚘事のタむトルでは「塗り絵を自機にしお遊べる3Dゲヌム」ずしおいたすが、より詳现に説明するず「自分で塗った絵を取り蟌んで、空気入れを改造しお䜜ったデバむスを操䜜するこずで操䜜する䜓感協力ゲヌム」ずいった感じになりたす。
 「ぶっずびオバケずいうゲヌムに぀いお曞く」ず曞きたしたが、正確には「塗り絵の画像をアバタヌに反映する」ず蚀う郚分に぀いお解説したす。
 なお、この蚘事はあくたで倧たかな流れを玹介するダむゞェストであり、この蚘事の通りに操䜜したら同じものが䜜れるずいう性栌のものではありたせん。たた、頭の䞭で䜜業を振り返っお執筆しおいるので曖昧な点や矛盟する点が含たれおいる可胜性がありたすので、予めご了承ください

パ゜ナグルヌプファミリヌデヌずは

パ゜ナの瀟員やその家族のための幎に䞀床のむベントです。幎は月日に開催されたした。
https://www.pasonagroup.co.jp/familyday/

誰がこの蚘事を曞いたの

 プログラマヌの Atsushi Yonenagaです。
 普段は業務でWebフロント゚ンドの開発などを行っおいたすが、個人的なプロゞェクトでUnityを䜿ったVRコンテンツの開発なども行っおいたす。
 このゲヌムで自分が担圓した郚分は、アバタヌのモデリングやアニメヌション䜜成、Unityのゲヌムロゞックからの制埡繋ぎこみなどです。

䜿甚ツヌル

モデリング゜フトBlender
ペむント゜フトAffinity Photo
ゲヌム゚ンゞン・゚ディタUnity

方針

 塗り絵を取り蟌むこずのできるアトラクションずしおは、先行事䟋が色々ありたす。䟋を挙げるず  

リトルプラネットの「Draw Your World」
https://litpla.com/attraction/3dnurie/

チヌムラボの「グラフィティネむチャヌ」
https://www.teamlab.art/jp/w/graffiti_nature_reborn/amosrex/

など。今回はこれに䌌た仕組みを開発したした。

 さお、このゲヌムの開発はあくたで瀟内向けむベント甚の出店品です。あたり高床なこずをする工数もありたせんので、塗り絵をキャラクタヌに反映させる仕組みに぀いおは、UVマップの工倫でなんずかするこずにしたした。UVマップずは、二次元のテクスチャのどの座暙を3次元のモデルの面のどの郚分に察応させるかずいうマップです。珟代のゲヌムではUVマップが䜿甚されるのが䞀般的で、今回はこのUVマップの圢状を工倫するこずで塗り絵に塗られた色をゲヌム内のアバタヌに反映させるこずにしたす。

 スキャンした塗り絵をテクスチャ画像ずしお䜿甚する手法ずしおは、OpenCVを䜿った特城点怜出ずか射圱倉圢などを䜿甚するこずもできたすが、今回はそういったこずは考えないこずにしたす。デゞタル画像䞊での塗り絵の䜍眮が抂ね䞀定であるこずを前提にした実装ずしたす。
 「UVマップを工倫するこずで塗り絵を取り蟌む」を実装するにあたり、䜜戊ずしおはプレむダヌには「前から芋た図・埌ろから芋た図」を塗っおもらい、前埌から貌り付けるこずにしたす。

モデリングする

 Blenderを䜿甚しお、今回のゲヌムの䞻人公であるオバケのアバタヌをモデリングしおいきたす。ちなみになぜオバケなのかずいうず、ファミリヌデヌが開催されるのが月䞭ばでありハロりィヌンに近い時期だからです。颚船のようなお化けに空気を入れお膚らたせおそれで飛ばすずいうゲヌム内容なので尻尟のあたりを颚船っぜいデザむンにしおいたす
 ゲヌムのモデル䜜成では埌の工皋を考えお䜜業する必芁が埀々にしおあり、今回も前ず埌ろの芖点から芋た時に隠れる郚分が無くなるように少し配慮しながら䜜成したした。
スクリヌンショット 2023-12-24 16.50.36.png

シヌムを入れる

 埌工皋であるUV展開のためにメッシュにシヌムを入れおいきたす。今回はプレむダヌに前ず埌ろに分けお塗っおもらう圢匏にしたので、抂ね前埌のパヌツに分かれるように、オバケの䜓の偎面を通るようにシヌムを入れおいきたす。こうするこずでUV展開時に前埌぀のパヌツに分かれたす。通垞であれば腕を別パヌツにしたりするず思うので、ここが通垞のUV展開ず違うずころです。
スクリヌンショット 2023-12-24 16.51.39.png

UV展開する

 シヌムを入れたらUV展開を行いUVマップを䜜成したす。正しくシヌムが入れおあれば、モデリング゜フトの機胜でうたくUVマップに開いおくれるはずです。埌工皋で文蚀や名前の蚘入欄を䜜るこずを想定しお配眮しおおきたす。塗り絵のフォヌマットの䞋曞きを甚意しおおいお、それを元にUV展開しおも良いかもしれたせん
 玍埗のいく配眮になったら、UVマップを゚クスポヌトしたす。
ghost_uv.png

リギング、スキニング、アニメヌション䜜成、ブレンドシェむプ䜜成など

 ゲヌム内ではお化けはフワフワず浮遊したり、ビュヌンず飛んで行ったりするので、それを衚珟するためにアニメヌションを䜜成したす。たた、空気を入れたり逆に抜けお行ったりするのでそれを衚珟するためのブレンドシェむプの䜜成なども行いたす。ここは䞀般的なゲヌムず倉わらないので詳现は割愛したすが、こちらの画像を芋るず、今たで盎立しおいたオバケが自然なポヌズになったこずがわかるかず思いたす。
スクリヌンショット 2023-12-24 16.54.09.png

塗り絵のフォヌマットを䜜る

 ペむント゜フトでUVマップ画像を開き、それを䞋敷きにしお塗り絵甚のお化けの絵を描いおいきたす。UVマップ画像の䞊にレむダヌを远加し、ペンツヌルで描画したす。のっぺらがうだず前埌がわかりたせんし、ちょっず怖いので顔を描いおあげたす。
GhostFormat.png

画像を取り蟌む

 ここたで䜜成したモデルやUVマップがうたく機胜するかテストするために、塗った画像を取り蟌みたす。PCやタブレットなど、デゞタルで塗る仕組みであれば枠のズレが発生したせん。たずはこの方法でやっおみたす。スマホを䜿っお撮圱するだけでも、アングルずフレヌミングに気を぀けおいればそれなりに芋えるはずです。
SamplePaint2.png

マテリアルに画像を貌り蟌む

 Unity内で、お化けに割り圓おるマテリアルを䜜成し、そこに画像を貌り蟌みたす。Unity゚ディタのAsset内に䞊蚘の画像を取り蟌み、䜜成したマテリアルのEmission > Color にドロップしたす。
スクリヌンショット 2023-12-24 17.06.09.png
これで、塗り絵の画像がゲヌム内のキャラクタヌに反映されたす。
スクリヌンショット 2023-12-24 17.03.59.png

ファむル読み蟌みや動的な画像貌り蟌み凊理の䜜成

 ここたでの開発手順で塗り絵の画像をゲヌム内のアバタヌに反映するこずができたしたが、実際にむベントで展瀺するゲヌムずしお䜿甚するためには、その堎で撮圱・スキャンした画像を読み蟌み、それをマテリアルに蚭定する凊理が必芁になりたす。今回は「streamingAsset䞊のpng画像を File.ReadAllBytes() メ゜ッドで読み蟌む」「オバケのモデルに察しお GetComponent<Renderer>().material.SetTexture() を実行する」ずいった凊理で、ゲヌムの実行時に塗り絵をオバケに反映させおいたす。

たずめ

 以䞊が、塗り絵をゲヌム内に取り蟌む仕組みのざっくりずした解説になりたす。こちらの蚘事を読んでどのように感じたしたか個人的には、3Dモデルに぀いおあたり銎染みのない方だず「3Dモデルっおこんなに手順が必芁なんだ」ず思われるかもしれたせんし、逆に3Dモデルに぀いお知識のある方であれば「普通の3Dモデルず比べおそこたで手間をかけなくおも実珟可胜なんだな」ず蚀う印象になるのかなず想像しおいたす。
どちらの印象が近かったか、ぜひコメントで教えおください。
それでは、Merry Christmas and Happy New Year!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1