Lab 7 in Singapore

Unityでのゲーム開発、プログラミング教育、VR/AR/MR、AI・機械学習に関して。たまにシンガポールのネタも。

2017年09月

【バブルミルクティ】「ROCKERY」

今回紹介するのは「ROCKERY」と言うお店。
実際はミルクティの店と言うより新鮮なフルーツジュースが専門の店ですね。
Rockery_01

何回かこの店で買ったことがありますが、ほとんどのお客さんはフルーツジュースを買っていました。
私だけがミルクティと言う感じ。
うーーーん、お店の人もうちでミルクティ買うの?と言うような顔してたし。。。。それは気のせいでしょう。

で、この店のバブルミルクティについて。
Rockery_03

まず、シュガーレベルが選べません。専門店ではないですからね。
(ちなみにそんな店でもシュガーを多めとか少なめ、とか言えば対応してくれます。)
味はあまり甘くなく、ミルクティの味自体が少し薄いですね。
価格は2.7ドルと他のバブルミルクティのお店に比べて高くはないですね。
(毎回言及はしてないですが、いつもバブルミルクティのミドルサイズで比較してます。)

実際この店ではフルーツジュースのほうがおすすめです。
Rockery_02

フルーツのスムージーが特にうまそうだった。
(ならそちらを買えよ ですよね。)

【Unity】Texture への描画を試してみた Part 2

前回軽くTextureへ直接描画をする方法を紹介しました。
http://lab7.blog.jp/archives/2924409.html

今作っているゲームはこの方法を基盤にするものです。
せっかくなので、初心者でも使いやすく、もう少しこの描画ロジックを説明しようかと思います。


まず、Texture への描画ロジックは以下です。
より分かりやすいように、日本語でのコメントいっぱい入れてみました。
移動する GameObjectが、Fieldの Texture上での自分のUV座標を引数に Paint_Lineメソッドを呼び出す形です。

public class Test_Draw : MonoBehaviour {
 // テクスチャは正方形、移動オブジェクトは立方体の前提
 private const int C_TEXTURE_SIZE = 500;//テクスチャの一辺のPixel数
 private const int C_OBJECT_SIZE = 25; //立方体一辺のPixel数
 private Color[] buffer; //色情報操作用のバッファ配列
 private Color OBJECT_COLOR = Color.yellow; //塗る色の指定
 // 塗るテクスチャ座標はオブジェクトの中心座標なので一辺の半分を事前計算
 private int object_Halfsize = (int)( C_OBJECT_SIZE / 2);

 //説明①
 public void Paint_Line (Vector2 point) {
  // UV座標をテクスチャのPixelでの座標に変換
  // この変数をループでの変数に使うので int に型変換
  int point_X = (int) (point.x * C_TEXTURE_SIZE);
  int point_Y = (int) (point.y * C_TEXTURE_SIZE);

  // 現在のTextureの色情報をバッファ配列にコピー
  Texture2D mainTexture
= (Texture2D) GetComponent<Renderer> ().material.mainTexture;
  Color[] pixels = mainTexture.GetPixels(); //説明②
  buffer = new Color[pixels.Length];
  pixels.CopyTo (buffer, 0); //説明③

  //オブジェクトのある X,Y座標(UnityのX,Z座標)部分のPixel座標をループ。
  for(int x = point_X - object_Halfsize;
x < point_X + object_Halfsize; x++){
   for(int y = point_Y - object_Halfsize;
y < point_Y + object_Halfsize; y++){
    // バッファ上でオブジェクトのある Pexel座標の色情報を変換
    buffer.SetValue (OBJECT_COLOR, x + C_TEXTURE_SIZE * y);
   }
  }

  // 色変換をした色情報バッファをテクスチャに反映
  Texture2D drawTexture = new Texture2D (mainTexture.width,
mainTexture.height, TextureFormat.RGBA32, false);
  drawTexture.filterMode = FilterMode.Point;
  drawTexture.SetPixels (buffer); //説明④
  drawTexture.Apply(); //説明⑤
  GetComponent<Renderer> ().material.mainTexture = drawTexture;
 }
}

説明①:
Paint_Lineメソッドの引数 Vector2 pointはテクスチャのUV座標を渡す。
UV座標とは原点 (0,0)がテクスチャの左下で、右上が (1,1)となります。
よって、0~1の範囲と言うことになります。

説明②:
Color[] Texture2D.GetPixels:テクスチャからピクセルの色情報を取得します。

説明③:
CopyTo:配列のコピー。配列のコピーでは=を使うと参照コピーになってしまう。
http://lab7.blog.jp/archives/2651297.html

説明④:
Texture2D.SetPixels(Color[] colors):色情報バッファをテクスチャに反映。
テクスチャにピクセルカラー配列 colors(上記プログラム内ではbuffer)を指定します。

説明⑤:
Texture2D.Apply:SetPixels関数による変更を実際に適用する。

【Cinema】「Wonder Boy」Part 2

前回、シンガポール映画の「Wonder Boy」に関して、概要をお伝えしました。
http://lab7.blog.jp/archives/3147317.html
今回はネタバレもありでストーリーに関して書いてみます。

