デジタルスポーツのプロトタイピング

入力装置(モーションセンサやカメラ)と出力装置(ディスプレイやプロジェクタ)を複数台広い場所に設置するシステムをPCの中でプロトタイプするために,CityCompilerやProcessinglueといったシミュレータを作ってきました.

デジタルスポーツのシステムも同じように,入力装置と出力装置を広い場所に設置する必要があります.出力装置としてロボットを複数台使う場合には,マルチエージェントシステムとしてのルールをうまくデザインする必要もあります.

これまでの研究として仮想空間と模型空間を組み合わせたプロトタイピング手法であるハイブリッドプロトタイピングを研究してきました.デジタルスポーツのシステムをプロトタイピングするには,どういった手法が有効であるか?を研究課題とした発表をHCI International 2014で発表しました.Augmented Sportsというセッションをオーガナイズされた東大の暦本さんから招待していただき論文を投稿しました.

実際のシステムとシミュレーションを並行させながらプロトタイピングを進めましたが,これら2つだけでなく,実際のプレーの可視化,シミュレーションにリアルなデータを読み込んだハイブリッドなシミュレーション,ゲームの5つを作りながら,それぞれの共通点と相違点を把握しつつ,パラメータやルールを決めて行くのが良いのではないか,という提案をしました.

スライドと論文はこちらに
[Researchgate ]
[Slideshare]

センシングにはKinectとARマーカとカラートラッキングを組み合わせています.ボールで遊び始めると,1台のKinectでトラックできる領域は思った以上に小さいものでした.どのようにバージョンアップさせようかと考えているところです.


Dribble training with mobile cone robots from Yasuto Nakanishi on Vimeo.

カテゴリー: diary | デジタルスポーツのプロトタイピング はコメントを受け付けていません。

2013-2014 winter semester (4) EE92A

電気電子工学科の授業であるEE92A: Making and Breaking ThingsはdesignXラボの同僚であるWendy JuとDavid Sirkinがオーガナイズするオムニバス形式の授業です.

何かを分解したり改造したり組み立てたりといった体験をすることに重きが置かれ,理論→実践というスタイルではなく,まずは実践すること(→理論)によって素材や技術やプロトタイピングの手法についての実際的な知識を身につけることが目的とされています.

週替わりの講師がそれぞれお題を出し,2時間の授業の中で色々な製品を分解し別のものへ組み立てたり,新しい機能を追加したりします.何回かは出席できなかったのですが,出席した回に何をやっていたかを簡単に紹介します.

  • 最初の週はカッパーテープで回路を作ってまずはLEDを光らせ,Trinketを使ってチカチカさせました.
  • (2週目はHannah StuartとLEDを光らせる回路をシリコンに埋め込む方法を体験しました.)
  • 3週目の講師はサウンドアーティストのJess Rowlandと,カッパーテープを使って色々な形のFlexible Speakersを作りました.
  • 4週目はCCAで教えているScott Minnemanと,ポップコーンを作る機械を分解して部品を追加し,温度を調節出来るよう改造してコーヒーの焙煎機を作りました.授業後には自分達で焙煎したコーヒーをプレスして味わいました.
  • (5週目はNik Martelaroと,歯ブラシとモータで作るロボット:BRISTLE BOTSを作りました.)
  • 6週目はStanfordでポスドクをしつつベンチャーDash Roboticsを立ち上げたNick Kohutと,折り紙のように組み立てる彼らのRobotを組み立てました.
  • 7週目は中西が担当しました.ダイソーで購入したHandy Fanを分解+何かの部品を付け足してMotion Sculptureを自由な発想で作ってもらいました.教室の都合でたまたまd.schoolのStudio2で授業をしたのですが,d.schoolがプロトタイピングに使う素材がたくさん入ったラックを使わせてもらうことができました.お陰で本当に色々なMotion Sculptureが出来上がりました.
  • 8週目はBill Verplankとハードディスクを分解し,センサーを追加してアームを制御しました.
  • (9週目はDavid ChristensenとクッカーにリレーとArduinoを追加して温度をPID制御できるようにし,ziplocを使ったSous-Vide:真空調理法でタマゴを調理しました)
  • 最後の週はアーティストのSasha Leitmanとピエゾ素子を使った骨伝導マイクを作りました.

