hirax.net::Keywords::「トリック」のブログ



2011-12-01[n年前へ]

ビリヤードの「バタフライ」トリックの「配置図」 

 「おっ?これは!」と驚かされるビリヤードのトリックショットに「バタフライ」があります。ビリヤード台の中央近くに6つの玉を置き、それらに手玉をぶつけ、一撃で6つの玉をすべてポケットに落とすというテクニックです。

 バタフライの玉配置をまずは単純に描いてみると、下図のようになります。左右対称に3つの玉をくっつけた状態で置き、左右にある3つの玉と3つの玉の(玉の大きさの2/3ほどの)隙間に手玉を打ち込む、という具合です。図を眺め、そして玉の動きを実際に眺めていると、玉配置の妙(たえ)に感嘆させられます。玉同士が衝突する際のズレやすべりを経て、6つのポケットへと玉が放射状に転がっていく動きを作り出す仕組みですが、実に絶妙です。(参考:スローモーション動画

 

 ビリヤードのゲームソフトなどは、こういう動きをどのように再現しようとしているのでしょうか?玉の動きを単に剛体球として計算しようとすると、このバタフライのようなトリックは再現することができないでしょう。だとすると、ボール同士の接触が時間をかけて行われるような(たとえば個別要素法のような)計算を(パラメータ調整などで)「らしく」適当に実装しているのでしょうか。

 もしも、ビリヤード玉の衝突後の動きを予測・表示するAR Poolを使って、このバタフライトリックを眺めてみたら、一体どういう「未来予測」がされるのでしょうか?

 それにしても、「単純なシステム」なのに驚かされること・面白いことが、世の中には意外に多くあるものです。

ビリヤードの「バタフライ」トリックの「配置図」






2017-05-30[n年前へ]

機械学習による姿勢推定openposeで「妄撮カメラ iOS版(ネイティブアプリ)」を作ってみる!? 

 10日くらい前、機械学習により画像に写る人体の姿勢を推定するアルゴリズム(コード)のopenposeを使い、画像に写る人の衣服を妄想的に脱がす画像処理ソフトを作ってみました(ディープラーニングによる姿勢推定openposeで「男子の夢な(衣服の下を透視する)妄撮カメラ」を作ってみよう!?)。そして、先週末は、そのソフトをiPhoneから自由自在に使うことができるように(カメラを備えたクライアントiPhone側と機械学習や画像処理を行うサーバ側双方の)Pythonコードを書いてみました(ディープラーニング姿勢推定openposeで「妄撮カメラ iOS版」を作ってみる!?)。

 書いたPythonコードはここに置いておきます。下記2ファイルのうち、前者がサーバ側ファイルで、後者がiOSアプリたるPythonistaコードです。前者は jupyter notebook ファイルなので、jupyterからコードを実行すると、8080ポートでopenposeを使った妄撮(姿勢推定・類似姿勢検索・画像合成)サービスが起動します。そして、後者がiOS上で動くPython(Pythonista)で実装した、妄撮サーバ機能を使うことができるカメラアプリコードです。

  1. boysCamera.ipynb.20170530
  2. boysCamera.py.20170530

 とはいえ、これだけでは先週末に書いたコードをアップロードしただけ…ということになってしまうので、今日はPythonistaコードをiOS用ネイティブアプリケーションにする方法についても書いておきます。

 まずは、Pythonista用のXcodeプロジェクトをダウンロードします。そして、プロジェクト中の main.py に自分が書いたiOS用Python(Pythonista)コードを貼り付けます。そして、Xcodeでプロジェクトをビルドした上で、ビルドされたアプリケーションをiOSデバイスに転送すると、iOSデバイス上でネイティブアプリケーションとして妄撮カメラを使うことができるようになります。

 …というわけで、ネイティブにビルドした妄撮カメラアプリケーションを使って、中二男子大好きな妄想撮影をしてみたようすが、下に貼り付けた動画です。深夜ドラマだった懐かしの「トリック」主人公の姿さえ、透撮できてしまうことに驚きます。

 試してみると強烈に実感しますが、現実世界と妄想世界を(中二男子的に)重ね合わせる「妄撮カメラ」アプリケーションは、実に強烈なMR/ARアプリケーションです。…こうしたアプリケーション、ライセンス的に誰もが使用可能なデータベースやソフトウェアコードを書けば、(中二男子に限って言えば)世界を変えるキラーアプリケーションになるかも!と思ったり思わなかったりします。



■Powered by yagm.net