見出し画像

ScratchでARプログラミング入門 ④ランダムでボクセルアートをもっと楽しく!

前回の復習

前回は、条件分岐を学び、「もし~なら」ブロックを使って、条件によってボクセルの色を変える方法をマスターしました。縞模様や市松模様やなど、複雑な模様も作ることができましたね!

図1 赤い円を描く

前回の問題の回答例を発表します。上記の図1の赤い円を描くスクリプトは、次のとおりです。

図2 円の回答例

円を描くには、円と表す方程式 $${x^2 + y^2 = r^2}$$ を利用します。

  • 半径 r は 20 なので、$${i^2 + j^2 < 400}$$ が条件式になります。

  • i と j の値は、-20から20まで一つずつ動かします。

  • 条件式を満たす場合、つまり円の内側に赤いボクセルを置くようにします。

読み始める前に

この記事では、私たちが開発した無料ARプログラミング学習アプリ「ボクセラミング(Voxelamming)」の使い方を、Scratchのサンプルコードと共に詳しく解説していきます。

iPhone/iPad/Vision Proをお持ちの方は、App StoreからVoxelammingアプリをダウンロードして、ぜひ一緒にプログラミングに挑戦してみましょう!


ランダムに挑戦!

今回は、乱数を使って、ボクセルアートをもっと楽しく表現する方法を学びます。

ランダム(乱数)ってなんだ?

ランダムとは、予測できない、偶然に起こることを意味します。

乱数とは、ランダムに生成された数字のことです。

例えば、サイコロを振ると、どの目が出るか予測できませんよね?
これは、サイコロの出目がランダムだからです。

コンピュータは、自分で決めた通りに計算を行うので、本来は予測できない数字を作ることはできません。その代わりに、複雑な計算を使って、一見ランダムに見える数字(擬似乱数)を作り出すことができます。

乱数はどんな時に使うの?

乱数は、ゲーム、シミュレーション、データ分析など、様々な場面で使われています。

例えば、

  • ゲーム: 敵の出現位置やアイテムの種類をランダムに決める

  • シミュレーション: 天気予報や株価の予測など、複雑な現象を再現する

  • データ分析: データをランダムにサンプリング(抽出)する

ボクセラミングで乱数を使うと…?

ボクセラミングで乱数を使うと、例えば、

  • ランダムな位置にボクセルを配置して、面白い形を作る

  • ランダムな色でボクセルを配置して、カラフルな模様を作る

  • ランダムな高さのタワーや壁を作る

など、予想もつかない、個性的な表現 を楽しむことができます!

乱数ブロック

Scratchでは、「乱数」ブロックを使って乱数を生成することができます。「乱数」ブロックは、指定した範囲内のランダムな整数を生成します。

図3 乱数ブロック

例えば、「1から10までの乱数」ブロックは、1から10までのランダムな整数を生成します。

ランダムな色のボクセルタワーを作ろう!

乱数を使って、積み上げられたボクセルが、それぞれランダムな色になるタワーを作ってみましょう。

挑戦してみよう!

  • 高さ100のボクセルタワーを作り、各ボクセルの色をランダムに変えてみましょう。

  • ヒント:「色のリスト」を作って、乱数を使ってリストからランダムに色を選ぶことができます。

Scratchのサンプルプロジェクトを開く

パソコンのWebブラウザで次のリンクからScratchのサンプルプロジェクトを開きます。このプロジェクトを改造していきます。

回答例

図4 ランダムカラー・タワー作成スクリプト

図4のスクリプトは、ランダムな色のボクセルを積み上げてタワーを作ります。色は「黒、青、緑、シアン、赤、黄色、マゼンダ、白」の8色です。乱数ブロックで、変数 n に 1 から 8 の数字がランダムに決まります。そして、n の値によって、条件分岐ブロックでボクセルの色を塗り分けます。

図5 ランダムカラー・タワー

スクリプトを実行すると、ランダムカラー・タワーが建築されます。各段のボクセルの色はランダムに変化します。

ランダムな高さの壁を作ろう!

乱数を使って、壁の各列の高さをランダムに変えてみましょう。