この授業は,電気電子工学科でも機械工学科のDesign Programのような手を動かす授業を増やしたいという要望の下で,試験的に行われたものでした.こうした「実体験が先で理論の勉強が後」という勉強スタイルは従来の工学部の教育とは異なるものでしょう.こうしたスタイルはMakerムーブメントやTinkeringといったDIY的な実践を重視する西海岸カルチャーとの結びつきもたやすく想像できます.
学生達が嬉しそうにモノを壊したり作ったりする様子はとても印象的でした.来年度も開催するかは未定とのことですが,ぜひ開催してもらいたいと思います.

Many thanks to Wendy, David, Nik and all guys in the class!

カテゴリー: diary | 2013-2014 winter semester (4) EE92A はコメントを受け付けていません。

2013-2014 winter semester (3) ME410

designXラボでPh.Dを取ったBill CockayneによるME 410: Foresight and InnovationはME410A, ME410B, ME410Cと3セメスター続く大学院生向けの授業です.

ちょうど年明けに日本からのお客さんがあるとのことで,一緒にStanfordを案内しました.彼はAppleやKodak等の企業でのエンジニアとしての経験とベンチャー企業をスタートアップした経験を持ち,今はStanfordでこの授業を担当しています.Apple時代はPerfomaの生産ラインを担当していたとのこと.僕はII SiからずっとMacintoshだよという話をしたら,Apple時代の色々な思い出を語ってくれました.

デザインシンキングにおけるフィールドワークではユーザが今抱えている問題を発見します.Webやスマートフォンのアプリや今ある技術で解決できる場合にはその方法が有効であっても,もう少し長期の技術開発として何をすべきか?企業の中期/長期ビジョンや戦略をどう描けばよいか?という問いに答えを導くことには不向きです.
そこでBillとTamara Carletonが協力してこうした問いに答えるためのツールキットを開発しました.
[Innovation Leadership Board]

この15のフレームワークを用いることで,
– How do I begin looking for future opportunities?
– How can I create a path to these opportunities that anticipates the inevitable changes along the way?
– What can I start doing today that will help me get there first?
という根本的な問いに答えることで将来に備えることができる,と述べています.

開発に4年ほどの時間がかかる自動車メーカがどういう戦略を描けば良いか?という例を挙げてBillが説明をしてくれました.
今のユーザをフィールドワークすることに加えて,4年後に大きなマーケットになるであろう地域で将来自動車を買うであろう人達(インドやアフリカの20歳)も調査の対象とした上で,2つのユーザ層が時間軸上パラレルにどう変化していくかを考えながら,どういった技術を開発していくべきか?を考える.その時にこのフレームワークをどう使い分けるのか,といったことを説明してくれました.

フレームワークの詳細は下記のURLでPDFとして公開されていますので,ダウンロードして見てみてください.
http://innovation.io/playbook/

Thanks Bill!

カテゴリー: diary | コメントする

2013-2014 Winter semester (2) ME214

Stanfordの機械工学科の名物授業の1つにME214: Good Products, Bad Productsがあります.Design Programを立ち上げたひとりであるJim Adamsによって始められた授業です.構内でもたまにお見かけしましたが,今はDave Beachがこの授業を受け継いでいます.

Jim AdamsによるConceptual Blockbusting: A Guide to Better Ideas“は,Design Programを一緒に立ち上げたBob McKimによるExperiences in Visual Thinking” と並んで,発想法にまつわる古典のひとつと言っていいでしょう.本書は大前研一氏監修の下で1999年に邦訳され,ちょうどこの4月に新版が出版されました.
メンタル・ブロックバスター―知覚、感情、文化、環境、知性、表現…、あなたの発想を邪魔する6つの壁

