仮想オブジェクトを設置する

仮想オブジェクトを設置する

ARKit では現実世界に重ねて「3次元の物体」を、iPhone の画面上に表示させることができます。この物体を「仮想オブジェクト(Virtual Object)」と呼びます。 S2AR で仮想オブジェクトを設置する方法を学んでいきます。

(注意)S2AR は今も活発に開発が進んでいる実験的なアプリです。今後仕様の変更により操作方法が変わることが考えられます。本書ではバージョン2.0.2 での操作を説明していきます。

S2AR の基本操作

S2AR では、「Scratch 基本ブロック」の他に、「S2AR 拡張ブロック」を Extension(拡張機能)として追加できます。実際に「仮想オブジェクト」を空間に設置しながら、「S2AR 拡張ブロック」を一つずつ説明していきます。

接続ブロック

図1-6-1

すべての操作の初めに、「iPhone とパソコンを接続する」ために使います。 S2AR の画面上に表示される「接続用 ID」を入力してクリックしてください(ランダムに数字は変わります)。 S2AR の画面上に「Connected」と表示されれば接続成功です。仮想オブジェクト作成に進んでください。

リセットブロック

図1-6-2

S2AR の画面を「リセット」して、初期状態に戻します。リセットブロックをクリックすると、設置した仮想オブジェクトをすべて消すことができます。(バグでブロックが残ってしまったときは、S2AR の再起動をお願いします)

色指定ブロック

(.)

図1-6-3

設置するブロックの色を指定します。ブロックの色は RGB の数値によって変化させることができます 。赤(Red)、緑(Green)、青(Blue)の三つの原色を混ぜて、16,777,216(256 x 256 x 256)種類の色を表現できます。

図1-6-4

ウィキペディア RGB の項目より

R、G、B は、0 〜 255 の整数で指定します。例えば、
(R, G, B)=(0, 0, 0) は「黒」を表します。
(R, G, B)=(255, 0, 0) は「赤」を表します。
(R, G, B)=(0, 255, 0) は「緑」を表します(正確には「ライム」という)。
(R, G, B)=(0, 0, 255) は「青」を表します。
(R, G, B)=(0, 255, 255) は「シアン(別名 アクア)」を表します。
(R, G, B)=(255, 0, 255) は「マゼンダ(別名 フクシア)」を表します。
(R, G, B)=(255, 255, 0) は「黄色」を表します。
(R, G, B)=(255, 255, 255) は「白」を表します。

それ以外の色を使いたいときは、「rgb 色見本」などで Web検索してください。

コラム RGB 値と16進数

図1-6-5

「原色大辞典」サイトへのリンク

RGB で色を表現する方法を説明します。

例えば「原色大辞典」サイトより使いたい色を選びます。

図1-6-6

orange(オレンジ)の値は「#ffa500」となっています。図1-6-6に示すように、数字を2つずつ切り離して、R, G, B の値は
R = 【ff】
G = 【a5】
B = 【00】
となっています。ここで注意が必要なのは、この数字が【16進数】で表されていることです。

一般に使う「10進数」は「10」を基数としており、「0, 1, 2, 3, 4, 5, 6, 7, 8, 9」の10個の文字で整数を表します。
【16進数】は、「16」を基数とした整数の表示方法です(プログラミングでよく使用される)。【0, 1, 2, 3, 4, 5, 6, 7, 8, 9】【a(= 10進数の「10」)】【b(= 10進数の「11」)】【c(= 10進数の「12」)】【d(= 10進数の「13」)】【e(= 10進数の「14」)】【f(= 10進数の「15」)】の全部で16個の文字で整数を表します。
S2AR の「色指定ブロック」は10進数で入力しますから、「16進数を10進数に変換」しなければなりません。

図1-6-7

図1-6-7を参照して、G の値【a5】を10進数に変換すると「165」になります。計算方法は、1桁目の 【5】はそのまま10進数の「5」に変換できます。2桁目の【a(= 10進数の「10」)】は16倍して10進数の「16 x 10 = 160」に変換できます。この2つを足して「165」に変換できました。
同じように、R の値【ff】を10進数に変換すると「255」になります。計算方法は、1桁目の 【f(= 10進数の「15」)】は10進数の「15」に変換できます。2桁目の【f(= 10進数の「15」)】は16倍して10進数の「16 x15 = 240」に変換できます。この2つを足して「255」に変換できました。
最後に、B の値【00】を10進数に変換すると「0」になります。計算方法は、1桁目の 【0】はそのまま10進数の「0」に変換できます。2桁目の【0)】は16倍して10進数の「16 x 0 = 0」に変換できます。この2つを足して「0」に変換できました。

