グラフィックスとか数学…etc

勉強したことのまとめを書きます~.Qiitaはこちら→http://qiita.com/muripo_life

制作物のご紹介(Unity編)

ちょっと早い一人アドベントカレンダー生活5日目 そろそろネタが厳しくなってきたこの頃…

今、緩く制作しているものをご紹介します。

セルを立体的にしたライフゲーム

Unityの勉強をここ一年程度やっていますが… 実は、ゲームにそこまで、思い入れはなかったり… もともとUnityを始めたきっかけは、去年(2014年)のPerl入学式を受講し、懇親会をやっていたときに、サポーターの方にグラフィックやりたいならUnityをやったほうがいいとアドバイス頂いたことに始まる。 ま~そこで紆余曲折あり、今ではUnityの団体の運営を手伝うことになってしまったというから不思議なものである。

ライフゲーム』には,思い入れがある

ライフゲームをというシミュレーションを知ったのは、大学3年の6月のことです。 当時、大学の有志で、学年を超えて関数型言語Haskellの自主ゼミをやっていた。 ちなみに読んでいたのはこれ

Amazon.co.jp: プログラミングHaskell: Graham Hutton, 山本 和彦: 本

当時のスキルセットは、C言語数値計算とほぼわからず理解しいないC++のみ…

Haskellライフゲームをゼミ中の先輩のフリに誰もできず、「こんなんじゃ、君たち話にならないよ!」とお灸を据えられ、先輩が5分そこらで組んで実装したのでえらくショックを覚えた気がする。 そんなこんなでライフゲームには苦い思い出がある。

そんなライフゲームをUnityで実装しようと思った

理由は、なんとなくである。 ただ、Unityでシミュレーションをやってみたいという気持ちが始めた当初からあり、いい機会なので作ってみようと思った。 とりあえず、ググると、やはりもう実装はされている。

wonderpla.net

ただ、2D… とりあえず、セルを立体にしようと思った。

で、Shaderで装飾を加えたり改良をダラダラしていると3か月ほど経っていて現在に至るである。

とりあえず、機能追加やUIをしっかり整えて、来年の3月ごろにはリリースしたいと思います。

ちなみにGitHubに上げているソースです。

f:id:ltqhon:20151122213155p:plain

muripoLife/3D_LifeGame · GitHub

DirectXことはじめ

 

技術力がない中、頑張ってネタを振り絞ると何か変わるのではないと思う日々である。

とりあえず、今年いっぱいまで毎日更新をします。

今回は「DirectXことはじめ」まずDirectXとは何ぞやという話

DirectXとは、Microsoft社が同社のWindowsシリーズのマルチメディア機能を強化するために提供している拡張API

2015年の最近ではDirectX12となるっている。

僕はただいま選考を受けている会社からの課題とDIrectXの課題を渡された。

技術書を探して

ちなみにOpenGL系に比べて書籍が極端に少ない。

そりゃ~、Windowsユーザーしか使えませんからね!

書店に行ってもamazonで調べても、DirectX12の本がない!

というかあった本は五年の前に出版されたDirectX11の本

Amazon.co.jp: DirectX11 3Dプログラミング―「Windows Vista/7」&「Visual Studio 2010」対応 (I・O BOOKS): I/O編集部: 本

ちなみに「Vista/7対応」という文字が…

そして日焼けバリバリしているのに定価

ここが小さい書店ならわかるが、都内の某有名電気街の中の本屋ですよ!!!

その日は、あきらめ帰ろうとするとちょっと待てよ!

最近の本がないってことは、昔の本ならあるかもと思いこれまた多きいBookOff

そしたらあったDirectX9だが、安くあった!

Amazon.co.jp: 15歳からはじめるDirectX 9 3Dゲームプログラミング教室 C++編―Windows 2000/XP/Vista対応: 大槻 有一郎: 本

ということで、『DirectX11 3Dプログラミング』はamazonで買うことにしてその時は1000円程度『15歳からはじめるDirectX 9』を買うことに…

DirectX9の始め方

必要なもの

である。

必要なものたったこれだけなのだが、最初の二日間は全く動かなかった…

 で30時間ほど格闘してようやく動いた!

方法

対象のプロジェクトのに以下を追加する。

でたぶんビルドが通る!

以上。

作ったものそのうちGitHubはてなブログで公開します。

何も機械学習を知らない僕が「by 機械学習of 機械学習」に行ってみた