本書は大前氏が在籍していたマッキンゼーの社内研修用に使用されていた書籍でもあります.

ME214で教科書として使われているのはJim AdamsによるGood Products, Bad Products: Essential Elements to Achieving Superior Qualityです.

こちらも昨年の5月に邦訳されました.
よい製品とは何か

タイトルと表紙ともに英語版と日本語版ですこし印象が違うものですね.

講義形式の授業ながらも学生達が「よい製品とは何か?」についてグループで発表+ディスカッションなどを行っていました.
最新バージョンは2011年に書かれており内容も時代に則して更新されていると思いますが,同じ教科書を50年間使っていると思うと少し驚きでした.Jimによる「よい製品とは何か?」という価値観の根っこは揺らいでいないのでしょう.

カテゴリー: diary | コメントする

2013-2014 Winter semester (1) ME115B

ME115A, ME115B, ME115Cと3セメスター続く115シリーズは,ME101のfamily classとも言える授業シリーズで,ME101で学んだプロセスを3つのパートに分解しそれぞれのパートにかけるウェイトを変えてデザインを実践するプロジェクトベースの授業です.

秋学期のME115A: Introduction to Human Values in DesignはDavid Kellyがメインの講師を務め,フィールドワークに基づいたEmpathy+Problem Definitionに重きをおいていました.
冬学期のME115B: Product Design Methodsの目的は,コンセプトと機能性と審美性を兼ね備えた製品を作り出すデザイナの役割にフォーカスしたデザインプロセスを実践しスキルアップすると共にその理解を深めることです.

3人の講師でグループティーチングを行い,メインの講師はDesign Like Apple: Seven Principles For Creating Insanely Great Products, Services, and Experiencesの著者でデザインファームLUNARのPresidentであるJohn Edsonです.そして,HTCのデザインディレクターDaniel Hundt,IDEOに勤めた後Curiosity Atlasを立ち上げたGretchen Wustrackという豪華な顔ぶれの3人が一緒に週に2回の授業を行います.

個人的に興味深かったのは,課題:Design Projectの設定と,それらが進行するとともにと共に学生達がデザイナに必要な能力を身につけられるよう授業のプロセスがデザインされていることでした.

  • DP0 立方体のスタイロフォームを削って塗装+磨いてツルツルのBeanを作る.手を動かしてイメージを形にするスキルの大事さを学ぶ.
  • DP1 Imitation (Pen Project):有名なデザイナがペンを作ったら?という想定をしてペンをデザインする.模倣/人まねをするべく,そのデザイナのデザインの線をきちんと観察することになる.
  • DP2 Form Language (Tabletop Suite):どこかのブランドのデザイナになったという想定をしてテーブルウェアをデザインする.そのブランドが新しく送り出すシリーズを考えた上でプロダクトを1つデザインする.製品が作られるコンテクストと使われるコンテクストを踏まえた上でオリジナリティを出しつつも既存の製品のコンテクストに沿うよう,より広範囲なモノとコトを観察することになる.
  • DP3 Designer’s Voice (Lamp Project):テーブルランプをデザインする.想定した価格とターゲットユーザの属性を踏まえつつ,様々なモノやコトからインスピレーションを得てアイデアを形に落とし込む.これまでの授業でのトレーニングの成果を自由に発揮することになる.

DP0, DP1, DP2, DP3それぞれ,調査/観察→スケッチ→プロトタイプ→デザインと必要な過程をきちんと踏まえるよう授業が組み立てられています.宿題が細かく出され,3人の講師と3人のTAが分かれて学生達にコメントをして行きます.デザインには正解がないために人によって好みが分かれることがあるので,毎回違った人からコメントが貰えるのはとても良いことだと思います.TAはDesign Programの修士課程の学生ですが,既にデザイナとしての実務経験がある人ばかりです.それにしても3人のプロ+3人のプロ予備軍で50人ほどの学生を教えるという環境は羨ましい限りです.