図1-6-8

したがって、「オレンジ」のブロックを設置したいときは図1-6-8のように「r=255, g=165, b=0」と色を指定してやります。
(16進数は一見難しいですが、これも慣れです。プログラミングの必須の知識なので、頑張ってマスターしてください)

点ブロック

図1-6-9

X座標、Y座標、Z座標を指定して、ブロックを1つ設置します。このブロックは、すべてのクラフトの基本となるものです。X座標、Y座標、Z座標の数値を変化させて、たくさんのブロックを設置してみましょう。例えば(X, Y, Z)=(5, 10, 15)にブロックを設置してみます。

図1-6-10

図1-6-11

図1-6-11のプログラムを実行して、3次元直交座標系を表示させると、図1-6-10に示すように、X方向に「5」、Y方向に「10」、そして Z方向に「15」に進んだ位置にブロックが一つ設置できていることが確認できます。

なお座標値(X, Y, Z)については、-0.5 や 10.5 など小数点0.5単位で細かく指定できます。マインクラフトは整数値(-9, 0, 234 など)しか設置できないので、S2AR の方がより細かくクラフトが行えるのです。

直方体ブロック

図1-6-12

X座標、Y座標、Z座標、幅、奥行、高さを指定して、直方体(箱形)を設置します。

図1-6-13

例えば(X, Y, Z, 幅, 奥行, 高さ)=(2, 0, 2, 2, 3, 4)に直方体を設置してみました。奥行きが手前方向に伸びていることに注意が必要です。
ブロックのサイズ(幅、奥行、高さ)は 1 以上の整数で指定してください(マイナスや小数を指定するとエラー「Incorrect format」になり、ブロックを置くことができません)。

円柱ブロック

図1-6-14

X座標、Y座標、Z座標、半径、高さ、軸方向を指定して、円柱を設置します。軸方向は「x」「y」「z」のいずれかの値を取ります。円柱の半径については、1 以上の数値を 0.5 単位で指定してください。

軸方向について、以下に例を3つ示します。

図1-6-15

例えば(X, Y, Z, 半径、高さ、軸方向)=(0, 0, 0, 4, 10, y)に円柱を設置してみました。軸方向を「y」としたので、Y軸方向(上方向)に向かって円柱が伸びていきます。色は(0, 255, 0)の緑を指定しました。

図1-6-16

次に、軸方向を「x」にしてみます。

図1-6-17

(X, Y, Z, 半径、高さ、軸方向)=(0, 0, 0, 4, 10, x)に円柱を設置してみました。軸方向を「x」としたので、X軸方向(右方向)に向かって円柱が伸びていきます。色は(255, 0, 0)の赤を指定しました。

図1-6-18

最後に、軸方向を「z」にしてみます。

図1-6-19

(X, Y, Z, 半径、高さ、軸方向)=(0, 0, 0, 4, 10, z)に円柱を設置してみました。軸方向を「z」としたので、Z軸方向(奥行き方向=手前方向)に向かって円柱が伸びていきます。色は(0, 0, 255)の青を指定しました。

このように「軸方向は座標軸の伸びる方向と同じである」と覚えてください。

六角柱ブロック

図1-6-20

X座標、Y座標、Z座標、半径、高さ、軸方向を指定して、六角柱を設置します。円柱と同じように軸方向は「x」「y」「z」のいずれかの値を取ります。

図1-6-21

例えば(X, Y, Z, 半径、高さ、軸方向)=(10, 10, 10, 8, 10, y)に六角柱を設置してみました。軸方向を「y」としたので、Y軸方向(上方向)に向かって六角柱が伸びていきます。色は(0, 255, 0)の緑を指定しました。

円柱の場合と同じように、軸方向は「x」「z」の値を取ることも可能です。どのように設置されるか、自分で確かめてみてください。

球体ブロック

図1-6-22

X座標、Y座標、Z座標、半径を指定して、球体を設置します。

図1-6-23

例えば(X, Y, Z, 半径)=(8, 8, 8, 8,)に球体を設置してみました。簡単に球体を設置することができました。