その前に、本作品は1970年代のシンガポールが舞台で、有名シンガーソングライターの Dick Lee が最初のヒット作 「Fried Rice Paradise」 を世に出すまでのストーリーなのですが、その 「Fried Rice Paradise」。
この映画の出演者たちが歌っている 「Fried Rice Paradise」 が以下の動画で観られます。
一度聞くと頭から離れなくなるような曲です。 どうぞご覧ください。


<ここからネタバレあり。しかし本作品は実話ストーリーだから、Dick Lee の Wikipedia のページなんかでも彼の過去が分かるので大丈夫ですかね。>
長髪もロックも禁止されていた1970年代のシンガポール。
この当時、長髪の者は薬物中毒者扱いされていたとのこと。
(実際、長髪と言ってもちょっと耳にかかるかどうかの長髪だったり、ロックと言ってもハードロックは即牢獄行きだが、もっとソフトな これもロックのジャンル?みたいなのでもセンシティブに扱われていたようですね。)
ちなみに本作品の映像もとてもリアルな感じで、1970年代のシンガポールを忠実に再現しているようです。

そんな中、高校時代の主人公 Dick Lee は親や周囲の反対を無視して作詞作曲を含め音楽活動を続けています。
そして、新しく転向した学校でバンドをやっている仲間と知り合うわけです。
彼らはキーボードプレイヤーを探していて、ピアノが弾ける Dick Lee は彼らのバンドグループからの誘いを受けます。
そのバンドグループが映画のタイトルにもある「Wonder Boy」。

彼らは有名曲をコピーして、学校での音楽Competitionに参加します。そしてそこで良い結果を出したようです。
しかし、バンド仲間も世間も、みな海外の有名曲にのみ興味があり、シンガポールでの自作曲になんて全く興味がありません。
Dick Lee は音楽を披露するのも好きなわけですが、自分の作詞作曲した曲も披露したい。
バンド仲間達に、自分の曲をと訴えるも、誰もそんな話をきいてくれません。
そしてバンド仲間達はそれをうっとうしがって、Dick Lee から離れて行ってしまいます。

意気消沈してしまった Dick Lee は、シンガポール人にとってものすごく重要な O Levelテスト(日本で言う大学入試センター試験みたいな感じ)を開始早々退出してしまいます。
そんな中、同じように試験をばっくれた女の子 Lindaと知り合い、彼女に惚れてしまうと共に、どんどん悪い道(Drug なんかも)に進んでいってしまいます。。
Lindaは最後には離れて行ってしまい、とうとう家族ともうまくいかなくなってしまいます。
しかし、家族は彼を暖かく受け入れ、彼も家族に対して気持ちを入れ替えようとしたタイミングに悲しい事故が起きます。
彼の妹が交通事故で亡くなってしまいます。。。

そして、高校卒業後彼はバーなどでピアノを弾くような仕事をこなしていきます。
そんな中、久しぶりにあった高校時代の友人に、タレントコンテストに出てみてはと提案されます。
そして、そこでプロデューサーに認められて、デビューをしますが最初は全く一般には受け入れられません。
当時のシンガポールの一般の人々は、外国でヒットしてるような有名タイトルしか興味がないのです。
そん中、そのプロデューサー達は完全にローカル色の高い「Fried Rice Paradise」をラジオでかけまくる手段をとります。
この耳に残りやすい曲が、シンガポールの多くの人々の記憶に残り、すごい勢いでヒットチャートを駆け上っていきます。
そして、この「Fried Rice Paradise」のヒットが生み出されました。

最後には現在のシーンとして、Dick Lee 本人が、既に誰も住んでいない、作中に出てきた Dick Lee の実家に訪れます。
そしてそこで、彼の作詞作曲で National Day なんかでも流れる「Home」と言う曲を彼本人が歌います。
昔を思い出しながら。家族、友人たちのことを思い出しながら。

感動のシーンですね。

と言うような感じで、細かい部分は除いて、だいたい全ストーリーを書いてしまいました。
まあ、妹が交通事故で亡くなってしまうことも彼の Wikipedia のページに書いてあるような事実です。
ですので、全体のストーリーがだいたい分かっていても観るのには問題ないかと思います。

この作品の良さは、自伝ストーリーより、映像、演出や俳優たちの演技から来る家族愛や懐かしい青春時代なんかのテーマだと思います。
ぜひ観るチャンスがあれば、(日本ではシンガポール映画はどうしても観る機会がないですよね。。。)実際に観て感動してもらいたいと思います。

自己紹介:志知淳一
脱初心者向け Unity基礎本
Game App from Lab7
GooglePlay_Top_2 (Android, iOS) GooglePlay_Top_2 (Android, iOS) GooglePlay_Top_2 (Android, iOS) GooglePlay_Top_2 (Windows) GooglePlay_Top_2 (Android, iOS)
Sponsored Link
Twitter プロフィール
《Unity、プログラミング教育、ARに関して》 Unityの書籍やテキストの執筆、出版。Unityを用いたプログラミング教室。Unityでのゲーム開発、ARアプリ・サービス開発。機械学習/AI。シンガポール12年在住
Lab7 blog in English
Blog Visitors [訪問者数]
  • 累計:

PV [アクセス数]
  • 累計:

Sponsored Link
Contact [お問い合わせ]
Twitter [最近のつぶやき]
Sponsored Link