ME101とME115Aも授業を聴講していましたが,1年の間に学生達が徐々にスキルアップしていく様子を見ることができました.アメリカの各州の優等生が集まるスタンフォードでは,努力家の学生達がカルフォルニアの太陽の下で陽気にハードワークしています.ME 115C: Design and Business Factorでは製品のコストの計算やビジネスの企画の提案も行うとのこと.いろいろな授業で1万時間ルールのことが話題に上がりますが,これだけ練習を重ねていけばデザインシンキングは着実に血となり肉となると思います.

Many thanks to John, Daniel, Gretchen and all guys in the class!

カテゴリー: diary | 2013-2014 Winter semester (1) ME115B はコメントを受け付けていません。

2013-2014 Autumn semester (2)

授業の発表会としては
ME218A: Smart Product Design Fundamentals
ME20N
ME203: Design and Manufacturing
を見に行きました.

ME218いわゆるメカトロの授業ですが,A,B,Cと3セメスター毎にレベルアップしていくようです.アーケードゲームを作るというのが最終課題ですが,Aとはいえかなりの完成度です.使っているセンサとアクチュエータはほぼ共通なので,基本的な動作をマスターした後にそれらの新しい組み合わせを考えるという進め方のようですが,最終課題はなんと2週間で仕上げたとのこと.レーザーカッター使っているのも当たり前だしきちんと塗装してるのも当たり前.4人組で2週間でこれだけのものを作るには,アイデア+手を動かすスキル(メカ+エレクトロニクス+加工)に加えてプロジェクトマネジメントが出来ないと,これだけのものは作れないでしょう(少し衝撃を覚えました…)

ME20Nは正規の授業ではなく,CDRのCHARM LabのM1の学生のセレクションとのこと.Labのメンバーが開発したArduinoベースのボードを使ってセンサとアクチュエータを動かしてHaptic feedbakのある何かを作るという課題でした.フォースフィードバックがあるテニスゲームが秀逸でした.こちらは2人組で2週間のプロジェクト(さらに衝撃を覚えました…).

ME203は工作機械を自分で使いこなし製造のプロセスを学ぶ授業です.受講者それぞれがモノを作っている感じですが,きちんとUser testingを繰り返してプロトタイピングを繰り返している人もいたり,逆に素材と何度も対話を重ねることでカタチを作っている人もいました.その繰返しの回数が多い人ほど完成度が高かったように思います.

他にも,Wendyと一緒にExploratoriumであった1965-71に活躍したメディアアートグループE.A.Tのシンポジウムに行きました.日本から来られた岡崎乾二郎さんと色々お話できたりE.A.Tの方と同じテーブルで食事ができ,とても恐縮でした…
12月には同じCDRでVisiting Scholarをしているソニーの田中章愛さんにAutoDeskの工房訪問を企画していただいて参加しました.そこでは学生時代に良く読んでいたMacintosh Developer’s Journalで記事を書かれていたBasukeさんにお会いでき堅い握手を交わしました(涙).

と,刺激に溢れたAutumun Semesterでした.残るWinter Semesterも色々と楽しみたいと思います.

カテゴリー: diary | コメントする

2013-2014 Autumn semester (1)

新年明けましておめでとうございます.Winter semesterが始りました.Autumn semesterは自分の研究を進めるために授業の聴講はあまりしていなかったのですが,レクチャーや発表会等などの内容を少し紹介したいと思います.


夏に作っていたProcessinglueのデモをCasey Reasに見てもらうためにLAに行ってきました.メディアアーティスト->建築家の杉原聡さんがモーフォシス在籍時にデザインしたファサードやSCI-Arcを案内してもらいつつ,Caseyとも仲が良いので一緒にUCLAに行きキャンパスも案内してもらいました.イームズのケーススタディハウスも見ることができ,色々な刺激を受けたLAでした.