文字ブロック

図1-6-24

S2AR のウリの一つが「空間に文字を書くことができる」ことです。X座標、Y座標、Z座標、文字、軸方向を指定して、文字を描きます。円柱と同じように軸方向は「x」「y」「z」のいずれかの値を取ります。

図1-6-25

例えば(X, Y, Z, 文字, 軸方向)=(0, 10, 0, A, z)に文字を描いてみました。文字のサイズは「7 x 7」のため、文字間隔を「8」、行間を「10」程度にすれば綺麗に文字を配置することができます。

図1-6-26

S2AR はアルファベットだけでなく、日本語の文字にも対応しています。空間に「漢字」を描いてみましょう。

図1-6-27

S2ARは、JIS第1・第2水準の漢字に対応しています。(X, Y, Z, 文字, 軸方向)=(0, 10, 0, 漢, z)、(X, Y, Z, 文字, 軸方向)=(8, 10, 0, 字, z)にして文字を描いてみました。ドットが荒いので少し読みにくいのですが、「漢字」を描くことができました。

約6,000文字の漢字のデータが内蔵していますから、ほとんどの場合、自分の名前を漢字で表示することができるはずです。挑戦してみましょう。(フォントは美咲フォント

」を利用させていただいています。ありがとうございます。)

文字ブロックに「日本語の文字(ひらがな、漢字)」を入力しずらい場合は、メモ帳などに入力してから一文字ずつコピペすると簡単です。文章を表示させる方法は第2部2章 空間に文字を書く

で詳しく説明しています。

線ブロック

図1-6-28

2つの点を指定して、その間に直線を引くことができます。始点(x1, y1, z1)、終点(x2, y2, z2)の6つの数値をしてしてやります。この節の最初の写真(5種類の正多面体)はこの線ブロックで作成されています。第2部3章 正多面体

で詳しく説明します。

図1-6-29

始点(0, 0, 0)から終点(10, 10, 10)まで線を引いてみました。線ブロックに慣れるため、始点と終点を変えながら、たくさんの線を引いてみてください。

屋根ブロック

図1-6-30

家を建築するために屋根を作るブロックです。(X, Y, Z, 幅, 奥行, 高さ, 軸方向)の7つの値を指定します。

図1-6-31

(X, Y, Z, 幅, 奥行, 高さ, 軸方向)=(0, 3, 0, 14, 7, 10, z)で、一般的な45度の屋根を建築してみました。図1-6-31のように、幅を偶数にしたときは最上段が2つのブロックになります。奇数の場合は最上段が1つのブロックになるのでやってみましょう。

消去ブロック

図1-6-32

S2AR バージョン2で追加された、設置されているブロックを消去するブロックです。(X, Y, Z)の3つの値を指定します。このブロックを活用するとプログラムを簡略化することができます。

図1-6-33

「直方体ブロック」で「3x3x3」の立方体を作り、「消去ブロック」で(X, Y, Z)=(0, 1, 0)でブロックを一つ消去してみました。こういった凹凸のある形状をプログラミングで作るのは大変なのです(プログラムは規則性のあるものを作るのが得意だから)。
ブロックを後から削除できる機能があると、プログラムを簡単にできます。図1-6-33の場合は「直方体ブロック」→「消去ブロック」の2段階で済みます。「繰り返し」も「条件式」も必要ありません。

縮尺ブロック

図1-6-34

S2AR バージョン2で追加された、ブロックサイズを変更するブロックです。拡大倍率を正の数(0.0.1 〜 100)で指定します。このブロックを活用すると、大きな形状の仮想オブジェクトを小さい倍率で表示したり、縮尺の違うブロックを同じ画面に表示したりできるようになります。

図1-6-35

縮尺を「1」「0.1」と変化させて、球を2つ作りました。座標の大きさも同じように伸び縮みしますから、位置合わせが難しいですが、うまく使えばモデリングの幅が広がります。

「3Dモデル作成」など、その他の機能については使い方が少々難しいので、第3部で一つずつ詳しく説明していきます。

以上で、「S2AR 拡張ブロック」の説明を終わります。これらのブロックを組み合わせて、複雑な仮想オブジェクトを作ることができます。次の章では、Scratch のプログラミングを学びながら、様々なクラフトに挑戦していきます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です