つい二週間前、FaceBookで友達何人かが「いいね」を詳しく見たのが、始まりだった。(http://www.scj.go.jp/ja/event/pdf2/217-s-3-2.pdf)

最近、グラフィック系のプログラムしか書いてないので、平日開催で、参加費無料、事前申し込みなしということで、リフレッシュのために行こう。

思い立つ。

折角の事実上ニートである。

こういうものには参加しようと思いくことに会場に着くと…

「完全な学会じゃないか!」

ま~でも素人の僕が聞いてても面白い内容だったので、レポートを書こうと思います。

講演内容

「of機械学習

  1. 教師付き学習の新展開:少ない情報から精度良く
  2. 構造的スパース性を用いた機械学習とその最適化
  3. ベイズ敵最適化に基づく機械学習の実験計画

「by機械学習

  1. 機械学習による科学的発見のための仮説生成とその信頼性評価
  2. 機械学習による機械の学習:自動運転からロボットの協調生産まで
  3. 普通の民間企業が抱く機械学習への期待と不安

 でした。

機械学習を学んだことがなかったので「by機械学習」のほうが楽しめましたが…

「of機械学習」は定義がわからないからggりたいのに、wifi繋がんね…

って具合で講演が終わってからの昼休みに飯食いながら調べていました。

とりあえず、

用語の定義

機械学習(MLと表記):明示的にプログラムしなくても学習する能力をコンピュータに与える研究分野

深層学習(DNNと表記):多層構造のニューラルネットワーク(ディープニューラルネットワーク: Deep Neural Network)の機械学習の事

スパース性:高次元データを説明するための変数が,データの次元数と比べて少数であること

教師あり学習:入力とそれに対応すべき出力(人間の専門家が訓練例にラベル付けすることで提供されることが多いのでラベルとも呼ばれる)を写像する関数を生成する。

教師なし学習:入力のみ(ラベルなしの例)からモデルを構築する。

強化学習:周囲の環境を観測することでどう行動すべきかを学習する。行動によって必ず環境に影響を及ぼし、環境から報酬という形でフィードバックを得ることで学習アルゴリズムのガイドとする。

 

感想

「教師付き学習の新展開:少ない情報から精度良く」

実は寝坊てしまい、この講演の途中から入ってきました。

最後しかほぼ聞いていないけど…

ML ≠ BigData + DNN

らしい、わかるために今後勉強します。

あとこれの宣伝をしていた。

機械学習プロフェッショナルシリーズ | 書籍情報 | 株式会社 講談社サイエンティフィク

 個人的には、お金に余裕がなく、別の勉強をメインでやっているため2,3か月後ぐらいに取っておこうと思う。

そのうち買おうと思ったり…

「構造的スパース性を用いた機械学習とその最適化」

こちらはバリバリの理論だった。

{l}^{1}ノルムとか{l}^{2}ノルムとか使うのね~

へぇ~といった感じで、ま~解析的関数を使っているからそりゃ使うかと思ったり…

へぇ~凸関数使うのね~

と勉強しないとわかりません…

って内容でした…

ベイズ敵最適化に基づく機械学習の実験計画」

ベイズ的最適化の話

ベイズ的最適化:入力から出力を得るコストが高いブラックボックス関数を効率的に最適化する手法の総称

らしい、ま~ベイズ推定さえもやってことないし…

そもそもベイズ推定とベイズ的最適化が関係あるかもわかりませんが…

リクルートのサービスや医療現場に活用されているのね~

へぇ~

機械学習による科学的発見のための仮説生成とその信頼性評価」

帰無仮説:仮説検定で捨てるか捨てないか決めようとする仮説。差がない,効果がない,といった否定形のもの。帰無仮説が測定値によって捨てられれば,差がある,効果があるといった肯定形の結論が得られる。

の話でした。

仮説の枠組みについての従来とBigDataを用いた仮説の立て方の違いなどを説明していた。

機械学習による機械の学習:自動運転からロボットの協調生産まで」

今後の機械学習の展望が聞けたり、機械学習を機械の学習の生かす話を聞いた。

個人的には、DNNのフレームワークである。

github.com

が知れて今度触ってみようと思った。

「普通の民間企業が抱く機械学習への期待と不安」

ビッグデータビジネスの話の近年の移り変わりが聞けて面白かった。

どう、機械学習が世の中に生かされているのかをしれたりしました。

 

以上。

ま~統計から機械学習の勉強は来年のどこかでやろう。

ま~シェアハウスの朝活でやろうって話が出ているので勉強しないことはないとおもうが…(機械学習を初めて勉強する人におすすめの入門書 - old school magic)

第5回プログラマのための数学勉強会に行ってきました。

前々から気になっていた。

プログラマの為の数学勉強会をやっと行くことができました。

第5回 プログラマのための数学勉強会 - dots. [ドッツ]

今まで、平日開催で、18:30開始、仕事が19:00定時だったので、参加できませんでした…

ま~現状からだと平日参加でも可能ですが…

講演内容もLTも聞きごたえがあり、とても興味をそそられました。

今回は特にデータ解析から、機械学習などの話が多かった感想です。

最近のトレンドの話が聞けてとても満足でした。

個人的には、

  • 回転する円のショートヒストリー
  • 球面上で踊る複素数
  • 複素関数を見る
  • ゲームアプリの数学@プログラマのための数学勉強会
  • グラフィックエンジニア必見!イージングの数学

などのグラフィック系の話が好きだったので、お気に入りです…

普段書籍や黒板の上での静止画でしか捉えられていなかったものを動画しとして見れることに感動したり

これこそ、プログラミングの基礎で数学をやる醍醐味ではないとか感じました。

あとわかりやすさでいえば、

線形代数が分かると統計学が見える」

というあ講演がすごく、線形代数と統計の話をとてつもなくわかりやすく解説していました。

その方の記事

【数学】固有値・固有ベクトルとは何かを可視化してみる - Qiita

いろいろあるみたいです。

あとは僕はもう買いましたが、

「ゲームアプリの数学@プログラマのための数学勉強会」

の「ゲームアプリの数学」という書籍で

http://www.amazon.co.jp/%E3%82%B2%E3%83%BC%E3%83%A0%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E6%95%B0%E5%AD%A6-Unity%E3%81%A7%E5%AD%A6%E3%81%B6%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%81%BE%E3%81%A7-%E4%B9%85%E5%AF%8C%E6%9C%A8-%E9%9A%86%E4%B8%80/dp/4797384263


こんなわかりやすく、Unityシェーダーから数学のことを書いている本はほぼないと思います。

 

あと、今回とは直接的に関係はないですが、近々機械学習に触れてみたいと思ったので、12月中にTensorFlowを触ってみよう思います。

参考記事

nextdeveloper.hatenablog.com

先日初めてハッカソンなるものに参加してきた。

もうひと月前の話だが、初めてハッカソンに参加してきたので、レポート書こうと思う。

参加したのはこちら

直感を信じろ!五感に訴える作品を作れ‼︎ DESIGNERS’ ハッカソン #MA11 @TDW | Mashup Awards

【ハッカソンレポート】直感を信じろ!五感に訴える作品を作れ‼︎ DESIGNERS’ ハッカソン | Mashup Awards

ハッカソンで五感に訴えるアプリのベータ版を作成し、優勝するとTokyo Design WeekのMashup awardsの本選に行けるといった内容だ。

で、僕が参加したチームがこちら、

hacklog.jp

で、目で感情を分析してコミュニケーションをすると言うツールだ。

技術的な内容としては、UnityでOpenCVを使ってめの切り出しを目の微妙な変化を曜みとるツールを作成しようと考えていたのですが、OpenCVがうまく動かず、動作を取るまでに丸一日要してしまった…

結果として一人で夜なべして目の切り出しをすることに、目の切り出しだしができたのもののそれをうまく調節することができずタイムアップ…

とりあえず、目の切り出しはできたので、そちらでプレゼンをすることに…

初めてのハッカソンで挫折を味わい。

もっとコーディング力をつけたいと思った二日間となりました。

ちなみに僕の糞コードはこちらです。

https://github.com/muripoLife/EyesAuthentication

以上で、ひと月前ですが、ハッカソンのレポートを終わります。

visual studio community(2015)へのopenFrameworksの導入

最近、様々なツールでShaderを書いてみたく。

Unityで詰まった時に、いろんなグラフィックツールをいじっている。

今回は、visual studio community(2015)でopenFrameworksの導入に詰まったので、記事を書こうと思う。

openFrameworks(以後oF)は、大学の学部3年の頃半年ほど使っていた。

そのときの環境は,visual studio 2010

それからmacへ浮気をし、xcodeでの開発をしていたため、Windowsへの導入は4年ぶりの話でした。

oFの導入方法

http://openframeworks.jp/download/

でDLするだけ!!

なのだが、visual studio community(以後vs)でビルドしてもエラーをはく!

ちなみにエラー一覧はこんな感じ

f:id:ltqhon:20151011124154p:plain

で、ggって暇なときに試行錯誤したところ(約2週間)

ようやくビルドできるようになりました。

どうも、oFは、2012(v110)にしか対応してないよう。

最新の2015(v140)は対応しておらず、vsで2012(v110)を使わなければならないらしい。

f:id:ltqhon:20151011125555p:plain

そこで、vs 2012をDLする。

https://www.microsoft.com/ja-jp/download/details.aspx?id=34673

そして、ソリューションエクスプローラーで右クリック

f:id:ltqhon:20151011125222p:plain

「右クリック」→「プロパティ」→「プラットフォームツールセット」→「v110」

f:id:ltqhon:20151011125555p:plain

を「プロジェクト」と「openFrameworksLib」に行う。

これだけでビルド出来るはず…

参考URL

qiita.com

今更、群論…

グラフィックやメディアアートの勉強を本気で初めて、はや三週間が経とうとしています。

 

最初は右も左もわからなかったShaderですが、Unityでの使い方やProcessingへの応用の記事などを見て実践して、GPUやCUDAの勉強などを独学でやってみて少しづつこんなものなのかと感覚をつかんできたところです。

グラフィックといえば、僕が一番武器にしやすいものはなんだろうと考えてみたところ落ちこぼれですが紛いなりにも数学を大学、大学院と専攻していたので、3D数学を一から勉強し直そうと最近、昔買った書籍を引っ張り出してきたところです。

 

とりあえず、今年中に以下の3冊は読み終わる計画でいます。

群論,これはおもしろい ―トランプで学ぶ群― (数学のかんどころ 16)

群論, これはおもしろい ―トランプで学ぶ群― (数学のかんどころ 16) | 飯高 茂, 中村 滋, 岡部 恒治, 桑田 孝泰 | 本 | Amazon.co.jp

線形代数講義 (ライブラリ数理・情報系の数学講義)

http://www.amazon.co.jp/%E7%B7%9A%E5%BD%A2%E4%BB%A3%E6%95%B0%E8%AC%9B%E7%BE%A9-%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E6%95%B0%E7%90%86%E3%83%BB%E6%83%85%E5%A0%B1%E7%B3%BB%E3%81%AE%E6%95%B0%E5%AD%A6%E8%AC%9B%E7%BE%A9-%E9%87%91%E5%AD%90-%E6%99%83/dp/4781910831/ref=sr_1_1?s=books&ie=UTF8&qid=1444395583&sr=1-1&keywords=%E7%B7%9A%E5%BD%A2%E4%BB%A3%E6%95%B0%E8%AC%9B%E7%BE%A9

実例で学ぶゲーム3D数学

http://www.amazon.co.jp/%E5%AE%9F%E4%BE%8B%E3%81%A7%E5%AD%A6%E3%81%B6%E3%82%B2%E3%83%BC%E3%83%A03D%E6%95%B0%E5%AD%A6-Fletcher-Dunn/dp/4873113776/ref=sr_1_2?s=books&ie=UTF8&qid=1444395425&sr=1-2&keywords=3D%E6%95%B0%E5%AD%A6www.amazon.co.jp

 

難易度としてはどれも低そうなので、3冊と多いですが、合間の時間を見つけて読んでいこうとおもいます。

当初は、線形代数と3D数学の使い方だけでいいとも考えたのですが、やっぱりクオータニオンを根本から理解したいと思い、群論のど基礎から勉強し直そうと考えた次第です。

学生時代の代数

学生時代は、群論というか代数がめっぽう苦手で、学部3年の前期に群論初めて講義でやってから最初からちんぷんかんぷん、なぜこんな定義をするのかが分からず、定理の意味合いも全く分からず、兎に角単位を取るために前期は必至で定理を暗記した記憶しかなく。

ぎりぎり単位を取ったといったところでした。

単位を取ってからはきれいさっぱり忘れました。

今考えると原因は、線形代数の理解ができていなかったと思っていて、取りえず院試のテスト勉強で線形代数は固めましたが…

ま~それでも鼻くそ程度の理解でしょうが…

その後、環論の講義はなにを言っているのか何もわからず、二回目で挫折

院試は、代数を完全に捨て、解析と少しの微分幾何の知識で乗り切りました。

修士の研究でも、代数の定理を既知のものとして扱い証明しました。

(PDEでも、関数解析で代数の知識が必要)

ということで、代数からは、逃げるという数学専攻としてはカスな学生生活を送っていたのでした。

 

今更になっての群論

ただ3Dに関する線形代数は、学部の時2年のときに4年のゼミに交じって勉強していた時期があり、代数は必要なんだろうなと思いつつ逃げていました。

ちなみにそのとき読んでいた本はこれ

ゲームプログラミングのための3Dグラフィックス数学

http://www.amazon.co.jp/%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE3D%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%82%B9%E6%95%B0%E5%AD%A6-Eric-Lengyel/dp/4939007375

ただ、最近Unityを触っていると久しぶりにクオータニオンという文字が…

Unityで久々に出会うとは…

ということで、一から3Dの数学を勉強したいという気持ちが5年ぶりぐらいに湧いてきて今更ながら群論からやり直しています。

とま~だらだらと日記を書いてみました。