MIT->RISDのJohn Maedaのレクチャーがありました.Computational Designが当たり前になった今,デザインのバランスとしてACTIONS(PHYSICAL), EMOTIONS(COGNITIVE), RELATIONS(ORGANIZATIONAL)からなる三角形を描き,大学によってそのポジションが異なる,という図でその状況を解説しました.とても分かりやすく,自分(達)の立ち位置を考える良い地図だと思います.また彼の著書
リーダーシップをデザインする: 未来に向けて舵をとる方法
では,新しい時代のリーダは一つの山を上ったらその山から飛び降りてまた新しい山に登るのだ,と述べていました.Johnは12月にRISDの学長を辞めてメンロパークのベンチャーキャピタルにjoinしました.こうあるべきという姿を自ら実践したということですね.

d.schoolのDavid Kellyの近著
Creative Confidence: Unleashing the Creative Potential Within Us All の出版をお祝いするパーティがあったりしつつ(都合が付かずで参加できずでしたが),d.schoolの授業の発表会を一つ見に行きました.

さまざまな分野の大学院生がチームを作り「未来の大学」の姿をプロトタイプしていました.びっくりするようなアイデアではありませんでしたが,スタンフォードのビジネススクールを卒業した起業家お2人の著書
伊佐山元 シリコンバレー流 世界最先端の働き方
水島淳 スタンフォードの教え「ビー・ユアセルフ」
でもd.schoolについて言及されています.お2人とも東大法学部を卒業とのことですが,法学部卒の僕の友人から「デザイン」という言葉が出てくるシーンを想像しづらいので,あらゆる分野の人がデザインとプロトタイピングの重要性を知っているということはシリコンバレーの大きな強みであることは間違いないでしょう.
(続く)

カテゴリー: diary | コメントする

スポーツと働き方とお国柄

今いるスタンフォード大学はスポーツの強豪でもありますが,立派なスタジアムや体育館があり,アメリカンフットボールバスケットボールを見に行ったりしています.

HCIの研究の一つとしてスポーツを対象にした研究をスタートするべく,色々と調べた内容をhttp://mediasports2020.wordpress.comにまとめて公開しています.

バレーボール,バスケットボール,アメリカンフットボールは,アメリカで考案されたスポーツですが,これらの共通点に先日ふと気が付きました.

  • 作戦タイムが頻繁に取ることができ,やるべきことが言語化され共有される
  • ポジションによる分業がクリアであり,また何度も選手交代ができる

これはアメリカでの働き方とも近いのではないでしょうか.
あまりにも一般化してしまっているかもしれませんが,Head Quarterが重要な決定を行い,職能やJob Descriptionがクリアであり,頻繁に転職があるが人材がモジュール化されていて入れ替わりが前提となっている.こうした働き方とメジャーなスポーツとの共通点は,お国柄を表しているだろうと思います.

アメリカを起源とするスポーツに慣れ親しんだ日本人はアメリカで働きやすいかもしれませんし,日本を起源とするスポーツに慣れ親しんでいる他の国の人も日本で働きやすいかもしれません.

日本が起源であるスポーツには,相撲,柔道,剣道,空手,合気道がまず思い浮かびます.これらは運動競技ではありますが,剣道について全日本剣道連盟が「稽古を続けることによって心身を鍛錬し人間形成を目指す「武道」です」と述べているような所も特徴でしょうか.他には,軟式テニス,軟式野球、競輪,駅伝なども日本発祥のスポーツです。

日本でのスポーツの意味あいが体育に近く,「元となった英語ではスポーツの範疇に含まれるものでも、日本人が想像するスポーツの印象からは外れるものが多く存在する。」(wikipedia 日本のスポーツ)というくだりは,なるほどと思いました.

」は奥が深いものを究めて行こうとする精神性を表す漢字だと思いますが,日本の企業の中に長時間働いている人がエラいという感じがあるのは働くことも修行のような「道」に近い感覚があるのかもしれません.

ちょっとした雑感でした.

カテゴリー: diary | コメントする

Processinglue : Virtual Camera

Processinglueには,Processingを出力できる仮想ディスプレイだけでなく,Processingの入力として使うことができる仮想カメラもあります.

