hisaitamiのブログ

とあるプログラマーの日常

HoloLensアプリ開発(9日目)The Book of Shaders

HoloLensの桜吹雪アプリを会社の人に見てもらったら、「へー」とか「これで枯れ木に花を咲かせたりできますか」とか分かってもらえたので嬉しかった。

本当は外で試そうと思ったら、昨日は午後から雨が降ってきたので中止。

『The Book of Shaders』

第二章「アルゴリズムで絵を描く」の"シェイピング関数"をやってみた。

thebookofshaders.com

基本的な関数

Processingとかでカジったことあるけど、初めて腑に落ちた。

  • 一次関数→直線
  • 二次関数→曲線
  • 三角関数→周期

Kyndaが作った数式の表

macOSにはGrapherという数式をグラフ化してくれるツールが標準で入っている。

初めてつかってみたけどとっても便利だった。

f:id:hisaitami:20170221083609p:plain

Kyndaの数式をひとつずつ打ち込んで理解に務める。

  • x0.5は凹む
  • x1はそのまま
  • x1.5は膨らむ
  • absは跳ね返る
  • sin(x)とsin(πx/2.0)の違い
  • 1.0からマイナスすると反転

HoloLensアプリ開発(8日目)桜吹雪その2

今日はソードアート・オンラインを見に行く前に、別の方法を参考にして桜吹雪のやつを…。

パーティクルを使ったエフェクトの作成方法は人それぞれやり方が違って勉強になりました。

明日公園でどう見えるか試験してみたいと思います。

HoloLensは音量UPボタンとDOWNボタンの同時押しで静止画を撮影できるんだけど、動画は「Hey Cortana, Start recording」って音声で命令する必要があるのが最大のネックだ。

HoloLensアプリ開発(7日目)桜の花びらが舞う感じのやつ

ポケGOクローンの改良をしようと思ってたけど

起きたら気が変わって、

まだ早いけど桜の花びらが舞うイメージのHoloLensアプリを作ってみることにした。

やりかたを調べていたら、とても参考になるというかそのままの記事がありました。インターネットバンザイです。

tsubakit1.hateblo.jp

予備知識が必要だったので、Unityのパーティクルシステムについて調べてみた。

docs.unity3d.com

メッシュとスプライト

メッシュとスプライトは明確に定義された固定形状のオブジェクトを描画する方法である。

  • 3Dではほとんどの要素はメッシュが使われる。
  • 2Dではスプライトが使われる。

移動する液体、煙、雲、炎などを表現するためには、パーティクルシステムという方式を使用する。

パーティクルシステム

パーティクルシステムは、パーティクルの集まり。 各パーティクルは小さな部分を表し、すべてのパーティクルを一緒にして全体の実体が作成される。

  • それぞれのパーティクルにはlifetime(寿命)が設定されている。
  • パーティクルはパーティクルシステムによってemitted(放出)されたときにlifetimeのカウントを開始する。
  • システムは、球、半球、コーン、ボックスやその他のメッシュの領域内にあるランダムな位置にパーティクルを放出する。

紙ふぶきのやり方が分かったので

パーティクルの形状を桜の花びらにする方法を調べてみたら、とても参考になるというかそのままの記事がありました。インターネットバンザイ!

qiita.com

パラメータをちょこっと変えて、こんな感じにしました。

明日、外で試してみたいと思います。

HoloLensアプリ開発(6日目)ポケGOクローンのチュートリアルをやってみた

HoloLensの公式チュートリアルが終わったので、次にやってみたのはLightBuzzのチュートリアル

lightbuzz.com

GitHubからソースコードをダウンロードして真似すれば簡単にできるかと思ったらハマってしまいました。

オリジナルのプロジェクトの「Hierarchy」や「Inspector」を自分のプロジェクトとひとつずつ見比べながら作業することで、ようやく同じような動作をするようになった。簡単にdiffを確認する方法を知りたい。

以下は作業ログ。

プロジェクトの作成

  1. Unityを起動する
  2. 「Project name」を適当につける
  3. 「3D/2D」は3Dを選択する
  4. 「Enable Unity Analytics」はOFFにする

Unity AnalyticsをONにすると、https://analytics.cloud.unity3d.com/ に作成したプロジェクトが管理され、DAU、MAU、ユーザ数、収益などを見ることができる。

しかし、このWebコンソール、「Create New Project」というボタンは分かりやすいところにあるんだけど、登録されているプロジェクトを削除する方法が分からない。

気がついたらゴミで溢れてしまうので、「Enable Unity Analytics」はOFFにしておく。

シーンの作成

  1. Assetsの下にScenesというフォルダを作成する
  2. Mainという名前でシーンを保存する
  3. 「Main Camera」を選択してInspectorで値を編集する
  4. Transform>Positionを[0,0,0]にする
  5. Camera>Clear FlagsをSolid Colorにする
  6. Camera>Backgroundを[0,0,0,0]にする
  7. Camera>Clipping Planes>Nearを0.85にする

猫モデルを配置する方法は記載されてないのでオリジナルのプロジェクトをUnityで開いて確認する。

ジェスチャーでボールを投げる

最初は勉強のためにスクリプトを書き写して動かそうと思ったけど、全く反応も無いしエラーメッセージなど手がかりも無かったのでコピペした。

「Hierarchy」や「Inspector」を調整して動くようになった。

モデルを変えたり、スコアとか情報を表示するよう改造してみようと思います。

HoloLensアプリ開発(5日目)Academyのチュートリアルをざっくり終了

気がついたら2月

HoloLensが届いてから20日ぐらいが過ぎようとしている。

ようやくAcademyチュートリアルが終わった。

最後の「Holograms 240」は2台以上のHoloLensが必要になるんだけど、2/2に開催された「Tokyo HoloLens Meetup」に参加して体験できてよかった。

eventdots.jp

80台ぐらいのHoloLensで通信する貴重な体験ができて楽しかった。

チュートリアルも終わったことだし

ストアからダウンロードできるアプリを色々と遊んでみたし、とありあえずビルドとデプロイの方法はもう覚えたので、何か簡単なアプリを作ってみようと思います。

HoloLensアプリ開発(4日目)Holograms 101

公式チュートリアルをやっています。

https://developer.microsoft.com/en-us/windows/holographic/holograms_101

分かりやすくてとても参考になるチュートリアルですが、序盤はMicrosoft/HoloToolkit-Unityを使えばあまり気にする必要がない事なのかなと油断していたのですが、最後のChapter 7がちょっと予想外だったので面白かったです。

最初にHoloToolkit-Unityの便利さを知ってしまったので、このチュートリアルをやると理解が深まるかなと思いました。

すっかりHoloLensにハマっているのですが、UnityやC#で開発するのはVRと同じなのでキズナアイさんを表示させるために調べた事が役に立っています。

明日は続きのHolograms 210をやってみます。

HoloLensアプリ開発(3日目)A.I.Channel復活記念

今朝のニュース

朝起きたらA.I.Channelが復活してましたね。本当によかったですね。

www.youtube.com

さて本日はAcademyのチュートリアルをやろうと思ってたのですが、そんなわけでキズナアイさんをHoloLensに表示させる続きをやることにしました。

まずは昨日の参考資料「HoloLensハンズオン(ショート) - Docs.com」を復習を兼ねてもう一回やってみました。

HoloLensで見るとこんな感じになりました。

f:id:hisaitami:20170126234645j:plain

本物はもっと明るい瞳だったような。

改良点はいろいろありますが、まずは表示できてよかったです。