挑戦してみよう!

  • 幅10、奥行き10の箱を作り、各列の高さを8から12までの乱数で変えてみましょう。

回答例

図6 ランダムな高さのキューブ作成スクリプト

図6のスクリプトは、ランダムな高さのキューブを作成します。このスクリプトは「地形自動作成スクリプト」の簡易バージョンです。

図7 ランダムな高さのキューブ

スクリプトを実行すると、ランダムな高さのキューブが建築されます。まるで、マイクラの山岳地帯のようなアート作品が作成できました。

地形自動生成スクリプト:プログラムで世界を創造する

今回の講座では、乱数を使ってランダムな高さの壁を作るスクリプトを紹介しました。これは、実は地形自動生成スクリプトの簡易バージョンと言えます。

ゲーム開発の世界では、広大な地形を人の手だけで作るのは大変な作業です。そこで活躍するのが「地形自動生成」という技術です。山脈や谷、平原といった複雑な地形を、プログラムの力で自動的に作り出すことができます。

地形自動生成の基本的な仕組み

地形自動生成の基本的な仕組みは、乱数とノイズを組み合わせて標高を決定することです。乱数の生成: まず、地形を構成する各地点に対して、乱数を発生させます。
ノイズの適用: 生成した乱数に対して、パーリンノイズなどのアルゴリズムを用いて、滑らかな起伏を持つノイズを加えます。
標高の決定: ノイズを加えた値を、そのまま、あるいは特定の関数に通して標高データに変換します。


様々な地形を作り出すテクニック

地形自動生成には、単純な標高の決定以外にも、様々なテクニックが使われています。

フラクタル: フラクタル構造を利用することで、リアリティのある複雑な地形を作り出すことができます。
Erosion (侵食): 雨や風による侵食をシミュレートすることで、より自然で説得力のある地形を表現できます。
バイオーム: 気温や湿度などのパラメータに基づいて、砂漠、森林、雪山といった異なるバイオーム(生物群系)を生成します。

ここまでの作業を保存しておきましょう。

  • まずは、プロジェクト名を決めます。ここでは「連載第4回」と名前をつけました。

  • 「ファイル」メニューから「コンピューターに保存する」を選びます。

  • ダウンロードフォルダーに「連載第4回.sb3」という名前のファイルが作成されます。

これまでのプログラムを改造して、さらに複雑なランダム図形に挑戦します。繰り返しと条件分岐を応用してみましょう。

問題:ランダムなドット絵を描こう!

乱数、繰り返し、条件分岐を組み合わせて、ランダムなドット絵を描いてみましょう!

挑戦してみよう!

  1. 60 x 60 個のボクセルを並べて、正方形のキャンバスを表現します。

  2. 各ボクセルについて、乱数(1から 10)を生成し、その値が8以下ならボクセルを配置します。

  3. ボクセルの色は、1から8の値によって塗り分けます。

  4. 繰り返しと条件分岐を組み合わせて、すべてのボクセルに対して処理を行いましょう。

ヒント

  • 「乱数」ブロックを使って、1から10までの乱数を生成します。

  • 「もし~なら」ブロックを使って、乱数の値によって、処理を分岐します。

回答例は、連載第5回の冒頭で行います。皆さんの力で挑戦してみてください。

次回予告

次回は、「線を引く」ブロックを使って、2点間をつなぐボクセルを配置する方法を学びます。このブロックを応用すると、複雑な立体図形を簡単に作成できます。

お楽しみに!

ScratchでAR プログラミング入門シリーズ

ScratchでARプログラミング入門シリーズの一覧です。

第1回 プログラミングでARボクセルアートを作ろう!
第2回 繰り返しでボクセルの街を作ろう!
第3回 条件分岐でボクセルアートをもっと自由に!
第4回 ランダムでボクセルアートをもっと楽しく!
第5回 線を描いて、AR空間に立体図形を作ろう!
第6回 ボクセルで文字を描いて、AR空間に情報をプラス!
第7回 再帰処理でフラクタル図形に挑戦!
第8回 最終回 自分だけのARワールドをつくろう!


この記事が気に入ったらサポートをしてみませんか?