Processingでカメラを使う際には processing.video.Captureクラスを使いますが,仮想カメラはCaptureクラスのサブクラスとして実装しているので,同じようにPAppletから扱うことができます.

その一例としてPerfume Official Global Websiteで公開されているPerfumeのモーションデータを再生するProcessingのサンプルを拡張しました.Perfumeの前に仮想カメラを置き,その画像をオプティカルフローを出力するProcessingに渡し,その出力をPerfumeの後ろに置いた大きなディスプレイに出力しました.

右のウィンドウがシミュレーションをするProcessing,左上のウィンドウが画像処理を行っているProcessing,左下のウィンドウが仮想カメラの画像です.

Capture and Display Test0

シミュレーションを行うPAppletの中では下記のような手順でインタンスを生成します.

capture = new P4PCapture(this,320,240);//仮想カメラのインスタンスをnew
opticalflow opt = new opticalflow();//オプティカルフローのPAppletをnew
opt.setCapture(capture);//仮想カメラをオプティカルフローのPAppletに渡す
display = new P4PDisplay(this, 1600, 1200, opt, 320, 240, true);//オプティカルフローのPAppletを引数にして仮想ディスプレイのインスタンスをnew

オプティカルフローを計算するProcessingはOpenProcessingで公開されているものを使いました.そのソースの中に画像を反転する/しないを決めるパラメータがありますが,反転せずに出力してみました.

Capture and Display Test1

画像処理を使ってビデオエフェクトをかける時には,画像が入れ子になっていくビデオフィードバックがかからないようカメラにフィルタをかけることがあります.ビデオフィードバックがかからないようシミュレーションしてみました.

Capture and Display Test2

フィルタをかける/かけないを仮想空間でも可能にするために,PAppletがimplementするインタフェース:Draw2PGraphics3Dを定義してあります.
カメラには写したくない+3D空間の中に表示するものはdraw()の中でhoge.draw();等として描画をします.
カメラに写したい+3D空間の中にも表示したいものはdraw2PGraphics3D()の中でfuga.draw();などとしておき,draw()の中でdraw2PGraphics3D(this);と呼び出すようにしています.
少しややこしい気もするので,写さないオブジェクト/写すオブジェクトをリストで管理しても良いかな…とも思うのですが,PAppletのサブクラスを作って隠蔽することが分かりにくさを生む場合もあると考え,今はこうした実装にしています.
(良い実装の方針があったらぜひ教えて下さい)

Cpatureクラスを使って画像を処理するPAppletは少しだけ拡張を行います.

public boolean realDeployment = false;

という変数と下記のようなメソッドを追加します.

public void setCapture(Capture capture){ // added for P4P
this.video = capture;
}

setup()の中で

if(realDeployment) { // added for P4P
video = new Capture(this, wscreen, hscreen, fps);
video.start();
}

とすることで,シミュレーションの際にはリアルなカメラをnewしないでおき,シミュレーションのコードでnewした仮想カメラをsetCapture(capture);します.

draw()の中で仮想カメラ/リアルカメラからの画像を読み込みますが,

if(realDeployment == true)
video.read();
else
video.loadPixels();

として仮想カメラ/リアルカメラを使い分けています.他の部分は元のソースコードと同じです.こうした実装をすることで

  • 仮想カメラからの入力を仮想ディスプレイに出力
  • リアルカメラからの入力を仮想ディスプレイに出力

を行ったり来たりしながらプロトタイピングを行い,最終的には

  • リアルカメラからの入力をリアルディスプレイに出力

するという形でプロトタイピングを進めることができる,というのがProcessinglueの大きな特長になっています.

https://github.com/yasutonakanishi/Processinglue

カテゴリー: programming | コメントする

Processinglue : Virtual Display

Processingはインタラクティブなシステムのプロトタイピングやメディアアートの制作に良く使われるJavaベースのプログラミング環境です.公式サイトでもProcessingを使った作品がたくさん紹介されています

