【scratch】スクラッチで3Dを表現しよう(その2 z座標をつくる[遠近法])【難易度:★★★☆☆】




いつもブログを見ていただいてありがとうございます。
プロクラスの山足です。

今回は、前回に引き続いて、スクラッチで3Dの作成について解説していきたいと思います!

前回までのブログ

スクラッチにz座標をどう設定する?

scratchは基本的に2次元(平面)の世界でプログラムを作ることが想定されているので、座標の設定にはx、y座標しかありません。

これでは、画面の縦、横しか表現できませんので、奥行きが必要な3次元を作り出すことができないのです。

奥行きを表現するためには、x、y座標に「z座標」を加え、奥行きを表現できるようにする必要があります。

では、z座標のないスクラッチにz座標を設定するにはどうすればよいでしょうか。

意外と答えは簡単です。「変数」でz座標を作ればよいのです。

平面にどのように立体をえがく?

変数のz座標をどう使えば立体視が作れるでしょうか。

そもそも3D映像とか、ビデオで写した現実の映像は、テレビ(平面)で見た時に立体に見えていますよね。

実は、この「立体に見えている」がスクラッチで立体視を作るための重要な考え方となります。

ある条件が揃えば、我々生物は脳内で平面をあたかも「立体である」と錯覚を起こすのです。

例えば、プログラミングから離れてこんな質問を投げかけてみます。

「画用紙に、近くにはボールを書いて、遠くに手を振っているお友達を書いてください」

皆さんはこの質問を聞いて、どのように絵をかく事を思い浮かべますか?

この絵、立体的に見えますよね。誰もこの絵を見てサッカーボールより小さい友だちの存在を疑う人はいないと思います。

そうです、この絵には立体に見える絵のもっとも簡単な手法「遠近法」が使われているのです。

近くのものは大きく見えて、遠くのものは小さく見える、です。

スクラッチには便利な「大きさ」を変えるブロックがありますよね。このブロックを使って、スクラッチで「遠近法」を表現してみましょう。

スクラッチで「遠近法」を表現する

に行けば行くほど小さくして、手前に行けば行くほど大きくする。

z座標が大きくなれば大きさを小さくして、z座標が小さくなれば大きさを大きくする。
※ただし、スクラッチの「大きさ」は限界が大小共に限界があるのでx、y座標に限界値(-240<x<240、-180<y<180)があるように、z座標にも限界値を設け、それ以上大きさが大きくなったり小さくなったりしないように設定できるようにしましょう。

※図はz座標を「0<z<60」の範囲にしています。

こちらのブロックのサンプルプログラムがこちらです。

背景や動き方を調整してより「立体に見える」ようにしよう

まだサンプルプログラムでは「あまり立体に見えないな」と思った方も多いと思います。

ですが、基本設定は終わっているので、周りを飾って、より脳が「立体だ」と錯覚するように環境を揃えていけば立体感が増していきます。

例えば、先程質問で出した絵は止まっているのに立体に見えませんか?

それは、①大小関係が想像できる物体がある、②影が奥行き方向に出ている、のたった2点が追加されただけで「立体感」が増しているのです。

例えば、

・背景を奥行きのわかる絵に変える

・ネコの大きさより大きい、小さいものを遠近法に気を付けて配置する

・レイヤー(最前面、最背面、○層(手前・奥)に出す)を使って手前奥を表現する。

など、思いのままの材料を用意していきましょう!ネコにさらにスプライトを足して立体感を増したサンプルゲームがこちらです。

より「立体感」が増しましたよね。このように、図画法で習った「立体」の表現法を用いることで、難しい計算無しで立体的なプログラムを作ることができました。

さいごに

今回は、3Dを簡単に表現する方法として「遠近法」を紹介しました。

他にも「等角図」を用いればSFC版「マリオRPG」のような立体感など、簡単に3Dを表現する方法があります。

皆さんの知っている立体を表現する図画法で是非「立体的なプログラム」を作成してみてください!

スーパーファミコンやかつての時代のプログラマーの皆さんは、制限された性能の中であらゆるアイデアを捻出し、社運をかけて、プライドを持って立体表現に果敢に挑戦されてきました。

そのとてつもない努力のうえに、現代の素晴らしい技術が存在していることに感謝せざるを得ません。

是非皆さんも、単純に答えを知りプログラムを作ってしまうのではなく、技術を習得することによって、将来の素晴らしいアイデアマンにレベルアップしていきますよう、知識や経験値をものにしていってください。

次回その3に続いていきますので、更なるレベルアップをお楽しみに…!

プロクラスにはスクラッチ講座やUnity講座があります!

よりレベルアップを図りたい皆様に、プロクラスにはプロのプログラマーが教える講座がさまざま用意されています!

興味がある方はぜひご確認ください!

大人が学べるスクラッチ講座もあります!

先生方や保護者の方が学べるスクラッチ講座やUnity講座もありますので、短期間でプログラミングを習得されたい方はぜひご活用ください!