Processingにおいて3次元の描画モード(P3D)の時にimage()で画像を描くと、3次元空間中に画像が板状に配置された状態になる。これはこれで便利なのだが、ARのように3DCGと2Dの背景画像を合成するようなプログラムを作ろうとした時に、CGが背景画像に埋も…
この話は前にも書いているが、前のコードではフルスクリーン化した際にウィンドウ本体へのフォーカスが失われるという症状があることがわかったので、そのあたりを修正した。具体的には this.requestFocus(); という1行を加えればよい。ついでに通常のウィン…
フォーラムにあったコードほぼそのままだけど、import文を足して動作するコードにしたものがこちら。描画領域のサイズ(widthとheight)はウィンドウ変更に連動して値が変わるようになっている。 import java.awt.event.ComponentAdapter; import java.awt.e…
PAppletの派生クラスでもう1つのウィンドウ上で動くアプレットの内容を記述し、PFrameを使ってそのアプレットを動かすウィンドウを作る感じ。なんか毎回こういうの書いてる気がするなー。 PFrame.pde import java.awt.Frame; import java.awt.Insets; publi…
ArduinoとPC間のシリアル通信において、ターミナルからキーボード入力でコマンドを打ち込んで対話的に動かしたいときのプログラム例です。たまに忘れるので覚書きとして。 Arduinoのプログラム void setup() { Serial.begin(9600); Serial.setTimeout(15000U…
mbedJSを使うと、mbedでWebページ連動のハードウェアを作ることができます。今回はmbedJSの導入方法を説明し、mbedJSとp5.jsの連携、iPadでの利用などについて紹介します。 mbedJSとは mbedJSはmbedをネットワーク経由で制御するためのサーバファームウェア…
【2016/10/25修正】 Processingにおいて画像はPImage型で扱われます。特に画像処理をやるようなケースにおいて、画像のコピーを行いたいことが多々あります。その場合に注意すべきことをここに書いておきます。 PImageのコピー 画像をコピーしたいときうっか…
ArduinoでanalogRead()を使ってアナログ端子を読み取ると0〜1023の整数値(int型)を返します。Arduinoで扱われるint型は2バイトです。これに対し、シリアル通信では1バイトずつデータが送られるため、2バイト以上のデータを送受信するにはちょっと工夫が…
BoofCVというJava用のコンピュータビジョンライブラリがあります。これを使うと基本的な画像処理に加え、オブジェクトトラッキングや特徴量抽出、ステレオ画像計測、領域セグメンテーション、モザイキングなどができます。機能豊富なOpenCVと比べると見劣り…
ProcessingでGUIというとControlP5というライブラリがありますが、お世辞にも使いやすいものではないので、JavaのAWT(Abstract Window Toolkit)のGUIをそのままのっけるのを試してみました。以下は色をランダムに変更するボタンを表示する例です。 import …
ellipse()やrect()などの描画命令が並んでいる場所をfilter.begin()とfilter.end()で挟み込むと、その範囲内で描画した円や四角形がプルプルするようになる、というのを実験的に作りました。 メインのコードはこんな感じ。普通のアイデアだったら、ellipse()…
実行中にウィンドウのサイズを変更するには、frame.setSize()とsize()の両方を使います。setSize()にはウィンドウの上下左右の枠も含めたサイズを指定する必要があります。以下にプログラム例を示します。 void setup() { size(400, 300); } void draw() { b…
先日シリアルポート設定ダイアログを表示できるライブラリを作りましたが、それのビデオキャプチャ版を作りました。下図のような設定ダイアログが表示されて、キャプチャデバイス、サイズ、FPSを自由に切り替えることができます。 ダウンロード こちらのペー…
Processingで画面内に独立した描画領域を作りたいときのテクニックです。PGraphicsを使う方法もありますが、ここではPAppletを使う方法を紹介します。 LocalApplet local_app; void setup() { size(500, 300); local_app = new LocalApplet(this); local_app…
size()でdisplayWidthとdisplayHeightを指定してPresentモードで実行するのでもいいですが、通常の実行モードにおいて特定のタイミングでフルスクリーン化したいときはこんな感じで。 void setFullScreen() { size(displayWidth, displayHeight); frame.remo…
translate()やrotate()などの幾何変換によって移動・変形された座標系(ローカル座標系)と、スクリーンの左上隅を原点とするスクリーン座標系の相互変換を行う方法について説明します。 スクリーン座標系からローカル座標系への変換 スクリーン座標系におけ…
ProcessingでArduinoやXBeeと通信するプログラムを作っているとたびたびシリアルポートがらみのエラーに出くわします。大抵の場合、ポート番号や通信速度が正しく設定されていないことが原因なのですが、プログラムでポート番号を「COM1」とか「/dev/tty.usb…
Arduinoのシリアル通信のメモです。1回のSerial.write()で送れるデータは1バイト、すなわち数値として表現できる範囲は0〜255です。int型ならもっと広い範囲の数値(-32768〜32767)を扱えるわけですが、intは2バイトなのでこれを送受信するにはちょっと工…
最近巷で「GIFアニメに縦線を2本入れると立体感が出る」と話題ですね。「元画像との比較ないの?」とか「縦線入れる"だけ"じゃないだろ」みたいなツッコミが散見されるので、Kinectを使って自分で縦線GIFアニメを作れるコードを書きました。科学的な検証に…
たまに使う機会があるので、備忘録として残しておく。以下は@yoggyさんにもらったコード。短すぎてワロス。 void setup() { String ipaddr = loadStrings("http://checkip.amazonaws.com")[0]; println(ipaddr); } 以下はこのへんのページを参考に最初書いた…
リコーの全天球カメラ「THETA」いいですね。さっそく@MobileHackerzさんをはじめとするハッカー諸氏によってハックが進んでますが、僕もProcessingから操りたいのでコード書きました。といっても、@GOROmanさんのコードをProcessingに移植しただけなのですが…
前回、ProcessingからTHETAのシャッターを切るのが作れた時点で半ば勝利は確信していたのですが、Arduino+XBee WiFiを使ってシャッターを切るのにも成功しました。これでモバイルでのインターバル撮影はもちろん、各種電子工作と連携した全天球撮影が可能と…
Maker Faire Tokyo 2013でも展示されていた寺崎和久さんのGlueMotorをProcessingからコントロールするコードを書きました。 GlueMotorはサーボモータをスマートフォンやタブレットに繋いで手軽にコントロールできるケーブルです。マイコンや複雑な回路は不要…
みなさんこの動画はご覧になりましたか? BOX この『BOX』という作品では、アームロボットに取り付けられた動くスクリーンに対してプロジェクションマッピングが行われます。スクリーンの動きに同期して正確に投影される映像は実に幻想的です。しかし、どこ…
タイトルバーがないプログラムをときどき作りたくなることがありますが、タイトルバーがないとウィンドウが移動できなくなってしまいます。そこで、ウィンドウ内をドラッグしたときに移動できるようにしましょう、というのが以下のコードです。 import java.…
メディアアート製作やインタラクション系の研究に携わっている人なら、一度はWebカメラをシステムの一部として使ったことがあるでしょう。それはノートPCに内蔵されたチャット用Webカメラだったり、USBカメラだったり、USBビデオキャプチャだったりするわけ…
最近ようやく母にケータイを持たせたので手描きのマニュアルを作ってあげました。機種はソフトバンクのガラケー202SHです。 こんな感じ。 ここ数年すっかりスマフォ(iPhone)使いになってしまったので、ガラケーを触るのはひさしぶりでしたが、正直しんどか…
今日の話は,ARにおいて人や実物体の後方にCGがある時に,CGの一部または全体が隠れて見えなくなっている状態(オクルージョン)をきちんと表現するべく,Kinectを使ってみましょうというものです. 前回はマーカベースの手法で遮蔽を実現する方法を紹介しま…
ARにおいて,現実の世界に3次元CGが違和感なく存在しているように見せるための条件の1つに,オクルージョンの実現があります.オクルージョンとは隠れのことで,実物体の背後にCGがあるときにCGの一部またはすべてが隠れて見えなくなっている状態をきちんと…
Google Mapper for ProcessingというGoogleマップから地図画像を取得するためのProcessing用のライブラリがあります.ごくシンプルな機能しかありませんが,とても簡単に扱えるので遊んでみてください. 使い方 上記の配布サイトに行くと,Downloadと書かれ…