Processingを使って作品を作るといっても,Processingが動いているパソコンをそのままポンと置くことはほとんどないと思います.カメラやセンサやモータを使ったり,プロジェクタや大きなディスプレイを使うことがほとんどです.そうした時に,コンピュータで何度も試行錯誤してから実際に展示してみると,思った通りには動かなかったり,映像の大きさや動くスピードから感じるものが画面の時とは違う…(それが良い方向に転ぶ場合ももちろんあります)という事が結構あるものです.

そこで,作品が空間に置かれた様子をシミュレーションしながらプログラミングを進められるような環境である”CityCompiler”というライブラリをこれまで作ってきました.
jMonkeyEngineというゲームエンジンの中で動く仮想のディスプレイやプロジェクタ,仮想のカメラやセンサを使って,Processingが動く様子をシミュレーションできるというものです.CityCompilerの使い方や使った例などはこちらへ.
 CityCompilerワークショップ「空間をプログラミングしよう!」向け資料
 CityCompiler Examples on vimeo

CityCompilerを使ってProcessingのシミュレーションをするにはjMonkeyEngineをちょっと理解しないといけないので,それが少しハードルになっていました.

Processing2.0がOpenGLを全面的に取り入れたこともあり,CityCompilerと同じような仮想カメラと仮想ディスプレイをProcessingで実装したのがProcessinglueです.
Glueは糊のことですが,ProcessingをProcessingにくっ付ける糊,というイメージで名前を付けました.これでProcessingをシミュレーションするのにProcessingの知識があればOKになりました.

FlatDisplay Test0 from Yasuto Nakanishi on Vimeo.

このムービーではProcessingのExamplesにあるDistance2DというPAppletを仮想ディスプレイに表示して,それをお姉さんが見ている様子をシミュレーションしています.シミュレーションを始めると,「ディスプレイを回してみるとどうかな?」「回るディスプレイにどんなProcessingを表示するとオモシロいかな?」「横長と縦長だったらどう違うかな?」なんて事を考え始めるようになります.Processinglueを使えば色々なアイデアをシミュレーションしながら発展させることができます.

仮想ディスプレイを実装するにあたってキーになるのはPAppletの
public void registerMethod(String methodName, Object target)
というメソッドです.

PAppletの中でdraw()メソッドが初めて実行される時や実行された直後,スケッチが停止したり再開した時,mouseEventやkeEvent,touchEventが起きた直後などに,呼んでもらいたいオリジナルのメソッドをPAppletに登録することが出来ます.

仮想ディスプレイは,表示するアプレットのdrawメソッドが呼ばれた直後に,いま描かれたホヤホヤのpilxels[]の中身をコピーしたPImageを作る,ということをします.
表示するアプレットが描画をする度にPImageを作り直し,そのPImageをP3Dの中にテクスチャとして表示することで,Processingが動く様子をP3Dの中で見ることができます.

テクスチャの貼り方を変えるだけで円柱型ディスプレイや曲面ディスプレイも簡単に作れます.なのでこれらは平面の仮想ディスプレイのサブクラスとして作りました.

BezierDisplaysScape

CylinderDisplays Test

マウスによるインタラクションがあるPAppletは別ウィンドウを作って表示するオプションをtrueにして,普通のPAppletと同じようにそのウィンドウをアクティブにしてマウスを動かします.
マウスの動きに応じて作り替えられたpixels[]が毎フレーム毎にコピーされてテクスチャとして貼り直されるので,マウスの動きがシミュレーションにも反映されます.↑の円柱ディスプレイのサンプルがそうした例になっています.

Processingの開発環境であるPDEは一つのフォルダにPAppletが一つだけあるという前提を置いているので,PAppletを複数使うProcessinglueはPDEでは実行できません.そのためEclipseを使って開発を行います.ソースコードを含んだプロジェクトをGitHubに上げてありますので,ぜひ一度試してみてください.

https://github.com/yasutonakanishi/Processinglue
https://github.com/yasutonakanishi/Processinglue/archive/master.zip

仮想カメラについては次のエントリーで紹介したいと思います.

カテゴリー: programming | コメントする