拾い食いはVRか?今日ふとしたことで、大北さんとIVRC(http://ivrc.net)の話をする機会があって、VRの研究だとさらに人の感覚を細かく突き詰めていて「ぬるぬる感の本質」とか追い詰めてたりする。Portal-Zさんでもそういうのやりますよね~。いう話をしてたときに「拾い食いは楽しい」というのを発見したんですがこれはVRですか?http://portal.nifty.com/kiji/150609193761_1.htmという質問をされて、答えを出せずに適当にごまかした。元ネタを読んでもらうといいのだが、一言でいうと「道に食べ物を(安全に)置いてもらって拾い食いをする。実際には安全には不可能な拾い食いの「楽しさ」に繋がる部分を抽出して体験させたという意味で広い意味でのVRだとは思うけど、なんか違う。IVRCのようなVRコンテストに出したとしたら以下のように辛辣な質疑の嵐だろう。でてくるけど、質問者の立場は大きく2つに分けられる。一つは人間を知る科学としてのVR学すなわち拾い食いの楽しさのエッセンスは何か?もう一つは人間の性質からVR体験を設計する工学(設計論)としてのVR学、つまり「拾い食いの楽しさを感じる手段として良い方法なのか?」そういった、突き詰めが記事中には無いので大北さんの拾い食いは、「VR的な事例ではあるけれども、VRシステムとしてはちゃんと作られているか怪しい」となんとなく私は感じて、拾い食いは「VR」なのか?という質問に答えられなかった気がする。「VR的な体験だけどVRシステムじゃなさそうですね。」と言う答えでとりあえずはいい気はする。引っかかるものがあるのです。最近VR学会の重鎮の人も草の根的な研究活動について気にしている。大北さんの「拾い食い=楽しい」に対して、研究として体系的な実験で地道に上の質問に答えをだして突き詰める人は出ないだろう。草の根活動として「拾い食い体験」が拡がる可能性はある。したとときに、「寿司を拾い食いするのじゃなくて、回転ずしを拾い食いしたい」とか普通の実験設計ではやらないような事をする人が現れたりもする。かなりの数が無駄な実験に終わるかもしれないが、変な条件でやった例が沢山貯まると、研究者が真面目に実験設計した少数の実験を超える「拾い食いと楽しさの関係」に関する知見が得られるかもしれない。(知見をまとめるのは本業研究者かもしれないが)何を絵空事をと思うかもしれないが、「初音ミクにそれを見た。」と言うと拾い食いのVRもブームにさえ乗れれば不可能じゃない気がしないだろうか?そこまで考慮すると、安易にそんな奴らVRじゃねぇーよといって軽く見るのは危険な気もする。逆に拾い過ぎても薄まりすぎて一瞬のブームで忘れ去れる戯れ事となる気もする。しょうじき、私はVR研究者ではないし、VRの学位も持たない。たんなるVR好きのオッサンだし、このモヤモヤに答えを出せる気がしない。世の中の色んな事に「VRかもしんない」と思ってちょっと立ち止まって見るのはいい所を付いているきがする。注:IVRCとは関係ない個人の私見ですよ。「それは違う」と怒られる気はするけど、まぁ怒られてみないと解らないので、記事として書きました。Pi2でws2812bを使うこの人のライブラリを使えば動くけど、レジスタアクセスは多分volatileを追加したほうが将来コンパイラが変わっても安心。https://github.com/richardghirst/rpi_ws281x#C-cで終了すると終了処理が走らないのでmain.cにSIGINTを追加。ついでにSIGTERMも。ほかにもmailbox.cにおいてレジスタをmmapでマッピングするのは正しく動くけどunmapにバグがあるので修正して使っています。RPi2からWS2812Bへの接続は直接接続でやってます。安全のため100Ωの抵抗を直列に挟んでいます。共有2015年1月19日月曜日fmath.hppでexpを高速化するときにハマる事。以下を使うだけなのですが、ちょっと工夫が必要です。http://www.slideshare.net/herumi/exp-9499790https://raw.githubusercontent.com/herumi/fmath/master/fmath.hppfmath.hppではSSEを使った高速なexpの実装がなされています。gccやclangはもちろんVCでも2008移行なら通るみたいです。(VC2010で通るのは確認)erf等の超越関数も多くはexp(区分近似多項式)の形で実装されているのでboostなどヘッダファイルとして与えられている実装なら高速化できます。boost::math::erf((__VA_ARGS__))気を付けなければいけないのはc++の場合関数マクロの引数がXじゃなくて...になる事。boostはコレにしておかないとコケます。マクロ展開はコンパイラに先立って行うので、「,」を見つけると機械的に複数の引数として検知します。いうようなテンプレート関数を引数に取るときに誤った処理をしてしまうのです。あと細かい話しだとexpをdouble型としていますが、expはfloat型もあります。本当は型によってfmath::expdとfmath::expを呼び分けるようにしてあげる必要がありますが、私自身はfloatをめったに使わないので、上のように手抜きしています。上の方法で全てのソースコードにexpの入れ替えができるというわけではないですが、あらかたうまくいきます。共有2015年1月18日日曜日FreeBSDのfetchでHTTPSのサイトに繋いでエラーが出るとき以下のようにして、「インターネット全体」の証明書を自分のシステムデフォルトの証明書として設定すればよい。/etc/ssl/cert.pem(イントラネットなどでは、別の証明書を使うように指示されてるかもしれないので。(2)fmath.hppでexpを高速化するときにハマる事。