2011-07-24[n年前へ]
■IronRubyからKinectを使ってみる(OpenNI / OSX編)
RubyからMicrosoft Kinectを操作(制御)してみたくなったので、OpenNI(Ver1.1)の.NETバインディングを使い、IronRubyからKinectを操作するコードを書いてみました。たとえば、下に貼り付けてみたのは、IronRubyから深度データにアクセスするコード例です。
require 'OpenNI.net' include OpenNI require 'XnVNite.net' include NITE include System::Reflection include System require 'pp' CONFIG_XML_PATH="SamplesConfig.xml" @context=Context.new(CONFIG_XML_PATH) @depthGenerator=nil @depthGenerator=@context.FindExistingNode(NodeType.depth) status=@context.WaitAndUpdateAll() depthMetaData=@depthGenerator.GetMetaData() pp [depthMetaData.XRes, depthMetaData.YRes] pp @depthGenerator.DeviceMaxDepthこのコードを実行すると、深度画像のXYサイズと最遠距離が、次のような具合に表示されます。
[640, 480] 10000
動作テストはOSX上で行いました。つまり、OSX に.NET環境であるMonoをインストールし(もちろんOpenNIもここに書いてある手順に沿ってインストールし)、その上でIronRubyを動かしています。当然、Windows上でも動くと思いますが、動作確認はしていません(Windows側にはMicrosoft Research Kinect for Windows SDK betaをインストールしているので、OpenNIを入れていないのです)。
RubyでKinectの操作・制御をする…というのは、必ずしも「上手い組み合わせ」ではないかもしれません。けれど、上のようなrubyコードを書くだけで「高度なセンサ群の塊であるKinectからデータを取得できる」となれば、面白く遊んでみたくなる人も多いのではないでしょうか。「Microsoft Xbox 360 Kinect センサー 」を買って、ずっと前に想像していた未来に来た気分になってみるのはいかがでしょうか。
2012-01-05[n年前へ]
■コンパクトデジカメを3D深度撮影可能なKINECTモドキにしてみよう!?
(一万円ちょっとで買った)コンパクト・デジカメを簡易三次元(形状)計測機にしてみました。ピント位置を(輪切り状に)刻々変化させつつ被写体を自動撮影させて、それら(ピント位置が異なる)17枚ほどの画像群から、3次元形状を再構成してみたのです。再構成した3次元形状をグリグリ回してみたのが下の動画(の右の部分)です。参考までに、撮影した17枚の画像をパラパラと眺めてみたようすも、立体グリグリ動画の下に貼り付けておきます。
もう十年近く前になりますが、「ステレオ写真をもとに胸の谷間を三次元的に計測してしまう巨乳ビジョン」や「陰影情報を利用した”巨乳ビジョン Light”」といった「禁断のグッズ」を作ったことがあります。
今の高機能化が進むデジカメ・スマホカメラであれば、当たり前のように、「リアル”巨乳ビジョン”」機能が搭載されていく…のかもしれません!?
2014-10-21[n年前へ]
■続 VR 空気砲プロトタイピング(疑似体感できるミニ空気砲をKinectで作ってみよう!?)
TV番組で見る「空気砲」…それをバーチャルに(けれど自分の手と体で)実感するためのコードを書いてみました。数種間前に作成した、「現実世界の空気流れをリアルにシミュレーションする科学オモチャ(空気振動を検知して、その状態に応じた流体シミュレーション結果を現実空間に重ねて表示する科学オモチャ)」を、Microsoft Kinetを使うことで、現実空間にシミュレーションされた空間をスムースに重ねててみたいという(重ねてみたいなら、そんなものを作ってみよう!という)システムです。
2015-01-21[n年前へ]
■SUPER 4PCSの3D点群結合能力凄い
Makeblock のXY-ステージにKinectを乗っけてOpenFrameworksで3D点群を取得して、それら複数の3D点群ファイルを結合しようとしてハマる。pcl(Point Cloud Library)のICP使ってもイマイチだし、meshLabのICP結合でも手作業の対応点指定がめんどくさい。
…と思ったら、@syoyo さんにSUPER 4PCS Fast Global Pointcloud Registration via Smart Indexing を勧められた。これ凄い。初期値無しでも、もうほぼバッチリ。
2016-02-26[n年前へ]
■ネフェルティティ胸像のKinect 3D盗撮…真実は「3Dレプリカを撮影したデータ」
ベルリンの美術館で展示されている「ネフェルティティの胸像」を、ドイツ人アーチスト2人がコッソリMicrosoft Kinectを美術館に持ち込んだ上で隠し撮りし、ネフェルティティの胸像の3Dデータをクリエイティブ・コモンズ・ライセンスで公開したというニュースが流れている。しかし、その一方、「Kinect使って盗撮スキャンしたって絶対ウソだ!」という話も流れている。…これはもちろん、自分たちでKinectで3Dデータを撮影したというのは「ウソ」に違いない。アーチスト達が公開している「盗撮撮影のようすを写したビデオ」を眺めた上で、「彼らがアーティストがホントに自分たちで撮影(3Dデータ取得)した」と信じられる人は…少ないはずだ。
この元データ、最初は「美術館の許可の元にフラウンホーファー研究機構の文化財用3DスキャナシステムCultLab3Dでスキャンしたもの(スキャンの様子)が、(美術館の許可の元に)公開されたか、あるいは、フラウンホーファー研究機構もしくは美術館から流出したもの」だと考えた。…しかし、3Dデータ自体を眺めたり・関連リンク先を眺めると、今回の3Dデータは(2011年のreplica Workshop of the National Museums of Berlin で限定100個配布された)3Dスキャンして3Dプリントした複製品を、さらにDAVIDの3Dスキャナで形状測定したデータが人の手を経て流れている可能性が高いように思われる。理由のひとつは、オリジナル形状と今回の3Dデータを比較してみると、今回の3Dデータは2011年のreplica Workshop of the National Museums of Berlinで配布されたレプリカの方に形状が近いということである。そして、もうひとつの理由は、3D複製のコピー、つまり孫コピーなら、その流出を妨げるルールは(おそらく)無いだろうというものである。