教えてエロい人!! P5レスキュー

人気の記事:

スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメント

  1. Takachin@冬 より:

    Q:WindowsでStandard版をダウンロードして、ファイルを

     解凍してproce55ingを起動して、適当なスケッチをロード

     したのですが、Runを押しても何も実行されません。

     なんで?

    A:解凍したフォルダのパスに日本語が入っていると、

     スケッチが実行できなくなります。解凍したフォルダは

     パスによるトラブルを避けるために、C:\processingに

     置くことをおすすめします。

  2. Takachin@冬 より:

    こんな調子で、以前遭遇したトラブルをまとめてみるのもいいかもしれません。

  3. ‭Taka より:

    Q:なんだかわからないけど、アプレットのサイズが200px×200pxに自働でなってしまいます。size()指定しているのですが。。。

    A:size()の引数を数字ではなく変数にしていると、なぜかそうなります。ここの引数は数字にしてください。

  4. こあ より:

    アプレット書き出しをしてみると、異様にファイルサイズが大きくなります。pdeでたった数十行(500バイトも行かないくらい)の小さなソースでも、jarファイルは100Kを超えます。

    .javaファイルを見てみるとひたすらimportしているので、それが原因なのかも、と思っているのですが(例えば音を使用していないファイルに、import javax.sound.midi.*;等は不要だと思うのです)、ファイルサイズを軽減させる方法は無いでしょうか……?

    個人的にメガデモみたいなのを作ってみたいと思って始めたもので、、、。

  5. ‭Taka より:

    sorry now I cant type Japanese. Please retype it with Japanese if you never mind > Takachin3

    .javaファイルを見てみるとひたすらimportしているので

    masani soredesu. soreni tsuite no touron ha honkedemo okonawaretemasune.

    http://processing.org/discourse/yabb/YaBB.cgi?board=general;action=display;num=1068460789;start=0

    arielm ga jar file wo bunkatsu suru houhou wo post siteimasu. korede kaku applet de kyo-yu sareru bubun ha oohabani heruto omoimasu.

    http://processing.org/discourse/yabb/YaBB.cgi?board=Proce55ing_Software;action=display;num=1067360903

    ben fry iwaku syo-rai tekiniha chissakunaru tono kotodesuga, genkou deha, byo-ga engine “bagle” wo kakikaerunoga ichiban no chikamichi kato omowaremasu.

  6. ‭Taka より:

    boku ha java no programer deha nainode nantomo iemasenga, Java libraly folder no tsukawanai class, zenbu doumei no karappo na dummy class ni kakikaetesimau tteiunoha doudesyouka?

    mendo kusai desuga.

    kokoha mattaku motte nouhau ga nai atarinanode, jikken toka siko-sakugo sitakata itara post sitekudasai mase.

  7. こあ より:

    >>5-6

    Takaさん、ありがとうです。海外フォーラムで既出だったようですね。

    dummy classに書き換える、というのは一つの手だと僕も思いましたが、僕自身Javaの方でもコーディングしますので(素人ですが)、出来ないんです(T-T)

    今後改善されるまでは基本的な事とか、表現方法を中心に学んでいく事にします。

  8. Takachin@冬 より:

    Q:インデントをいちいち手でやるのが面倒なんですが。

    A:Editメニューから”Beautify”を選ぶか、”Ctrl+B”(Win),”Command+B”(Mac)とすれば自動でインデントされます。

  9. 大富豪家3.0 より:

    日本語を表示させることはできないもんでしょうかね?

  10. Takachin@冬 より:

    >増井さん

    はじめまして。文字をグラフィカルに表示させるにはBFontを使うわけですが、これには日本語フォントをprocessingで扱える形式に変換して扱う必要があります。

    そのためには、processingのエディタから

    “Sketch -> Create Font”を選ぶとフォント変換機が出てきます。しかし、まだ私はこの機能を試してません。フォント変換できたとしても、恐らく日本語だとものすごいファイルサイズになると思います。

    それとは別に直接Javaでフォントを指定してしまう方法もあると思うのですが(これも試してません…)、こうしてしまうとprocessingを使う意味が薄れてしまいます。

    ただ、エディタの下部のメッセージの部分には日本語は問題なく表示されます。

  11. 大富豪家3.0 より:

    早速ありがとうございます!

    フォント作成機能があるんですね。でも日本語フォントは駄目っぽいです。変換は成功しますが英語部だけ変換してる雰囲気です。

    また直接Javaでフォントを指定することはできませんでした…

    フォントをビットマップだと思って表示すればできるかもしれませんがそれも嫌ですよね。

  12. ‭Taka より:

    >フォントをビットマップだと思って表示すればできるかもしれませんが

    1枚のビットマップ画像を自動分割して、フォントとして利用する fast text という便利クラスがあるみたいですよ。そんなに画像を意識しないでも使えそうです。toxi氏のbase26という作品内で使われてます。オリジナルはglen murphy氏。

    http://glenmurphy.com

    http://processing.org/exhibition/base26/base26.pde

    多少改造すれば、平仮名とカタカナぐらいならいけるんじゃないでしょうか?

  13. ‭Taka より:

    p5の音コントロールプラグインSONIAをインストールして、音関係に進出したいのですが、パソコンがネットに接続できない環境のためこまってます。

    オフライン環境でSONIAプラグインをインストールする方法、どなたかご存知ないでしょうか?

    仕様環境は、windows98SE, IE5.5, processing 0.67 です。

  14. 大富豪家3.0 より:

    情報ありがとうございます > Taka様

    確かにこれだとなんとかなりそうですね。

    それにしてもglenmurphyは凄いですね〜

  15. Takachin@冬 より:

    >Takaさん

    Soniaのインストールそのものはオンラインからブラウザにプラグインを入れなくても大丈夫です。Jsynプラグインは、あくまでも”ブラウザ上”で作品を見るためなので、制作そのものには影響しません。

    そちらの環境はネットカフェからだと思うのですが、Win IE 用のJsynプラグインは

    http://www.softsynth.com/jsyn/plugins/install_win_ie.html

    からZipArchiveがおいてあるのでこのデータを持って帰れば、ブラウザ上でもJsynを使った作品を鑑賞できます。

    http://www.softsynth.com/jsyn/plugins/archives/jsyn142_pc_ie.zip

    SoniaのインストールはTetsu Kondo氏による日本語訳からたどれば大丈夫でしょう。

    http://www.leapsnail.net/tetsu/Sonia_jp/

  16. ‭Taka より:

    >Takachin san

    Thanks a lot!!! I will install sonia and jsyn as soon as possible, after finishing my current project. 🙂

    >Masui san

    you are welcome 🙂

  17. f より:

     Processingは、(key変数では)キーの同時押しの判定が出来ないので、キー操作主体のアクションゲームを作ったりするときに困ります。

     processKeyEventメソッドを定義すれば直接キーボードイベントがとれるので実現可能ですが、こういう方法は

    Processing的には邪道ですか?マルチプラットホームの障害になるとか。

    ためしに作ってみたサンプル

    http://d.hatena.ne.jp/fslasht/20040611#1086964500

  18. ‭Taka より:

    いえいえ全然ありだと思います。

    本家の掲示板みると、eclipseと統合してみたり、 BAppletのextendだけして、あとは普通のjavaで書いていたりと色々やってる人がいるようです。

    ただ、ソース公開する場合は、クラスごとにファイル分割したり、パッケージ使ったりといったjavaライクなことをしすぎると、p5ユーザーには理解できないモノになってしまうと思います。単に作品を作るって面では何でもアリなんじゃないかなーって思います。

  19. Takachin@冬 より:

    >fslashtさん

    Processing的にはむしろ本家のフォーラムで、「こんなんつくっちゃったぞ!どうだ!」と公開してしまうのが吉です。英語なのがネックかもしれませんが、基本的にコードで語る(?)人たちなので、簡単な表現でOKだと思います。ぜひぜひ本家にポストしてみてはどうでしょう。

  20. f より:

     アドバイスありがとうございます。>Takaさん

     リファレンスの枠内でやる縛りみたいのがあるのかと思ってました。これで安心してJavaのライブラリを利用できます。

     お手軽開発を目指していますので、当面はファイル1つ分くらいの規模のものを作っていくつもりですが、ファイル分割とか出来るんですね。それならある程度規模が大きくなっても対応できそうです。

     フォーラムで作品を公開するという手があるのですね。今作っているゲームが完成したらexciteの翻訳を利用して説明分を用意して発表してみようと思います。>Takachin さん

  21. ‭Taka より:

    はじめまして。最近P5の勉強を始めました。

    簡単な質問なのですがP5には、いわゆるレイヤー構造は無い、

    と考えた方がいいのでしょうか?

    リファレンスを見ると、画像とかシェイプを移動させる簡単なアニメーションを作成するのでも、loopの中で、backgroundを指定しなおしてるみたいなのですが。

    既に描いたオブジェクトを”消す”とか、”動かす”といった操作ができるか否か、教えていただけると助かります。

    情報お待ちしています。

  22. ‭Taka より:

    そうですね。flashやフォトショップのようなレイヤーにあたるものありません。アニメーションを行う場合、毎フレーム(コマ)ごとに、1枚のキャンバスを消して、また書き直すというイメージになります。

    例えば、四角形を移動させる場合。

    四角形を書く→画面消す→四角をすこし移動させて書く→画面を消す→四角を少し移動させる。。。 といった形で行います。

    ここなんかが丁度sachiさんの知りたいあたりを丁寧に解説してくれてると思います。

    http://www.zero-out.com/sugi/processing/tutrial_anim.html

  23. ‭Taka より:

    ちょっと追記、

    ある程度プログラムの経験のある方ならば、画像をオブジェクト単位で移動したり消したりしてるように扱えるコードを、自力で書くことはできると思います。

    ただ、掲示板で書くにはかなり長い&マニアックな内容になってしまうと思うので、興味があったらメールかなんかで聞いてくださいませ。

  24. Takachin@冬 より:

    Takaさん

    早速の返信ありがとうございます。

    現在PCアプリのGUI開発にP5が使えないか検証中しておりまして、

    >ある程度プログラムの経験のある方ならば、画像をオブジェ

    >クト単位で移動したり消したりしてるように扱えるコード

    >を、自力で書くことはできると思います。

    改めてメールにて、伺いたいと思います。

  25. Takachin@冬 より:

    たびたびすみません。

    P5で作成したファイルって、JavaApplet以外に出力することは可能でしょうか?たとえばexeとか。。

  26. Takachin@冬 より:

    >exe

    このあたりですかね。

    http://processing.org/discourse/yabb/YaBB.cgi?board=Tools;action=display;num=1086874853

    TechNotesはけっこうハイエンドで有益な情報が集まっているのでおすすめです。

    http://processing.org/reference/technotes/index.html

  27. スッチー より:

    最近P5をはじめたばかりのぺーぺーなのですが、

    BenFryのAnemoneのような、サイトの視覚化ができないものかと、志を大きく抱いております。

    URLに関する情報を取得する方法(クラス)など、何かご存知でしたら教えてください。

    また、そういったことをP5で試みている既存の作品など、何かありましたら教えてください。

    よろしくお願いいたします。

  28. Takachin@冬 より:

    >ゲンさん

    Crawl the webのトピックが楽しめるんじゃないでしょうか。

    http://processing.org/discourse/yabb/YaBB.cgi?board=Contribution_Info;action=display;num=1057937764

    あと、同じくDiscourseのInformation Visualizationのトピックに面白いものが転がっているかもしれません。

    http://processing.org/discourse/yabb/YaBB.cgi?board=Contribution_Info

  29. ‭Taka より:

    あ、動的に外部htmlをロードする方法載っていたんですね。知らなかった。

    >ゲンさん

    乱雑な拙作ですが、同様にテキストファイル内からurlを採集し、配列に格納するクラスのソースです。crawl the webのと組みあわせればそこそこ役に立つかもしれません。

    http://www.vas-animatum.net/index.php?w=7

  30. スッチー より:

    ありがとうございます!

    Discourseには面白いものが沢山埋もれてそうですね。

    知らなかった・・・・

    ちょっと色々探ってみたいと思います!

    ありがとうございました。

  31. スッチー より:

    ありがとうございます!

    Discourseには面白いものが沢山埋もれてそうですね。

    知らなかった・・・・

    ちょっと色々探ってみたいと思います!

    ありがとうございました。

  32. スッチー より:

    Takachinさん、Takaさん

    ありがとうございます!

    Discourseには面白いものが沢山埋もれてそうですね。

    ちょっと色々と探ってみます。

    ありがとうございました!

  33. スッチー より:

    おっと、すみません・・・・

    書き込んだ内容が更新されなかったので、

    何度も同じ内容を書き込んでしまいました。

    失礼しました・・・・

  34. junm より:

    processing.jpも動き出したようだし、ちょっと気になっていたことを質問します。

    本家Examplesのimage→edge_detectionか、

    本体のfile→open→examples→image→edge_detectionですが、間違ってると思うんですよ。

    これです。本体付属だと17行目かな。

    int n2 = 3/2;

    int m2 = 3/2;

    ここでintにまるめられることによって、後々、3×3の行列のうち2×2の部分しか使えてないと思います。

    こういう簡単なのは、みんなが報告すると大変なことになってそうなので、ずっと黙っていたのですが。

    私が間違ってます? intに1.5を入れるのはだめですよねえ。

    本家で検索をしたのですが、多分報告ないと思います。見落とした?

    どなたかわかる方がいたら教えてください。

  35. dotimpact より:

    このあいだ、MacOSX版のProcessingBeta0090で、キーボード右上の”|”が出せなかったんですが(授業中に「この文字はどうやって打ち込むんですか?」という声がほうぼうで上がってあせった)、これってほかの方のところではどうでしょうか?

  36. くり丸 より:

    うーむ。

    英語と日本語のキーボード両方で試してみましたけど、僕の環境では “|” ちゃんとタイプできますよ。| って論理和として使うんで、もしタイプできないとすると重大な欠陥ですね。。

  37. くり丸 より:

    “|”は

    shift+”?”

    (”L”の右3つ目、リターンキーの直前)

    でしょうか?

  38. 私もOSX10.3上のProcessing beta0090とProcessing beta0091にて「|」が入力できずハマりました。

    が、OSX10.4上のProcessing beta 0091では入力できましたよ。

  39. くり丸 より:



    たいへん失礼しました。

    でも私の環境では問題ありませんが?

    (0090Beta on 10.3.6)

  40. dotimpact より:

    |はshift+”\”ですね。

    うーん、なんでしょうね。くり丸さんは英語キーボードですか?

  41. くり丸 より:

    日本語キーボードは違うんですね。

    重ね重ね失礼しました。

    前々回の書き込みバケてますし…。

    私はAZERTYキーボードですが、スクリプトを書くときは英語配列にしてます(US配列)。

    そのときは”shift”+コレ(↑)です。

    役に立たないことでスペースつぶしてゴメンナサイ。

     

  42. しゅう より:

    こんにちは、初めまして。

    ごく最近proce55ingを知って、勉強してみたいと思いました。

    はじめは、いろんなの作品のソースをいじって覚えろと書いてあったので、みなさんの作品のソース拝借して頑張ろうと思ったのですが、どうやっても描画してくれません。

    ソースをコピペするだけではダメなのですか?

    本当に初歩的な質問で申し訳ありません。

    よろしくお願いします。

  43. nori より:

    34のjunmさん、

    // Convolve the image

    のしたの

    for(int k=-n2; k<n2; k++) {

    for(int j=-m2; j<m2; j++) {

    のループで、kもjも −1〜1までの間を推移していて、

    さらに、このネスティングの下のほうにある

    sum = sum + kernel[j+m2][k+n2] * red(get(xp, yp));

    で、kernel[0][0]から[2][2]までを使っているようなので、

    3X3の行列のうち2X2しか使えていないということはないように見えますが。

    というわけで、とくに間違いではないように思われます。

    僕自身はなんで

    int n2 = 3/2;

    int m2 = 3/2;



    int n2 =1;

    int m2 = 1;

    ってこのexampleの作者がはじめから書かないのか、その理由に興味があります。

  44. きうぇ より:

    http://www.asahi-net.or.jp/~cs8k-cyu/java/rallx/index.html

    のようなプログラムでは、音の再生にBSoundなるものを利用しているようですが、

    Processing上でBSound bgm;のように記述すると、もれなく

    「Type “BSound” was not found」となってしまいます。

    また、BAppletに関しても同様に定義されていないようです。

    BSoundなどのキーワードで検索をしてみても、

    それを当然のように利用しているコードばかりが出てきて、困っています。

    利用しているバージョンは、0091 betaです。

    セットアップを正しく完了できていないのでしょうか?

    それとも別にライブラリのようなものを入れる必要があるのでしょうか?

  45. きうぇ より:

    自己解決しました。

    どうやら今はPSoundというクラス名になっていたようです。

  46. Takachin@冬 より:

    ABAさんがProcessingをよくつかっていたころはAlphaのころなので、ベータだとそのままソースをコピー&ペーストでは動かないことが多いですね。ProcessingのBeta←→Alphaの命令の相互互換表とかあるといいのかなぁと。

    僕は今も昔のソースを実行させるためにAlpha69もたまに起動させることがあります。

  47. daixque より:

    画像の読み込みにはloadImage()がありますが、保存する機能はありませんか?

  48. Takachin@冬 より:

    http://processing.org/reference/index.html

    このドキュメントの”OutPut”の項目にsaveまたはsaveFrameがあります。

    http://processing.org/reference/save_.html

    http://processing.org/reference/saveFrame_.html

    スケッチのコードが保存されているフォルダに画像が保存されます。

    Skethch -> Show Sketch foloder でたどってみてください。

    ドキュメントには”Image”の項目にないので見落としやすいですね〜

  49. Zenmai より:

    はじめまして。

    昨日からProcessingをいじってるんですが、Displayingサンプルを改造した以下のコードでtintが効きません。

    draw()の外部ではtintが効くんですが。。。

    原因分かる方教えてください。

    PImage a;

    void setup()

    {

    size(200, 200);

    a = loadImage(“arch.jpg”);

    }

    void draw()

    {

    image(a, 0, 0);

    tint(255, 0, 0);

    image(a, width/2, 0, a.width/2, a.height/2);

    noTint();

    }

  50. いけの より:

    ライブラリのソース(PGraphics2.java)を見るとnoTintで内部キャッシュのtint有効フラグをリセットしてないかも.もしかしてバグ発見?

    とりあえずはnoTint()をtint(255)とかで置き換えればよさそうです.

  51. Zenmai より:

    レスありがとうございます。

    tint(255)でいけました。

    これはバグっぽいですね。。

  52. お初ですみません、質問させてください。

    Processingを使用し、USB-シリアル通信で回路のボリュームをいじるとProcessing上でボリュームの数値が表示されるということをしているのですが、肝心のUSB-シリアル通信で以下のエラーが出ます。

    プログラムはExamplesのLibrary -Serial-AnalogInputを使用しました。

    gnu.io.PortInUseException: Unknown Application

    Processingだけを立ち上げてるにも関わらず、こんなエラーが出てしまうのですが、原因どなたかご存知の方いらっしゃいませんか?

    OSは10.3.9、ProcessingはProcessing97です。

  53. いけの より:

    bbs:

    http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Contribution_Physical;action=display;num=1115257138

    からリンクされている

    faq:

    http://processing.org/faq/bugs.html#serial

    のOSXの項.macosx_setup.command はすでに試されているでしょうか?

  54. はま3 より:

    はじめまして、質問させてください。

    カメラでキャプチャーした動画を記録できるようなもの

    を作りたいのです。

    以前このトピックで、

    画像を記録するために

    save()

    saveFrame()

    があると書いてあるのを拝見して調べてみたところ、

    saveFrame()のほうの説明文に、

    These image sequences can be loaded into programs such as Apple’s QuickTime software and made into movies.

    (訳:Appleの QuickTime のsoftwareを使えば動画にできますよ)

    と記述がされていますが、それ以上調べても僕の英語力ではよくわからないんです。

    (というかWindowsユーザーです…orz。)

    どなたか動画を作った方がいらっしゃったら、方法を教えていただけませんか?

    よろしくお願いします。

  55. dotimpact より:

    saveFrame()はProcessingの画面をフレームごとに画像にして連番のファイル名で保存してくれるので、それを順に読み込んでムービーにしてくれるツールがあれば、それを動画として保存できます。

    連番読み込みはいわゆる映像編集ソフトなら大体できそうな気がしますが、やっぱりいちばん手軽なのはQuickTimeProでしょうね。ダウンロードできるプレイヤーではなく、編集機能のある有料版のほうです。

    フリーのソフトもあるかもしれませんが、あんまり有名なのを聞かないですね。

    ここにTMPEGEncできるって書いてありますね。MPEG1とかでエンコードされちゃうのでソースによりそうですが。

    http://www-sci.edu.kagoshima-u.ac.jp/st-sci/physics/freelab/test08/mpeg.html

  56. はま3 より:

    おお〜〜。ありがとうございます!!

    早速見てみます。

  57. daixque より:

    saveについて質問したdaixqueです。

    Takachinさん、ご回答いただいたのにレスをせず失礼しました。

    動画作成についてですが、Windowsでしたら、”AVI Maker”を利用したことがあります。コーデックも選べます。

    http://yamatabi.que.ne.jp/soft/avimk/

  58. qCtth より:

    (>58 マルチポストっぽいことは辞めましょうね…最近俺が過敏すぎるだけかもしれないけど…

  59. rari より:

    はじめまして

    processing初心者です。

    先輩がアルファ版で作成したプログラムをベータ版に書き換えようとしていたのですが、splitFloatという関数がベータ版ではなくなっているようです。

    splitFloatの代わりとなるようなものはあるのでしょうか?

    お分かりになる方いらしたら教えてください。よろしくお願いします。

  60. Takachin@冬 より:

    > 59 rariさん

    以下のようにすればOKです。

    http://processing.org/reference/split_.html より。

    おそらく、sprit一つで十分なので、一つにまとめたんでしょうね。int()やfloat()でString型を数値型に変換しているのがポイントです。

    // α版のsplitIntの代用

    String numbers = “8 67 5 309”;

    int list[] = int(split(numbers));

    // α版のsplitFloatの代用

    String floatNumbers = “8.0 67.0 5.0 3.09”;

    float floatList[] = float(split(floatNumbers));

  61. rari より:

    >Takachinさん

    ご丁寧な回答ありがとうございましたm(__)m

    さっそく試してみます。

  62. ‭Taka より:

    本当に無知な質問ですいません

    Processingを始めようとダウンロードしてインストールしてプログラムを作り、実行しようとしたら、

    C:/processing-0103/processing-0103/..java:0:0:0:0: Semantic Error: The input file “C:/DOCUME~1/???r???V/LOCALS~1/Temp/build33259.tmp/Temporary_6266_5052.java” was not found.

    というエラーが出て実行できませんどうしたらいいのか教えてください。

    Processingを置いた場所が悪かったのかなとおもい、Cドライブのすぐ下に位置を移動してもだめでした

    あと、実行するとなぜかC:\Documents and Settingsのところに …r…×…Vというフォルダーが作られてしまいます

     

  63. ‭Taka より:

    ちょっと最新版に触れてないのでわからないのですが、昔のprocessingではデスクトップみたいな日本語フォルダで起動したらエラーみたいな挙動がありました。

    ユーザー名が日本語でしょうか? それでユーザー名のフォルダに設定ファイルが作れない・・・みたいな感じなのかもしれません。

    そういう感じだったら、一応、本家でバグ報告するのをオススメします。

  64. Takachin@冬 より:

    遅くなって、すいませんっ

    パソコンを再セットアップしてはじめからゆっくりやるとできました

    ありがとうございますっ

  65. Takachin@冬 より:

    すごい今更なお返事で申し訳ない。

    このバグはbuzillaに登録されています。

    http://dev.processing.org/bugs/show_bug.cgi?id=49

    根本的な対策ではないですが、etoさんの記録も参照してみてください。

    http://eto.com/d/ProcessingTrouble.html

  66. おドクさん より:

    皆さん、はじめまして。

    ご質問なのですが、現在私、Eclipseを使用してProcessingのソースを書いてるのですが

    OpenGLライブラリの使用方法がよく判りませんでした。。

    ただopengl.jar等をインポートするだけではいけないのですね。。

    Eclipse上でGLのライブラリを使用する方法をご存知の方が居ましたら、教えて頂けませんでしょうか。。

  67. rikiya より:

    eclipseでprocessingのコードを書くときは、ソースにeclipse用のbranchがあるのでそれをworkspaceにcheckoutしたものを使用すると便利です。

    checkoutするには、別途、Subclipseプラグインをeclipseに入れておく必要があります。

    チェックアウト元のURL

    svn://processing.org/branches/processing-eclipsify/processing

    チェックアウト後は、Quicktime for Javaのzipの参照設定が

    設定されていないので、設定すれば準備完了です。

    (Windowsなら、通常、C:/Program Files/QuickTime/QTSystem/QTJava.zip)

    OpenGLもその環境でそのまま使えます。

  68. おドクさん より:

    亀レス大変失礼致しました。。

    ご教授有難う御座います!

    只今、チェックアウト中で御座います。

    本当に助かりましたーコレで思う存分ニヤニヤ出来ます。

    (・∀・)ニヤニヤ

  69. ring-a-holic より:

    こんにちは〜最近Jmyronの勉強を始めたのですが、うまくいかなくて困っています。

    320*240サイズなら全く問題なく動くのですが、

    少し大きいものを作ろうとたくらみ、sizeを640*480に設定すると、ノイズのようなものが入ってしまって使えません。

    WebCameraはELECOM製のUCAM-S1C30MDRSという型番で、

    CMOS30万画素、最大解像度640×480ピクセルのものをつかっています。

    直接Proce55ingの事じゃなくてコミュ違いもいいところなのですが(本当にすみません。。。)もし原因わかる方いらっしゃいましたらお願いします。

  70. 橘 征 二 郎 より:

    みなさん、はじめまして。

    size(640, 480, P3D) だとかsize(640, 480, OPENGL)

    と書くとz軸ができると思うのですが、その時のz軸のとりうる値。

    つまり、最小値から最大値までの範囲はどのような値をとるのでしょうか?

    いろいろ調べてみましたがよくわかりませんでした。

    無知な質問かもしれませんが、どうかよろしくお願いします。

  71. 橘 征 二 郎 より:

    みなさんはじめまして。初めての書き込みをします。

    早速質問なのですが、Processingって日本語のタイプはできないようなのですが、何か方法はあるのでしょうか?なにかパッチのようなものはあるのでしょうか?

    テキストファイルに日本語を書いてそれを読み込んでも表示できませんでした。

    何か方法を知ってる方がいれば教えて頂きたいです。

    よろしくお願い致します。

  72. 橘 征 二 郎 より:

    と、思って今Windows試してみたらできました。

    macで使用する手はあるのでしょうか?

    ちなみにEUCだと文字化けしたのですが文字コードとprocessingの関係詳しい方がいらっしゃれば教えていただけないでしょうか?

  73. 橘 征 二 郎 より:

    独り言のようになってすいませんが、、

    processingで新ゴ及びモリサワ書体を表示する方法をだれか知りませんか?

    processingってcreate fontでビットマップのフォントを作成するんですよね?

    試用版のビットマップフォントとかあればできるのでしょうか?

    NEW CIDタイプは読み込んでくれないようなのですが。

    誰か知ってる方がいれば教えて頂きたいです。

  74. G___orz より:

    >71,72

    えっと多分なのですが

    文字コードの部分で表示できなかったのでは?

    ソースを見てないのでなんともいえないのですが

    EUCなら文字化けしたと言うのなら

    Javaの(p5の大本はJava言語です)デフォルトであるUnicode

    つまり”UTF-8″形式でファイル保存して読み込んではいかがでしょう?

    日本語表示は可能ですよ♪

    >73

    NEW CIDとか当方Windowsオンリーなので全然分からないのですがこのcreate fontってもしかしたらTRUETYPEかOpenTypeでしか対応してないのではとか思ってます。(間違ってたら失礼)

  75. NatcH より:

    こんにちは。

    大学でメディアアートを専攻しておりますNatcHと申します。

    質問させてください。

    processeingのコードで書いたアプレットを

    スクリーンセーバとして使用することは可能なのでしょうか?

    調べてみたところ、CocoaでObject-Cで書けばよいだとか

    少ないながら情報はあったのですが、どうもよくわかりません。

    何かしら方法をご存知の方がいらっしゃいましたら

    教えていただけたら嬉しいです。

    よろしくお願いします。

    環境は以下です。

    Mac OS X 10.4.8

    processeng 0119Beta

    ちなみに今回スクリーンセーバにしたいものはこちらです。

    http://www.design.kyushu-u.ac.jp/~iwatan/square/index.html

  76. G___orz より:

    多分求めてる回答とは違うけど…

    単にフルスクリーンにするっていう方法ならこういう方法でいけるとともいますよー

    http://www.superduper.org/processing/fullscreen_api/

    あとは、mouseMoved()メソッドあたりでstopさせるとかで・・・

    System.exit(1)とかでアプリケーションをstopできるかと・・

    mouseMoved(){

    System.exist(1);

    }

    みたいなかんじで

    あとはFileのExportApplicationでアプリケーション化とかでどうでしょ?

    あ、けどこの方法だと〜分後にスクリーンセーバーを復旧するって言う処理がないあなぁ・・・

  77. dotimpact より:

    えーと、ぜんぜん詳しくないですが、

    http://www.h5.dion.ne.jp/~tuyano/Tankoubon/MacOSXHon2.html

    こちらなど見ると、プロパティリストを手書きすればjavaアプリケーションでも起動できるのかな?(憶測です)

    G___orzさんの方法でフルスクリーン、mousemoveで終了するアプリにして、それを呼ぶように設定してやれば、できそうな予感がします。

  78. NatcH より:

    ご回答ありがとうございます。

    方法を2つ考えました。

    1. G___orzさんご紹介のAPIを利用し、

    規定の時間入力がない場合にフルスクリーンモードで動作し、

    入力があった場合に動作をやめるアプリケーションとしてビルドする。

    2. ビルドしたJavaアプリケーションを

    dotimpactさんご紹介の方法で

    Macにスクリーンセーバとして認識させる

    1の方法を試してみたところ、

    アプレットのウィンドウにフォーカスしていないと

    マウスやキーボードで入力を加えてもタイマーがリセットされず

    作業中に起動してしまいます。

    他のアプリケーションを操作している際の入力もアプレットに

    認識されれば良いのですが方法が検討もつきません。

    2の方法は恥ずかしながらよくわかりませんでした。

    info.plistのどこをどう書き換えれば良いのか・・・

    どなたか助言を頂けないでしょうか?

  79. f より:

    いままでAlpha68を使っていたのですが、Beta124に変えたらIEで動かす際に、JRE(1.3以降)のインストールが必要になってしまいました。

    サイトで幅広く公開するにはちょっとつらいです。

    最新版でJRE1.1準拠のAppletを作ることでできないのでしょうか。

  80. つだっち より:

    はじめまして、Processingをやろうとしているものです。

    質問なのですが、ゲームパッド(特にアナログスティック)を

    使いたいのですが、ドライバーのようなものはあるのでしょうか?

    よろしくお願いいたします。

  81. つだっち より:

    >80

    proControlというLibraryを使えば出来そうですよ。

    ドライバーというか中身はJavaなので。

    そんな感じです。

  82. つだっち より:

    >proControlというLibraryを使えば出来そうですよ。

    ご回答ありがとうございます。それとこちらどこで手にはいりますか?

  83. つだっち より:

    Takachinさん

    ありがとうございました!早速試してみます。

  84. Takachin@冬 より:

    質問でス。

    winのproce55ingでWinVIDGを使ってWebCamを利用できている方、そのWebCamはどこのメーカーの何というWebCamですか??

    手元にあるカメラではダメだったので是非使えているカメラを知りたいです。

    どうぞよろしくデス。

    ※ちなみに手元のカメラはpicoShot(笑

  85. Takachin@冬 より:

    WinVDIGで最近試してないのですが、確かLogicoolのものだとうまくいっていた記憶があります。

    古い動作確認リストもヒントになる。。かもしれません。

    http://www.vdig.com/WinVDIG/compatability.html

    ちなみに私はWindowsだとProcessingでビデオキャプチャをする場合はtoxiのLibCVを使います。 JavaMediaFrameWorkというものを導入する必要があり、少し面倒でクセがありますが、こちらはそこそこ高速です。こちらも Logicoolでテストしています。

    http://toxi.co.uk/p5/libcv/

  86. CUE より:

    Logicool、ありがとう御座います。

    古い動作確認リストは見ていたのですが・・・。

    メーカーを見ても知らないものとかばかりだったので(汗

    LibCVも参考になります。

    JMFについてはライブラリ関連で手を出そうかと考えていたのでちょうど良いのかも知れませんし導入を検討します。

    感謝!

  87. CUE より:

    Windows Vistaでaeroを使うと まるっきり動かないんですが

    どなたか回避できてるかたおられますか?

    vistaでもaeroにしなければ動くんですけどね。

    できればaeroをやめろというのは無しで解決できてる人が

    いればぜひ教えてください。

  88. g2- より:

    aero綺麗ですもんね。

    XPなわたしはちょっとうらやましい。

    しかしVistaでp5動作しないとは。

    解答に興味があります。

    が、個人的な予想としてはaeroとAWTやSWINGの相性問題。

    で、調べてみました。

    http://d.hatena.ne.jp/Kazzz/20061202/p1

    ちょっと症状は違うけどJAVAのバージョンによってひょっとしたらみたいな話なのかも知れません。

    ついでにall aboutより

    VistaでJavaを使うには?

    http://allabout.co.jp/internet/java/closeup/CU20070322A/index.htm

    これもaeroをoffで動作するという点から考えるとちょっと違う気がするのですけれど念のため。

    Vista、見た目は好きだけど面倒そうですね…。

  89. g2- より:

    質問です

    http://processing.org/reference/new.html

    referenceを利用して勉強しているですがここに出てくる

    “new” と “.(dot)”の使われ方が解らなくて考え込んでます。

    どなたかよろしければこのprogramの流れをご教授してください。

  90. g2- より:

    h1という名前でHLineクラスを作りました。

    HLine h1;

    さらにh1を初期化しなければなりません。

    h1 = new HLine();

    この2行を一緒にすると

    HLine h1 = new HLine();

    となります。

    h1はHLineクラスのメソッドにアクセスできるので。

    HLineが持つメソッドupdate( float )を呼び出すことが出来ます。

    h1の中のupdateなので

    h1.update();

    引数としてyposを渡したいので

    h1.update( ypos );

    となります・・。

    なんかオブジェクトだのクラスだのメソッドだの。

    オブジェクト指向独自の言葉がいっぱい出てきてしまう話なのであまり気にせずにこうやって使うんだなー程度に覚えちゃうのが良いかもしれません。

    でもどうしてもここら辺を克服したいのであればJAVAのオブジェクト指向関連の入門書をお薦めしますデス。

  91. g2- より:

    rozさん親切にありがとうございます

    最後にもう一つ質問させてください

    class HLine {

    void update(float y) {

    line(0, y, width, y);

    }

    }

    このCLASS内ではupdateの引数が

    float y

    になっているのに、どうして呼び出された

    updateでは引数が

    ypos

    になるのですか?

  92. DECO より:

    クラスの中ではyというのをつかいまわすけど外で何を使おうとクラスにとってはどうでもいい話だという説明で大丈夫でしょうか?

    クラスは完全に独自の世界を持つので外部の変数が参照されることはないんです。

    基本的には。

    変数のタイプ(intとかfloatとか)さえ合っていれば何を使っても問題ありません。

  93. DECO より:

    質問です。

    WinVDIGをダウンロードしたいのですが、書籍にあったURLからサイトにアクセスする事が出来ません。

    その他いろんなサイトのリンクを辿って行ったのですが、どれも結果は同じで「ページを表示できません」となってしまいます。

    どこか別のサイトでダウンロード出来るような所はあるのでしょうか?自分の環境が悪いのでしょうか?

    また、この他にもWinのProcessingでDVカメラを扱う方法などあるのですかね?

    何か情報があれば宜しくお願いします。

    http://www.vdig.com/

    http://www.vdig.com/WinVDIG/rel_notes.html

  94. dotimpact より:

    URLちょっと弄ると行けますよ。

    確かトップページから過去のリリース(という事が書いてある英語)へのリンクから辿ってゆくことが出来たと思います。

  95. dotimpact より:

    http://www.vdig.com/WinVDIG/rel_notes.html

    ここの、「Version 1.0.1」のリンクからダウンロードできませんか?

  96. DECO より:

    >rozさん

    >dotimpactさん

    ダウンロードする事が出来ました。

    ありがとう御座います!

    この一週間ずっとこのリンク先を覗いてみてたんですけど、ずっと表示してくれなくて、サイト自体がが潰れてるのかな?と頭抱えてました。

    でも、今日行ってみるとすんなりサイトを表示してくれまして。。。

    PCやブラウザの環境はまったく同じなんですけどね。。。

    原因が分からないだけにちょっと気持ち悪さも残りますが、無事にprocessing内でDVカメラも動作してくれました。

    ありがとう御座います。

    お騒がせしました。

  97. g2- より:

    背景色を時間ごとにだんだんじんわりと変えていくってどうしたらいいでしょうか。

    わかる方、お願いします。

  98. g2- より:

    draw()ブロックのなかでbackgroundを指定すればいいとおもいますが。

  99. g2- より:

    ありがとうございます!

  100. g2- より:

    backgroundを消したいのですがcolorModeをHSBにしてalphaの値を0にしたのですがうまくprogramが走りません。

    もし走ったとしてもpdfでexportした際alphaを0にしたbackgroundは消せるんでしょうか?

  101. じっく より:

    ちょっと悩んでしまって質問させてください。

    ls、dirのようなディレクトリ内の情報を取得してディレクトリ内にあるファイル名を取得したいのですが、そのような命令はあるのでしょうか?もしくはそういったことは可能なのでしょうか?

    ご存知の方アドバイスをお願いいたします。

  102. Takachin@冬 より:

    > 105

    —-

    import java.io.*;

    void setup(){

    try {

    File directory1 = new File(“/Users/takachin/”, “FILE_CLASS”);

    File file1 = new File(directory1, “file.txt”);

    directory1.mkdir();

    file1.createNewFile();

    if(file1.exists()) {

    println(“ファイル名:” + file1.getName());

    println(“格納ディレクトリ名:” + file1.getParent());

    println(“PATH名:” + file1.getAbsolutePath());

    println(“−−−−−−−−−−−−−−−−”);

    }

    } catch(IOException e) {

    }

    }

    —-

    というコードをprocessing124 MacOSXで書いたら動作したので、Fileクラスが普通に使えます。Flileクラスを利用すれば、目的の動作は実現できると思います。

    上記のコードは以下のページを参考にしました。

    http://www.javaroad.jp/java_io8.htm

  103. じっく より:

    > 106

    Takachinさん、ご返答ありがとうございます!

    かなり目的に近づけたのですが、Fileクラスはファイルを実際に作るものなのですね。。ls、pwdなどのように単純にカレントを取得したりとかはできないようですね。javaのリファレンスを参考にすればよいのかな?調べてみます!

  104. 裏話 より:

    質問。processingで描いた画像を二次利用(ポスターに使ったり)したいのですが、高解像度の画像を得るにはどうしたらいいんでしょう?

    スクリーンショットだと、粗くなってしまいますし、

    PDF保存だと、なぜか透明効果が反映されないので、使えません…

    あと、フォントを使用した時も、PDF保存は失敗するようですし。

    なにか、上手い方法をご存知の方がいれば教えてください!

  105. Takachin@冬 より:

    手段のひとつとして、

    ベクターで描く手段を検討してみてはいかがでしょう。

    わたしは使ったことがないですが、

    prosvg http://www.texone.org/prosvg/ というSVG書き出しをする方法があります。ただ、日本語フォントのサポートはちょっとわかりません。(すみません!)

    PDF透明だめなんですね。

    フォントはやっぱり日本語がだめなんでしょうか?

    あとちょっと公式サイトの掲示板を少し検索してみたところ、こういう議論を見つけました。(英語ですが)

    http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Syntax;action=display;num=1127153907

  106. 裏話 より:

    >Takachinさん

    ありがとうございます!参考にしてみます。

    (フォントは、日本語ではなく欧文書体です)

  107. dotimpact より:

    計算結果をBMPとかに書き出すという方法を最初に思いついてしまいました。

    手間が掛かるし画面の表示とか全く関係ないという全く持ってP5の利点に肖れない方法でしたり(笑

    SVGならFireFoxやらのブラウザでも表示できるしSodiPodiとか使って印刷も出来そう(出来る?)なのでいいですね。

    わたしもこのやりとりは参考になりました。

    感謝感謝。

  108. dotimpact より:

    TileSaverクラスで巨大画像を作るのはどうでしょうか。

    http://workshop.evolutionzone.com/2007/03/24/code-tilesaverpde/

  109. Mojo倉mojo より:

    初めまして、processingをMacで使っています

    環境をppc > intel に移行していたのですがproMIDIの設定でつまづきました。

    主にMIDIフィジカルコントローラーを使用してProcessingのプログラムを操作をしています。

    OS X の JavaがMIDIを扱えないので、ppcのときは

     ・Plumstone

      http://www.mandolane.co.uk/swPlumstone.html

    を使用してました。

    intel Mac用はシェアウェアなのとJava1.5以上というのが気になり、ほかにさがしたところ

     ・mmj

      http://www.humatic.de/htools/mmj.htm

    というのを見つけました。

    とりあえず、書いてある通り/Library/Java/Extensions

    に設置したところ、アウトプットは認識されましたが、

    インプットが使えない状況です。

    —P55コンソール—————————-

    printPorts of midiIO

    << inputs: >>>>>>>>>>>>>>>>>>>>>>

    << outputs: >>>>>>>>>>>>>>>>>>>>>

    output 0 : IAC Driver – Bus 1

    output 1 : UM-1 – UM-1

    output 2 : Java Sound Synthesizer

    <<>>>>>>>>> >>>>>>>>>>>>>>>>>>

    ——————————————-

    使用する予定のMIDI機器はOS的には認識され、信号なども確認できています。

    ppcMacがハード的に故障し、せっかくだからintelに移行したのですがこんな落とし穴があったとは

    現在も調べておりますが、何か情報ございましたらお待ちしております。

  110. Mojo倉mojo より:

    はじめまして

    教えて頂きたいことがあって書き込みをさせて頂きました。

    processingで、3Dを扱い始めたのですが、

    processingの3D空間でのオブジェクトの軸は、

    ワールド軸ではなく、ローカル軸で動いているように思いました。

    これをワールド軸で動かしたいと思うのですが、

    良い方法はないでしょうか?

    軸がコロコロ変わらない方法をお願いします。

    単純な見逃しだったり、調べ不足でしたらすみません。

  111. Mojo倉mojo より:

    rainbowさん
    初めまして
    pushMatrix
    popMatrixで基準座標に戻るか

    cameraで視点をごっそり動かすんじゃ駄目ですか?

    私はそうやってます
    他のやり方もあるなら知りたいです

  112. Mojo倉mojo より:

    Mojo倉mojoさん

    返答ありがとうございます。

    オブジェクトの軸の変化ごとに

    スタックに保持し続けて、popで一つづつ戻って意図するところでイジッていくということですね。

    なるほど、確かにその方法ならば、基準まで戻れますねっ

    なるほどです。

    こっちの方法の方が私のやりたかったことを実現できそうです。

    アドバイスありがとうございました!

    私は、複数のオブジェクトも同時に扱ってかつ、アニメーションも使いたかったので、視点をコロコロ変えるのは大変かなと思いました。

    実は、上手い方法があるのであれば、是非知りたいです。

  113. Mojo倉mojo より:

    rainbowさん
    お役に立てたなら幸いです

    ソース不在で話すのは難儀ですが携帯からなので悪しからず

    私もFWビデオを背景に入れて
    前で3Dオブジェクトを動かしたりしていますが
    3Dオブジェクトを描画するルーチン(やクラス)を呼ぶ前後をpush popで挟んでいる感じですね

    公開されているソースなども研究してみたら良いのでしょうね
    (私はソースの整理まで手が回らず酷いコードが溜まっています)

  114. 機能別ヘ より:

    花火大会やら、流れ星やらで夜空を観る機会が多い

    今日この頃。WebDesigning誌の”仮想万華鏡”という

    記事にも触発され、processingで万華鏡チックなものを

    作っています。

    rotate()やtranslate()のループで作った写真1のパターンを

    写真2の用にfor loopでタイリングする部分はできまして、

    次はカラーリングに進みます。

    三角形の中をグラデーションで塗りつぶしたいのですが

    triangle(), ellipse()などの既存オブジェクトの中身を

    グラデーションする方法はございませんでしょうか?

    今後はbesierなどで前景部分も工夫していきたいです。

  115. NatcH より:

    >>118 : モコさん

    size(200,200);

    int rad = 50; //円の半径

    int x0 = 100; //円の中心

    int y0 = 100;

    int x, y;

    int r,g,b;

    for(x = x0-rad; x < x0+rad; x++) {

    for(y = y0-rad; y < y0+rad; y++) {

    if(dist(x,y, x0,y0) < rad) { //点(x,y)が円の内部にあるか

    r = (x-(x0-rad))*255/rad;

    g = (y-(y0-rad))*255/rad;

    b = 0;

    stroke(r,g,b);

    point(x,y);

    }

    }

    }

    あまりきれいなグラデーションではありませんが(^_^;)

    こういった方法しか思いつきませんでした。

    ellipse()は使っていませんが、

    意図されているのはこういうことでしょうか?

  116. 機能別ヘ より:

    Natc Hさん

    どうも綺麗な例を有り難うございました。

    花火・夜空で明るい青系から暗い青へのグラデを

    考えているので、○状のグラデで 暗さを入れて

    いく部分も参考にいたします。

    添付図とソースのように、color(HSB,1)の

    直線の繰り返しで可視光の波長領域風に

    長方形状にfillしたことはありまして、

    直線的なグラデに関しては、

    頂点座標からの比例式で定めようとは

    判っていたのですが、それ+○状で進めることします。

    bezierVertexの中をグラデーションで塗るのは

    無茶そうですね。

    夕方と夜の境目である、橙-白-青にグラデーションしていく

    空も綺麗なので、青系グラデの次はそちらを微調整してみます。

    どうも有り難うございました。

    出来上がったら作品トピックに上げたいとおもいます。

    その時は、Natc Hさんにもご覧いただけたら嬉しいです。



    void draw(){

    noStroke();

    colorMode(HSB, 100);

    for(int i=79; i>0;i–)

    for(int j=0; j<100;j++)

    {

    stroke(i,j,100);

    //stroke(i,100,100);

    if(){

    point(200-(2*i),j);

    point(200-(2*i+1),j);

    }

  117. (30)さ より:

    OSCで、ProcessingとMax/MSPの通信に四苦八苦しています。

    oscP5というライブラリで、OSCのデータを受信するときにつかうoscEventというメソッドで、以下のようなプログラムを書いたのですが、一つ分からない点があります。

    ————————————

    void oscEvent(OscMessage theOscMessage)

    {

     String ap = theOscMessage.addrPattern();

     println(ap);

     if( ap == “/test”)

     {

      println(“HIT”);

     }

    }

    ————————————



    println(ap);で、”/test”と出力されるが、

    println(“HIT”);は、出力されない。

    その理由が知りたいです。

    addrPattern()というメソッドについて調べると、どうも戻り値はないようなので、この条件式が成立しないのも分からなくはないのですが、今度は逆にprintln(ap);のときに何故文字列が出力されるのかが分かりません。

    http://www.sojamo.de/content/p5/oscP5/documentation/

    以下のように書けば、同じような結果が得られるのは分かっているのですが、プログラムを短くしたくて、上のような方法を試しています。

    ————————————

    void oscEvent(OscMessage theOscMessage)

    {

     if(theOscMessage.checkAddrPattern(“/test”)==true)

     {

      println(“HIT”);

     }

    }

    ————————————

  118. NatcH より:

    >>122 : (30)さん

    Stringクラスの変数を比べる時は

    “a == b”

    ではなく

    “a.equals(b)”

    を使う方が無難だと思います。

    apの中身を表現するなら”/test”ですが

    だといってapは”/test”と同じものではないのです。

    実効的に中身は同じものでも

    インスタンスとしては違うものなのです。

  119. (30)さ より:

    NatcHさん

    ご回答ありがとうございます!

    動くようになりました!

    ただ、動いたのは良いのですが、

    まだちゃんと理解できていないので、

    もう少し質問させて下さい。

    String ap = “/test”;

    if( ap == “/test”)

    {

     println(“HIT”);

    }

    だと、動くことが確認できたので、

    つまり、

    “/test” == “/test” は、true

    theOscMessage.addrPattern() == “/test” は、false

    ということだと思いました。

    println(theOscMessage.addrPattern())

    のときに、theOscMessage.addrPattern()が吐き出すものは、実はString型ではないということでしょうか?String型じゃなければ、何なのかというのも気になります。

    if( ap == “/test”)



    if( ap.equals(“/test”) == true)

    にしたら動いたのですが、

    なぜ動くようになったのか、もう少し詳しく教えていただけるとうれしいです。

    なんとなく、Stringというクラスがあって、そのクラスのメソッドにequals()がある雰囲気ですが、そうだとすると、”theOscMessage.addrPattern()”(=ap)は、Stringクラスだったということになりますが、そうなんでしょうか?

    いろいろ混乱しています。

    それから、

    string.equals()

    という比較の仕方はどこを調べれば載っていますか?

    お時間のあるときにでもお答え頂ければ幸いです。

    よろしくお願いいたします。

  120. NatcH より:

    >>124 : (30)さん

    >String ap = “/test”;

    これは、String型の変数apにString型定数(という言い方が正しいかどうか不安ですが)”/test”を格納するという処理になります。

    そして

    >if( ap == “/test”)

    これは、String型の変数apとString型定数”/test”が

    同じオブジェクトか、つまり参照が同じであるかどうか

    の比較です。(一致比較といいます)

    対して

    >if( ap.equals(“/test”) == true)

    これは、(if( ap.equals(“/test”))で充分なのですが))

    apの値が”/test”と等しいかどうかの比較です。(同値比較)

    今回やりたいのは同値比較なのでequalsメソッドを使います。

    要は、オブジェクトとして同じものかどうか比較したいのか

    その中の値が等しいかどうか比較したいのかの差です。

    ※注意:そもそもequalsメソッドはObjectクラスのメソッドで一致比較をするためのもので”==”と同じものなのですがStringクラスでは同値比較に使えるようオーバーライドされているので同値比較に使えるわけです。

    >”/test” == “/test” は、true

    >theOscMessage.addrPattern() == “/test” は、false

    >ということだと思いました。

    これは、どうなのでしょう。試してませんが、

    下もtrueになりそうな気がします。お試しください。

    >theOscMessage.addrPattern()が吐き出すもの

    >”theOscMessage.addrPattern()”(=ap)は、Stringクラス

    これはStringぽいですよね。>>122のリンクでは

    Noneとなっていますが、checkAddrPattern()の項を見ても、

    Stringが返されると考えるのが自然だと僕は思いました。

    >string.equals()

    >という比較の仕方はどこを調べれば載っていますか?

    ここが分かりやすそうです。

    http://www.okapiproject.com/java/java_ref/foundation/manual_06.htm

  121. (30)さ より:

    >125

    >NatcHさん

    とても詳しい解説ありがとうございます。

    .equals() は、Javaのメソッドだったんですね。

    そして、最後に掲載していただいたリンク先のページも

    とても分かりやすく、勉強になりました。

    というか、このOkapi Project のページは

    全体的に分かりやすくて良いですね。

    http://www.okapiproject.com/

    Eclipseも前から気になっていたのですが、

    ここを見ながらやれば割と簡単に導入できそうだなと思いました。

    >>”/test” == “/test” は、true

    >>theOscMessage.addrPattern() == “/test” は、false

    >>ということだと思いました。

    >これは、どうなのでしょう。試してませんが、

    >下もtrueになりそうな気がします。お試しください。

    もう一度試しましたが、

    下は、やはり、falseになります。

    ですが、教えて頂いたURLを見たところ、

    要は下の場合、

    「値は同じだが」

    「オブジェクトの参照が違う」

    ということになり、

    falseになると、理解できました。

    いろいろと丁寧に答えてくださり

    ありがとうございました!

  122. (30)さ より:

    >125

    >NatcHさん

    すみません、以下コメントし忘れてました。

    >>theOscMessage.addrPattern()が吐き出すもの

    >>”theOscMessage.addrPattern()”(=ap)は、Stringクラス

    >これはStringぽいですよね。>>122のリンクでは

    >Noneとなっていますが、checkAddrPattern()の項を見ても、

    >Stringが返されると考えるのが自然だと僕は思いました。

    そうですよね、

    oscP5のリファレンスが間違ってるのかもしれないですね。

    だから余計に混乱したのかもしれません。

    余談ですが、

    今月22日に福岡までライブで遠征するので、

    もし良かったら遊びにきてください。

    今Processingで作っているシステムを使うかもしれません。

    River Sideとかいうところで、20:00ぐらいからやってます。

    http://www.jazz-riverside.com/

  123. いけの より:

    トピ違いのような気もするけど,他に適当な質問トピが無かったのでここで聞きます.

    http://gigazine.net/index.php?/news/comments/20070512_magnetosphere/

    で紹介されているのを今頃知ったんですが,iTunes用ビジュアライザを作っている人います?

    win版のSDKを落としたところ,サンプルはcからGDIで描画しているようでした.

  124. いけの より:

    >いけのさん

    ビジュアライザを作るときに必要な技術がFFTです。

    要するに音を周波数毎に解析してやる必要があります。

    グライコなんかがまさにそうですよね、周波数毎のボリュームをただ表示するだけの極めてシンプルなFFTの活用法だと思います。

    使えそうなlibとしてはminimとか。

    http://code.compartmental.net/tools/minim

    あとはiTunesの音声出力をどのようにproce55ingに取り込むかというオーディオのルーティングの問題さえクリアすれば大丈夫ではないでしょうかね。

  125. いけの より:

    “developed Magnetosphere in Processing and then ported it line-by-line to C++. ”

    http://radar.oreilly.com/archives/2007/06/magnetosphere_t.html

    てことは,単にprocessingでモックを作ってから,それをc++に移植ってことなのかな?

    processingで作れるなら,敷居が下がって作成者が増えるかと思ったのですが.

  126. Takachin@冬 より:

    proce55ing自体がプロトタイピングツールと位置づけられていますからネ、速度的にはかなりシビアなものもありますからね。

    プラグイン形式にするのにもムリがありますしね。

    あくまでエンジン部分だけproce55ingで試してみたってことなのでしょう。

  127. Takachin@冬 より:

    Magenetosphereはitunesのプラグインなので、C関係じゃないと正直難しいとおもいます。(itunesSDKを見てみましたが、Mac,Win共にC言語ですね)プロトタイプをProcessingで書いて、アイデアを検証してから、速くて堅い言語でline-by-lineで落とし込むのは妥当だと思います。

  128. yuta より:

    flashとprocessingの連携って

    なにか良い方法がありますか??

    例えば、フラッシュのインターフェースにプロセッシングで

    書き出した、jarファイルを組み込むだとか、ボタンクリックで

    表示させるとか。どうなんでしょうか??

  129. 質問です。

    某書籍に掲載されているプログラムなんですが、この例は次々に新しいフレームに高速に書き換えて、あたかも線が移動しているように見えるという解釈でいいのでしょうか。

    そうだとすると、このフレームレートはどのように決定されているのでしょうか。

    どなたかお詳しい方いらっしゃったらお教えいただきたいです。

    int x = 0; // Sets the horizontal position of the lines

    int y = 55; // Sets the vertical position of the lines

    void setup() {

    size(100, 100); // Sets the window size to 100 x 100 pixels

    }

    void draw() {

    background(204);

    line(x, y, x+20, y-40); // Left line

    line(x+10, y, x+30, y-40); // Middle line

    line(x+20, y, x+40, y-40); // Right line

    x = x + 1; // Add 1 to x

    if (x > 100) { // If x is greater than 100

    x = -40; // Assign -40 to x

    }

    }

  130. NatcH より:

    >>135 : お松さん

    ご存知かもしれませんが、フレームレートは

    frameRate(30);

    と書いて指定することができます。

    これを指定しない状態で

    print(frameRate);

    とすると10.0と表示されるので

    デフォルトのフレームレートは10.0であると思われます。

  131. NatcHさん

    なるほど。謎が解けました。

    frameRateにデフォルトがあるとは知りませんでした。

    frameRateが書いてないプログラムは何かまったく違う処理をおこなっているのかと思ってました。

    ありがとうございます。

  132. tac2 より:

    frameRateに関して、

    frameRate(30);

    println(frameRate);

    frameRate=20;

    println(frameRate);

    では、

    10.0

    20.0

    と出力されました。

    また、リファレンスには、The default rate is 60 frames per second.とありました。

    10.0という値の入ったframeRateは、どういう意味を持っているのでしょうか?

  133. (30)さ より:

    Windowsで、Eclipseを使ってみたのですが、

    Processingのコードヒントというのは出せるのでしょうか?

    (Dream WeaverやFlashのような感じの)

    また、コードのカラーリングなどはできるのでしょうか?

    (draw()、point()などの各種メソッドなどのカラーリング)

  134. やまはる より:

    はじめまして。

    初歩的な質問なのですが、processingで当たり判定?というかboxにほかのboxが当たったかどうかの判定をすることはできますか??

    boxにほかのboxがくっついたら画像ファイルを出す、というプログラムにしたいです。

    アドバイスよろしくお願いします!!

  135. (30)さ より:

    >やまはるさん

    boxが、四角い形をしているのであれば、

    それぞれのboxの、

    X座標と、横幅、

    Y座標と、縦幅、

    を調べれば、それが重なっているかどうか、

    判定できるんじゃないでしょうか。

    円も割と判定しやすそうですが、

    複雑な図形だとどうなるんでしょうね。

    Processingのサンプルプログラムに、ヒントになる

    プログラムがあると思いますよ。

  136. (30)さ より:

    >140

    「当たり判定」で検索すると色々出てきますね。

    当たり判定 – Wikipedia

    http://ja.wikipedia.org/wiki/%E5%BD%93%E3%81%9F%E3%82%8A%E5%88%A4%E5%AE%9A

    当たり判定のアルゴリズムを教えてください。

    http://oshiete1.goo.ne.jp/qa2176873.html

  137. やまはる より:

    (30)さん

    ありがとうございます!!

    座標が重なったかどうかを判定するような形で挑戦してみます><><

  138. 匿名 より:

    質問です。

    背景を透明にした、アルファチャンネル付の連番画像を書き出したいのですが、32bitのtiffやtgaで出力するにはどうすればいいのでしょうか?

  139. 匿名 より:

    >144

    書き出し周りを深く突っ込んでいないのでアレなんですが。

    基本クラスを見ている限りは自力でalpha付きのtiffなりtgaを書き出す必要があると思います。

    スクリーンに書き出した時点でalphaはブレンドされてalpha100%の画像として処理しているハズですので。

    間違えていたらどなたかご指摘宜しくお願いします。

  140. 匿名 より:

    extended MOON;さん、返答ありがとうございます。

    やはりsaveFrameの中でalpha指定、みたいなことはできないんですね。

    何か別の手段でキーイング作業やってみます。

  141. 匿名 より:

    はじめまして。

    WebCamをProce55singから使おうと思いまして、WinVDIGというドライバを使えばいいと言うのを教えてもらったのですが、肝心のサイトがドメイン失効していてどこから落とせばいいのやら困っています‥。

    どなたかバイナリもっておりませんでしょうか。もしくは、ミラーサイト等教えていただけると幸いです。

  142. 機能別ヘ より:

    何とリアルタイムな。

    わたしも実は昨晩WinVDIGを探していたところです。

    acドメインのFTPなんかを探れば出てきそうな気もしますがこのトピックを探してもらうとWinVDIG以外の別の手段についての話題があったようなきがします。というか質問して答えてもらった気がします。

    WinVDIG、うちのWebCamでは利用出来ませんでしたから、何にでも利用可能というわけでもないってところでひとつ。

    普通に利用できるようにして欲しいものですねー。

  143. 機能別ヘ より:

    自分も昨日探しました(笑)

    Internet Archiveにあります

    http://web.archive.org/web/*/http://www.vdig.com/

  144. CUE より:

    おー、WinVDIG 1.0.1ダウンロードできたー 笑

    やっぱりうちのWebCamではムリですねー。

    使えるWebCamの現行リストとか欲しいなぁ。

    一度も使えたことがないからどう動くのかすら解らないや。

  145. CUE より:

    動かないwebcamに嫌になったら、Macですよ。

    ところで、最新版になるとそろそろ vistaでも動くようになったんでしょうか?

    前に質問したときは processingというより Javaの問題だといわれていましたが。。。

  146. 匿名 より:

    質問させていただきたいのですが、

    processingとjavaの併用はできないのでしょうか?

    具体的には、

    processingでjavaのmenubarを使いたいと思っています。

    完全にjavaのコードで記述すれば、動きますが、

    それだと本当にjavaでしかないので、

    processingのコードの中で、processingのAPIになくてjavaのAPIにあるものを使うことができないかと思っています。

    恥ずかしいことを聞いているかもしれませんが、

    できないのであれば、できないということでもわかれば、良いと思っています。

    よろしくお願いします。

  147. 匿名 より:

    WebArchiveという手がありましたか!

    でも、VDIG動きませんでした‥

    んで、調べてみたらMyronつうドライバもあるみたいですね。

    http://webcamxtra.sourceforge.net/

    “PC Users, Say goodbye to Quicktime and WinVDig dependencies! Say hello to blazing fast frame rates.” なんて謳っているので使えるようになっているんでしょうか。

    Proce55ingのサンプルも入っていたので実行してみたら、ブルースクリーンすら出ずに強制再起動食らって落ちました(;´Д`)ぁはん

    カメラとかは認識してくれたので、これでもいいのかもしれませんねえ‥。

  148. mas より:

    >rainbowさん

    http://processing.org/reference/environment/index.html

    ↑このページの”Programming Modes”-“java”の項に書いてあるようにプログラムを書けば、javaが使えると思います。

  149. mas より:

    >masさん

    ご回答ありがとうございます。

    このjavaModeなんですが、

    processingは、完全javaをカバーしているわけではないようで、

    processingのコーディングと併用できる部分が限られているように使っていて感じました。

    いろいろ併用して使おうと思い、javaのクラスをextendしたりするのですが、

    それをするとprocessingのコーディングは使えない?

    勉強不足なので、間違ってると思いますが、

    PAppletなどのスーパークラスにないjavaのクラスがあるようで、そのクラスを継承または、使う方法がないかと思って質問を書き込みました。

  150. mas より:

    >rainbowさん

    すいません。私が質問の意味を理解していないみたいです。

    >processingのコードの中で、processingのAPIになくてjavaのAPIにあるものを使うことができないか

    >と思っています。

    以下のプログラムで、processingのコードの中でjavaのAPIにあるものを使えているような気がするの

    ですが・・・もっと質問の意図は違うところにあるのでしょうか?

    —–

    import java.awt.*;

    public class MyDemo extends PApplet {

    void setup() {

    size(200, 200);

    new MenuTest();

    }

    void draw() {

    background(255);

    }

    class MenuTest extends Frame {

    MenuTest() {

    setSize(200, 100);

    MenuBar menuBar = new MenuBar();

    setMenuBar(menuBar);

    Menu menuFile = new Menu(“File”);

    menuBar.add(menuFile);

    show();

    }

    }

    }

  151. はじめまして。

    友人の勧めもあり、まったくの初心者でprocessingを

    ダウンロードしてみたのですが、起動したりしなかったり、

    起動しても、メニュバー?のところが□□□になったり、

    文字化けしてしまいます。

    ちなみにwindows vistaです。

    互換モードも試して、画面もvista標準にしてみました。

    ユーザー名が日本語だと動かないと聞いたんですが、

    日本語ではありません。

    ただ、ローカルディスク(C)の下に(program filesとかがあるのと同じとこに)「ユーザー」というフォルダがあって

    それがカタカナなのは大丈夫なのかな?と思ったのですが、

    どうやって回避したらいいかがよくわかりませんでした。

    頭悪くてすみません。

    何かアドヴァイスを頂けたらと思います。

    よろしくお願いします。

  152. >歩亜ティ さん

    はじめまして。

    私もvistaでメニューの文字が表示されず、とても使いづらい状態です(自動で互換モード?に切り替わりましたが。。。)

    付属のjvm(jikes)がvistaに対応していないからかな?Sunのjavaを入れたらちゃんと動くかな?と思いつつ、まだ試せていません。

    歩亜ティさんが書かれている「ユーザー」のところは内部的には「Users」なので問題は無いと思いますが。。。

    vistaでproce55ingを問題なく使えている方がおられましたら情報をお願いします。

  153. mas より:

    >歩亜ティさん、そーさん

    私の環境では、vistaのデスクトップのテーマをクラシックスタイルに変更して問題なく動作してます↓

    —–

    http://windows-vista.ygjt.biz/article/34259975.html

    理由は、processingが、vistaのaeroに対応してないためだった気がします。

    (※注 私も調べきれていないので、もしかしたら違うかもしれません・・・)

    中途半端な情報ですいません。

    正確な理由&もっと良い対応策がわかる方がいたら私も教えていただきたいです。

  154. >masさん そーさん

    コメントありがとうございます!!

    processingが、vistaのaeroに対応してないということはわかっていたのですが

    javaで、vista標準に変更しました というのが出てたから

    はじめからvista標準にすれば回避できるかと思ってたのですが、

    うまくいかず、なんでだろうと思っていました。

    でもクラシックに変えたらスムーズに動いてるようです。

    ありがとうございました。

  155. > masさん 歩亜ティさん

    あ、クラシックにすれば平気なんですね。。。

    まだvistaに慣れてないのでそんな解決法があるとは思いませんでした。

    ありがとうございます。

    sunのjava入れてみる方は会社のvistaマシンで試してみます。

    なにか分かったらまた報告しますー

  156. tac2 より:

    日本語表示について質問です。

    表示できないと書いてあるサイトが多いですが、

    下記のようなリストで表示できますが、このような使い方では何か不都合があるのでしょうか?

    フォントの入っていないPCでは表示されない等?

    (Osakaにしてみた限りではWindowsでもOKでした)

    PFont font = createFont(“MS-Gothic”, 24);

    textFont(font);

    text(“あ”,50,50);

    アプレットでも表示されます。

  157. mas より:

    >masさん

    返答ありがとうございます。

    >156のコードの段階で自分は止まってしまっていたんです。

    実は、ここから先の段階に進みたかったというのが、私の願いでした。

    というのも、このコードだと、

    processingのウインドウとjavaのFrameのウインドウが別々に且、独立な挙動をしてしまう(しなければならない)というのが私の悩みでした。

    私は、ここで、二つの性質を持つ一つのウインドウを作りたかったんです。

    最近、自分の方で実現したかったことが可能になりそうかな?

    という段階に来ました。

    それと同時に、自分の今までの記述(考え方)と変わってきているので、それも踏まえてご説明します。

    まず、目標はprocessingとjavaの2つの性質を持つ1つのウインドウを作りたい

    つまり、アニメーションや描画といったprocessing独自のいい所取りをし、processingにないjavaの機能も使いたいと言うことでした。

    当初、processingでjavaをという考え方をしていたのですが、

    javaでprocessingを使うという考え方で行けば、可能になりそうだという状況になりました。

    以下に、例的なコードを記載します。

    import java.awt.CardLayout;

    import java.awt.Frame;

    import java.awt.event.WindowAdapter;

    import java.awt.event.WindowEvent;

    import processing.core.PApplet;

    public class p5Lancher {

    public static void main(String[] args) {

    MainFrame mf = new MainFrame();

    mf.setVisible(true);

    }

    }

    class P5 extends PApplet{

    Data dat;

    MainFrame mf;

    //P6 p6;

    P5(MainFrame temp){

    mf=temp;

    //p6 = new P6();

    }

    public void setup(){

    }

    public void draw(){

    ellipse(20,20,10,10);

    //p6.Pdraw();

    if(mousePressed){

    //mf.cl.next(mf);

    mf.cl.show(mf, “card1”);

    }

    }

    }

    class P6 extends PApplet{

    public void draw(){

    ellipse(100,100,50,50);

    }

    }

    class MainFrame extends Frame{

    P5 p5;

    P6 p6;

    int data;

    Data dat;

    CardLayout cl = new CardLayout(0,0);

    MainFrame(){

    super(“testMenu”);

    setLayout(cl);

    setSize(200,200);

    this.addWindowListener(new WindowAdapter(){

    public void windowClosing(WindowEvent e){

    System.exit(0);

    }

    });

    dat=new Data();

    p5 = new P5(this);

    p6 = new P6();

    p5.init();

    p6.init();

    p5.setup();

    p6.setup();

    add(“f_card”,p5);

    add(“card1”,p6);

    }

    }

    class Data{

    int data;

    Data()

    {

    }

    }

    これは、javaにおいて、processingのライブラリを外部の参照ライブラリとして読み込んで使って実現しています。

    なので、javaにprocessingを実装しているという形です。

    public static void mainのクラスとFrameを継承したクラスの2つを鉄板として、

    Frame上にパネルを置き、その上に描画するようにします。

    パネル上の挙動がprocessingになっています。

    今のところパネル1つとprocessingのクラス1つが対応し、

    CardLayoutという機能を使うことで、それらを切り替えているというようになっています。

    しかし、これならば、変数の参照や、processingの記述で書かれたクラスを複数作っても、javaのFrame上で動かすことができるのではないか?

    というのが、今の段階での結論になっています。

  158. mas より:

    〉rainbowさん

    おお。自己解決ってことですか?その方法でできるような気がします。

    頭良いですね。

    機会があったら参考にさせていただきます。

    お力になれず、すいませんです。

  159. navi より:

    はじめまして

    友達のススメで初心者でprocessingをはじめたばかりのものです。

    とりあえず色々なサイトにおいてあるソースをコピペして

    色々といじって、勉強してるのですが

    http://www.toxi.co.uk/p5/perlin/filteredClouds/



    この作品のソースを貼り付けた所

    画面に表示されなくて困ってます。

    色々いじりたくてもどこをいじれば動くのかわかりません。

    どこをどうすれば動くようになるのでしょうか?

    どなたかアドバイスの方お願いします。

  160. hirok より:

    >>165 naviさんへ

    ■変更1

    void loop() {



    void draw() {

    になりました。変更してください。

    ■変更2

    pixels[]を利用するときにはloadPixels()、利用した後にはupdatePixels()が必要になりました。pixels[index++]が含まれている二重forの

    前に

    loadPixels();

    後ろに

    updatePixels();

    を入れてください。

    コレだけで動くと思ったんだけどなぁ。w

    ■変更3

    pixels[index++]=min(nV+0x90-y/4,0xff)<<16 | min(nV+0xe0-y/2,0xff)<<8 | 0xff;



    pixels[index++]=255<<24|min(nV+0x90-y/4,0xff)<<16 | min(nV+0xe0-y/2,0xff)<<8 | 0xff;

    に変更してください。

    ====

    変更2と3の変更部分(元のコメントは邪魔なので削除)

    loadPixels();//コレを追加

    for(int y=0; y<height; y++) {

    currYOff=yoff+y*xyScale;

    for(int x=0; x<width; x++) {

    nV=(int)(cloudfilter(noise(xoff+x*xyScale, currYOff, zoff))*255);

    pixels[index++]=255<<24|min(nV+0x90-y/4,0xff)<<16 | min(nV+0xe0-y/2,0xff)<<8 | 0xff;//変更

    }

    }

    updatePixels();//コレを追加

    これでうご・・・・・・・・・うごいたー。

  161. navi より:

    >>167 hirokさんへ

    コメントありがとうございます!

    無事、動きました♪

    本当に助かりました、ありがとうございました。

  162. 【Jmyron、左右反転】

    はじめまして。

    JMyronで色検知をして、画面上に描画したオブジェクトと衝突判定をするようなものを作っています。

    そのままだと、鏡とは逆の動きになり直感的に操作できないので何とかしたいと考えています。

    image()で取得した画像をマトリクスを反転して表示することは出来るのですが、globBoxes()などで取得した座標は、元のままなのでこれらもいちいち反転処理しなくてはならず、大変だなぁと感じました。

    要は、最後の出力時に、描画を全部左右反転に出来ればいいのですが、そういうことは可能なのでしょうか?

    その他でも、もしなにか良い方法があれば教えていただけないでしょうか?

    同じようなことを感じる人は、いらっしゃるような気がするので、「俺はいつもこうしてるぞ!」など、お聞かせくださると助かります。

    よろしくお願いします。

  163. すみません、上の質問、自己解決しました。

    draw()の一番最後のところで

    int[] imgRaw = new int[width*height];

    loadPixels();

    for (int row = 0; row<height; row++)

    {

    for (int col = 0; col<width; col++)

    {

    imgRaw[(row*width)+col] = pixels[(row*width)+(width-col-1)];

    }

    }

    for(int i=0;i<width*height;i++)

    {

    pixels[i] = imgRaw[i];

    }

    updatePixels();

    などと書けば、思ったように全部反転して表示されました。

    updatePixels()やloadPixels()の理解が足りませんでした。。。

    お騒がせしましたっ!

  164. タカロット より:

    【わかる方いらっしゃいますか?】

    はじめまして!

    最近プロセシング初めました!

    さっそくですが質問です。(初歩的な質問かもしれませんが。。。↓)

    WEBカメラで映っている映像の中から指定した色(例えば黒)を検出して、

    その部分をピカピカとRGBで光らせたいのですがどうすれば実現できますか?

    カメラの映像をピクセルで取得して、そこからどう展開していっていいのかわかりません。。。

    教えてください!

  165. hirok より:

    >タカロットさん

    ピカピカと光らせるって、どんな感じなんでしょ?

    カメラが無いんでカメラのコード部分は今は書けません。

    と、雑なコードですが、黒のボールを左右に動かしてます。

    何かキーを押してる間は赤、緑、青と変わります。

    http://www.hirokazuk.com/color.txt

  166. タカロット より:

    >hirokさん

    返信ありがとうございます!

    実は初めてコミュニティというものに参加しました!

    今感動しております!!笑

    これがmixiの面白いところなんですね!!

    http://un-q.net/2007/09/actionscript3_camera_red.html

    この方はactionscriptでやられていますが、イメージとしてはこんな感じなんです。

    抽出された赤以外は黒く塗りつぶされて、さらに抽出された赤色のところが

    赤、青、緑と点滅するようにしたいのです!

  167. タカロット より:

    抽出されたところの光る感じは

    http://www.exonemo.com/rgb/indexJ.html

    みたいな感じです!

    よろしくお願いします。

  168. hirok より:

    >タカロットさん

    えと、先に挙げたプログラムで「光る感じ」というのはあってますよね?

    で、最初に挙げた条件では黒い部分を抽出色として「光る感じ」にする

    とのことでしたので条件としては満たしてると思いますが

    どこか、イメージと異なる部分がありましたか?

    p.s.黒の値か否かを判定するのに

    if(pixels[index] == color(0,0,0))

    で、ピッタリ黒かを判定することになっていますので

    近似色かどうかを判定するように変える必要があるかもしれないですね。

  169. タカロット より:

    >hirokさん

    返信ありがとうございます!そして返信遅くなってごめんなさい!

    タカロットはプロセシング始めたばっかりなので、話についていくのがやっとです↓

    光る感じはあってますが、キーをおさなくても勝手に光ってほしいのです。

    うーん、、、説明へたくそでごめんなさい↓

    最初っから説明させてください!!

    〜タカロットのやりたいことを細かく書くと〜

    壁に貼った黒いシールをWEBカメラが認識して、

    黒い部分だけピカピカと光らせたい。星みたいに。

    しかもRGBでギラギラ光る!です。

    これって結構むずかしいんですかね?

    p.s Myronのページのカラートラッキングとかかなぁと思って

    サンプルダウンロードしたんですけど動かないんですよね。。。

  170. タカロット より:

    黒い部分だけ(黒いシール部分だけ)です!笑

  171. hirok より:

    >タカロットさん

    ああ、キーを押したときだけ光る状態になるようにコードを分離しただけです。

    キー押さなくても出来るようにしたバージョン

    http://www.hirokazuk.com/color2.txt

    黒の部分は光ってそれ以外の部分は黒く塗りつぶすようにしました。(必要なければelse文を消してください)

    loadPixels()からupdatePixels()までが色判定と色変換です。

    なのでその部分を丸ごと消すと黒と灰色の丸が左右に動くだけの状態になります。

    さて、コレでまた少し近づきました?

  172. タカロット より:

    うわぁすごい!!かなり近づきました!!

    丁寧な解説と夜遅くにすいませんm(__)m

    ありがとうございます!!

    さっそくカメラのコードと組み合わせてやってみます!!

    例えばカメラから読み取った黒い部分にこれを流す場合は

    差分法を使うことになるのでしょうか?それともRGB値の範囲を指定してここに流す!っていうやり方があるんですかね?

    Macromedia DirectorだとRGB値を指定してRGB値の暗さで黒を認識させるようにしていたのですが。

  173. hirok より:

    んー、カメラ無いからちょっと試せないなぁ

    色の判定部分をいじると良いんだと思うよ

    if(img[index] == color(0,0,0)){

    コレだとかなり無理があるよね

  174. タカロット より:

    なるほど。

    必ずしもカメラを使って色を抽出したいからといって差分法にはしないんですね!

    判定部分をいじることで解決も可能ということか!!

    勉強になりました!

    またわからないことが出てきたら相談にのってください!

  175. hirok より:

    動くか分からんけど、それでもいいかなぁ

    JMyronだっけ

    http://www.hirokazuk.com/color4_camera.txt

    コンパイルも通してないので、通らなかったら無しで^^;

    明るさで判定してみた

    if(brightness(img[index]) < 50)

    だから、黒かどうかは判定して無い

    そこの50とかの値は自分でいじって確かめてみて

    判定方法は・・・どうしようか。

    デジタル画像処理の資料は書庫(段ボール箱)にあった気がするw

  176. タカロット より:

    Myronのサンプルのtrackingというファイルが起動しないんですが、プログラムの変更点とかあるんですか?

  177. hirok より:

    beginShape(LINE_LOOP);

    をbeginShape()にして動かしてみてください。たぶん・・・

  178. タカロット より:

    返信ありがとうございます!!

    今色で判別できるように奮闘中です。笑

    やはりif(img[index] == color(0,0,0)){

    の部分をいじるとどうしてもぴったりのピクセルカラーしか

    読み込まないので、

    近似値を判別するコードを打ち込まなければ無理みたいです!!

  179. hirok より:

    if( img[index] ) < color( 10,10,10 ) ){

    みたいなのではだめ?

    それ以上厳密にやろうとするとFFTやらと面倒なことにもなるので。

    なるべく簡単にできる方法が良いと思う。

    逆にWebCamにフィルター貼り付けて、赤外線LEDの光を読み込むようにすると黒か白かの世界になるから、楽かも? 用途には合わないのかも知れないけど。

  180. hirok より:

    >rozieさん

    いつもブログ拝見してます^^

    if(img[index] < color( 10,10,10 ) ){

    のコードって使えるんでしょうか?

    colorはA,R,G,Bが8ビットづつ繋がっているもののような気がしますので

    ばらさないと比較が出来ないような気がするの「ですが、私の思い違いでしょうか。

  181. qCtth より:

    蛇足ながらhirokさんの補足をば。(書いてる事が被った)

    colorは8×4の32bitの値になって実質的には32bit unsigned intと同様に扱われているはずなので

     if(img[index] < color( 10,10,10 ) )

    は無理じゃないかと思います。例えば

     println(color(10, 1, 11) < color(10, 9, 9));

    は、11 > 9なのでfalseになりそうですが、実際はtrueを表示します。また、

     int i = color(1, 1, 1, 1);

     println(i);

    これは16843009を表示します。= 2^0 + 2^(8*1) + 2^(8*2) + 2^(8*3) ですね。

     if( img[index] ) < color( 10,10,10 ) )

    で意図している事は恐らく

     if(red(img[index]) < 10 && green(img[index]) && blue(img[index]))

    だと思います。で、red()やgreen()、blue()を用いるより

     if((img[index] >> 16 & 0xff) < 10 && (img[index] >> 8 & 0xff) < 10 && (img[index] & 0xff) < 10)

    の方が効果的です。これは32bitの値になっていることを用いた方法です。9bit〜16bit、17it〜24bit、25bit〜32bitを取り出して10と比較しています。

    color()はRGBAのようにアルファ値を最後に指定していますが、データ的にはARGBでアルファ値が先頭8bitに格納されています。

  182. hirok より:

    >ξさん

    おおー、それですそれです、前の質問のときにやったやつだ

    >タカロットさんへ

    http://www.hirokazuk.com/color5_camera.txt

    もう少し判定部分がマシになるようにしてみた。

    ただでさえ汚いソースが・・・w

    とりあえず実行して、調整して試してみてくれ

  183. hirok より:

    color( 10,10,10 )を「print( color( 10, 10, 10 ) );」

    として表示してやると・・・

    -16119286

    って、確かにこれじゃダメですね。

    確かめてから書けば良かった。

    仰るとおりばらさないとダメですね。

    color c = color( 10,10,10 ); //比較用のしきい値カラー

    if( ( img[index] < red(c) ) || ( img[index] < green(c) ) || ( img[index] < blue(c)) ){

    print( “true” );

    } else {

    print( “false” );

    }

    このような感じで。失礼いたしましたー。

  184. hirok より:

    うあ、書いている間にもっと良いサンプルがキタ。

    ショック(笑

    しかも何でorで繋いでるんだわたしワ。

  185. hirok より:

    >タカロットさんへ

    カラーピッカーを追加しました。クリックするとRGBの値がテキストエリアに出ます。

    http://www.hirokazuk.com/color6_camera.txt

  186. タカロット より:

    hirokさん>rozieさん>ξさん>

    みなさんたくさんの返信ありがとうございます!!

    まだ初心者なのでいろいろとわからないことが山積みですが、

    みなさんが教えてくれたことを一つ一つ紐解いて納得しながら

    プロセシングを習得していきたいと思います!!

    hirokさんからいただいたサンプルで起動したら細かい設定までできるように

    なりました!このコードを一つ一つ納得しながらプロセシングを学んでいきます!!

    ちなみに、このコードってレベルでいうと

    どれくらいのレベルになるんですかね?

    難易度的には簡単な方なんですか?

  187. hirok より:

    >タカロットさんへ

    カラーピッカー使ってるときに点滅してるとその部分の元の色がわからないので

    Cボタン押すと点滅がOFFになるようにした。

    http://www.hirokazuk.com/color7_camera.txt

    と、webカメラ借りてきた。(深夜なのにw)

    明るさでRGBはずいぶんと変わるみたいですね、RGBに明るさによる許容範囲判定も入れた方がいいのかなぁ。

  188. タカロット より:

    >ちなみに、このコードってレベルでいうとどれくらいのレベルになるんですかね?

    うーん・・・初級?(笑

    なにしろproce55ingじゃなくても動いてしまいそうなコードだから。

    あくまで値と値の比較ですからネー。

    ゆっくりじっくりやってゆけば良いのだと思いますよー。

  189. タカロット より:

    ありがとうございます!!

    マジかー(笑

    がんばらないと(笑

  190. hirok より:

    rozieさんのいうとおりだと思います。

    それほど複雑な構造では無いと思いますし

    結果も逐次変数に入れましたので

    十分目で追えるコードかと思う。

    p.s.カウンタccとswitchのところもっといい書き方無いかな?

  191. qCtth より:

    192の訂正:

    colorは32bit unsigned intじゃなくて

     println(color(255, 255, 255, 127));

     println(color(0, 0, 0, 128));

    32bitのsigned intですね。

    というか、まあ、本来ならsignedかunsignedかは大した問題では無いわけですが…

     switch (cc){

    のところは0〜2という前提で無理矢理書くなら

     pixels[index] = color(max(0, 1-cc)*255, cc*(2-cc)*255, max(0, cc-1)*255);

    とか書けますが、簡単なのは

     color[] colors = {color(255, 0, 0), color(0, 255, 0), color(0, 0, 255)};

    を作っておいて、

     pixels[index]=colors[cc];

    とやるのが一番シンプルではないかと。

  192. 匿名 より:

    ライブラリoscP5を利用して他のアプリと連携しようと思っています。

    タイミングを同期するためにOscBundleを使いたいのですが、サンプルのoscP5bundleの

    myBundle.now()で取得できる現在のタイム値と、OscMessageの.timetag()の値が全く違います。

    どうも受信時のOSC Time Tagデータの扱い方が違うようなのですが、どうすれば.now()と比較できる同じ単位での値を取得できるでしょうか。

    http://opensoundcontrol.org/node/3/#timetags

    ここによると、oscP5では64bitのlongとして受けていますが、実際には別の意味の32bit intが2つ(?)のようです。

    Time tags are represented by a 64 bit fixed point number. The first 32 bits specify the number of seconds since midnight on January 1, 1900, and the last 32 bits specify fractional parts of a second to a precision of about 200 picoseconds. This is the representation used by Internet NTP timestamps.The time tag value consisting of 63 zero bits followed by a one in the least signifigant bit is a special case meaning “immediately.”

  193. サダム より:

    >> 204 imoutoidさん

    oscP5はちらっと見たことがあるのですが、タイミング同期したことはありません。

    なので、とりあえずNTPタイムスタンプの値の扱い方を。

    NTPタイムスタンプというのは、1900年元旦からの時間を表記するもので、

    上位32ビットは秒数を、下位32ビットは約200ピコ秒の精度で小数点以下を表しています。

    (32ビットの秒数なので、2036年にはオーバーフローしてしまうため、最上位ビットが1のときは、2036年元旦からの時間になるようです)

    たとえば秒を取得したいときは、下位32ビットを切り捨てる、つまり2の32乗で割れば良いので、

    NTPタイムスタンプの値(long)をntpとすると、

    long sec = ntp / 4294967296

    となります。

    で、ミリ秒を取りたいときは、1000倍すればミリ秒なので、

    long msec = (long)(ntp / 4294967.296)

    ですね。

    まータイミング同期修正ですし、わざわざ0.296を入れて精度上げるより切り捨てちゃった方が奇麗ですが。(4294967で割る)

    ミリ秒で比較して許せる範囲以上ズレてたらフラグ立てれば何とかなるんじゃないかと思います。

    適当ですいません。

  194. サダム より:

    >> 204 imoutoidさん

    あ、すいません、書き忘れです・・・。

    感覚的に分かりやすく説明するために2の32乗で割るとしましたが、

    もっと奇麗にコーディングしたいなら、

    long msec = (ntp >> 32) * 1000

    で一発です。(カッコをお忘れなきよう)

  195. 匿名 より:

    ありがとうございます。

    書き忘れていたのですが、実は下位ビットを切り捨てる為に>> 32や>>> 32も試していましたが、以下のような数値になるんです。

    -3804456623058090794 // println(String.valueOf(oscMsg.timetag()))

    -885794085 // println(String.valueOf(oscMsg.timetag() >> 32))

    3409173211 // println(String.valueOf(oscMsg.timetag() >>> 32))

    1200184411702 // println(String.valueOf(OscBundle.now()))

    (timetag()は送信時間、.now()は受信時間なので若干ズレはあると思います)

    .now()は間違いなくNTPのmsなのですが、他の数値が何を表しているのか分からないんです。

    上位32bitは秒単位の筈なので1000倍しても0が3つ付くだけで、ms単位で取得するには下位ビットも考慮しなければいけませんよね。

    必ずしもbundleのタイムタグが、フレーム更新時間以下の固定レイテンシーで順番に送信されるとは限らないシステムなので、(0.01秒後と2.32秒後に実行せよ、とかがありうる)秒単位では困るんです・・・。

  196. サダム より:

    なんだか修正しすぎて訳わからなくなったんでまとめます。(板よごしてゴメンなさい・・・)

    >> 208 imoutoidさん

    うっかりしてました。寝惚けてたな〜。

    やっぱり4294967で割ってください。(こちらなら正確に出ます)

    詳しく説明すると、元のデータは64ビットあるんだから、ビットをシフトしてデータを消さずに2の32乗で割れば、元のデータはちゃんと残ってるわけです。そこに1000を掛ければ、ミリ秒は出てきます。

    ntp / 4294967296 * 1000も一度小数点以下を切ったあとに1000倍するので、やっぱり0が三つ並んじゃいます。ntp / 4294967はOK。(ただしピコ秒以下は切り捨て)

    NTPタイムスタンプに関するより詳しい説明は206参照お願いします。

    oscP5のAPIドキュメントを少し眺めました。

    http://www.sojamo.de/libraries/oscP5/documentation/

    now()はlong型ですが、timetag()はbyte[]を受け取ります。

    byte配列ってことは、{0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1・・・}みたいな配列ですね。

    String.valueOf()はbyte配列をサポートしていないので、そんな結果が出たんだと思います。

    普通にlong型を見たいなら、timetag()を呼び出す必要はなく、timetagの変数を見てあげればOKです。

    oscP5を継承していたらoscMsg.timatagで見れます。

    で、あくまでtimetag()とnow()の比較をしたい場合は、JavaならばBitConverterクラスで変換してやるのが常套ですが、幸いnetP5パッケージにBytesクラスというユーティリティクラスが用意されていました。

    Bytes.toLong(oscMsg.timetag());

    ただ、これは内部的には一度long型の変数timetagをbyte配列にしたものを、さらにlong型に戻すという不思議なことをしてるので、あくまでこういうこともできるという程度に流してください。

    値の比較が目的なら、たとえば、10msec以上のズレを検知、という場合は10msecをNTPタイムスタンプの値(上位32ビットが秒で下位32ビットが少数点以下)にすると、

    10 * 0.001 * 2^32 = 42949672.96

    となります。

    timetagとnow()を比較し、42949672以上の遅延があれば修正する、という方法もあります。

    ただ、タイミング同期が目的なら、もう値の比較も必要ないと思います。

    たとえば、100msごとに何か実行したい場合は、

    [SOURCE]———————————-

    float counter = 0; // カウンタ

    int lag = 0; // 修正値

    void setup(){

    frameRate(50); // 毎秒50フレームに設定

    }

    void draw(){

     counter += 85899345.92; // (1 / 50) * 4294967296 秒間50フレームをNTPタイムスタンプに変換

     if(counter > 429496729.6 – lag){ // 100msから修正値を引いた時間以上経過したとき

      doSomething();

      counter = 0; // カウンタをリセット

      lag = 0; // 修正値をリセット

     }

    }

    ・・・

    void oscEvent(OscMessage theOscMessage) {

     lag += OscBundle.now() – theOscMessage.timetag; // 遅延時間を修正値に加える

    }

    [/SOURCE]—————————–

    NTPタイムスタンプとかミリ秒とか考える必要もなく、ズレを修正値に加える、というだけで約200ピコ秒の精度を持った完全なタイミング同期が実現できちゃいますよ。

    (もちろんこの場合フレーム自体呼び出されるのが20ミリ秒毎なので、そこまで精度持たせる意味はありませんが)

  197. 匿名 より:

    受信OSCメッセージはサンプルoscP5bundle通り

    void oscEvent(OscMessage oscMsg){ … }

    で受けています。OscMessageのインスタンスなので.timetag()はlong型の筈なのですが・・・

    探してみるとOscBundleの.timetag()はbyte[]型でした。しかし

    the OscBundle timetag is supported for sending but not for receiving yet.

    とあります。

    OscBundleは送信専用で、受信時には複数のOscMessageとして返されるようです。

    もし.timetag()がbyte[]でString.valueOf()が対応していない場合、コンパイル時にエラーが出るのではないでしょうか?

    Bytes.toLong(oscMsg.timetag());は

    Semantic Error: No applicable overload for a method with signature “toLong(long)” was found in type “netP5.Bytes”. Perhaps you wanted the overloaded version “long toLong(byte[] $1);” instead?

    と出ました。

    教えてくださったコードはすいませんちょっと理解できませんでした。

    timetag()の値がlong型で正しいと考えると、1200184411702 – -3804456623058090794 等を実行する事になっていませんか?やはり単位が分からないと仕方が無いように思います。

    上の比較等に合わせて、lag = OscBundle.now()*4294967296 – theOscMessage.timetag(); と解釈していいんでしょうか。

    値が大きいのでlagはlong型、counterのfloatはdouble等に変えた方がいいですよね。そのままだとどうやらオーバーフローを起こしてしまっています。

    そもそも4294967296は値が大きいのでリテラルとして使用できないようです。

  198. サダム より:

    ちゃんとソースに触れるべきでしたね、すいません・・・。

    いくつか思い違いをしてました。oscBundle.now()がNTPタイムスタンプを吐くのかと思ったら、setTimetag()でNTPタイムスタンプに変換してるんですね。

    なるほど、これは明らかなバグですね。作者に報告するのが良いかもしれません。ちゃんと値を見るべきでした。

    桁あふれ(オーバーフロー)が起こってますね。

    OscBundleクラスのsetTimetag()に問題がありました。

    [SOURCE]

    public void setTimetag(long l){

     long l1 = l / 1000L + 2208988800L;

     long l2 = (l % 1000L << 32) / 1000L;

     timetag = l1 << 32 | l2;

    }

    [/SOURCE]

    OscBundleクラスを逆コンパイラして見てみたら、上記のようになっていたんですが、プログラムにおける64bitの整数というのは、63bitの数しか扱えません。最上位ビットがプラス/マイナスを表すために用いられるからです。intも31ビットまでしか扱えません。

    つまり、>> 206で僕が書いた2036年に起こるはずのオーバーフローが2003年ぐらいに起きてしまうことになります。

    でも、2003年って言ったらP5のアルファ版が出る前ですし、エラーチェックぐらいしてそうだけどなぁ・・・。特に秒数などを扱うときは、桁あふれは要注意すべきなんですが・・・。

    ちなみに、デカい数字を扱うときのために、JavaではBigIntegerクラスというのが用意されています。興味があればぜひ調べてみてください。

    オーバーフローを解消するためには、OscBundleクラスを継承する子クラスを作って、そこでsetTimeTag()をオーバーライドしてやるしかありません。

    [SOURCE]

    public class MyBundle extends OscBundle{

     public void setTimetag(long l){ // OscBundleクラスからオーバーライド

      timetag = l;

     }

    }

    [/SOURCE]

    この子クラスを作って、OscBundleの代わりにMyBundleのインスタンスを作ってあげてください。(P5のエディタは触ったことないので、もしかしたらpublic修飾子を付けたらダメとか、若干違いがあるかもしれません)

    これなら、NTPタイムスタンプなんてわずらわしいもの使わずに普通にnow()が送れます。

    どちらにせよ、受信時の値から送信時の値を引いてあげたものが遅延時間になります。

    むしろoscを使うのなら、Stringの受け渡しはできるのだから、String.valueOf(myBundle.now())でいったん文字列にして時刻を送ってあげて、受信側した値をLong.parseLong(受信した文字列)でlong型に変換し、now()を比較するのも手かもしれません。

  199. 匿名 より:

    はじめまして。のびといいます。

    かなりの初心者です。

    SAVE機能についてお聞きしたいのですが、

    たとえば、、、

    size(200, 200);

    background(255);

    point(random(200), random(200));

    save(“point.jpg”);

    、、、を何度も実行した場合、最後に実行した際のアプレット画面がスケッチフォルダに保存されますよね。

    この書き方だと、最後の一回より前の実行画面は上書きされて消えてしまうと思うのですが、「すべての過去の実行画面も同じフォルダ内に保存しつつ、しかしsaveの後ろの括弧内ファイル名を変えないでもよい」、、、という方法はないのでしょうか?

    実行一回ごとにいろいろ数値をいじりながら試しているので、for文の中にsave(〜)を入れるという方法は、すこし違うのです。

    毎回save(“point_0001.jpg”)の数字を増やしていく以外に方法があるのでしたらご教授よろしくお願いいたします。

  200. 匿名 より:

    すみません、上記最後の「数字を増やす」というのは「毎回手打ちで」、、、ということです。今は毎回手動で打っていますが、この作業を省ければとても楽になるもので、、、。

    おそらく初歩的なことだと思うのですが、よろしくお願いします。

  201. hirok より:

    >Nakagawa Takuma/nobi さん

    ちょっとよく意味が分からなかったけど

    適当に書いてみた。

    例えばこういうのですか?

    http://www.hirokazuk.com/stringfilename.txt

  202. タカロット より:

    >Nakagawa Takuma/nobi さん

    色々手抜きですがこんなんでどうでしょうかね。

    多分意図したモノはこういうモノではないかと。

    save()で保存されるパスはsketchと同様の場所なので、sketchのフォルダにあるファイルの数でファイル名を決定するようにしました。

    本来は画像だけを見るべきなのでしょうが面倒だったので。

    import java.io.File;

    void setup() {

    size( 100, 100 );

    line(20, 20, 80, 80);

    File dir = new File(sketchPath);

    File[] files = dir.listFiles();

    String imageName = “point_” + files.length + “.jpg”;

    save( imageName );

    }

  203. タカロット より:

    今ここの→http://db-db.com/nudemengarden/

    Nudemen Gardenというのを勉強中。

    サンプルダウンロードできるんですが、起動しないんです。

    これは古いプロセシングでコーディングされているということですよね?

    どこのコードが変わってくるかわかる方いますか?

  204. hirok より:

    >タカロットさん

    ちょっと開いてみましたが相当あれこれ違います。

    起動しようとしたときにproce55ingのサイトが開いたりすると思いますがそこに変更点など書かれていますので参考にしてみてはいかがでしょう。

    BImage→PImageやら。

    兎に角大量に直さないと動かないと思います。

  205. hirok より:

    >タカロットさんへ

    改造は出来ましたが、どうやって渡しましょうか

  206. タカロット より:

    うーん。。。

    まだ自分のレベルではこのプログラムは解読できませぬ。。。

    難しいので少しずつ自分で解読できるように勉強します!

    みなさん返信ありがとうございます!

  207. hirok より:

    http://www.hirokazuk.com/nudemengarden.EXE

    とりあえず差分ファイル作ってみた

    nudemengarden.pde

    と同じディレクトリに入れて実行すると更新されます。

    dataディレクトリに画面サイズと同じ大きさのダミー画像”dummy.jpg”が必要です。ペイントソフトなどで作ってください。

    なるべくもとのソースを変更しないように

    やってみましたが、要らない部分が存在してるかもしれません。

    ちょと疲れたw。

  208. 匿名 より:

    >hyrokさん

    >miyaさん

    回答ありがとうございます!

    拙い説明で申し訳ありませんでした。

    miyaさんの書いてくれたものが、ドンピシャで求めていたものでした。

    そして、恥ずかしながらhyrokさんの書いてくれたものをどのように利用するのかが、コメントで解説まで入れて下さっているのにわかりませんでした。レベルが低くてすみません、、、。pdeファイルを作成する前に、別にメモ帳などで作成しておいておく、ということでしょうか?

    保存しておいて、また理解できそうになったときに勉強材料にさせていただきます。

    今回の件は解決いたしました、hyrokさんmiyaさん、ありがとうございました。

  209. hirok より:

    >Nakagawa Takuma/nobi さん

    基本的にはmiyaさんのと同じです。

    miyaさんは、ディレクトリのファイル数で判断しているのに対して

    私のは、テキストファイルに書かれている値で判断しているだけです。

    毎回、テキストファイルから一番目だけ読み出して数値に変換して、

    stop(){}の中でその数値を1つ増やしてまたテキストファイルに保存してます。

    stop(){}というのは、プログラムの終了時に呼ばれるもので

    mousePressed(){}等と同じようなものです。

    なのでstopをmousePressed()に変えてもいいでしょう。

    (その際にはsuper.stop();は消してください)

  210. ハヤッ より:

    こんにちは、はじめまして。リコと申します。

    アプレットのweb公開についてわからないことがあって書き込みします。

    exportしたappletのファイルをサーバにアップロードしたところ動きませんでした。

    こんな状態です。

    http://www.nomtam.jp/applet/

    本当なら、画像のような写真のコラージュが写るはずです。アップロードしない状態で実行しているときはきちんと動いています。

    以前に何回かアップロードしたときは動いたのですが、なぜか今回だけ動きません。ブラウザ側での設定もjava有効になるようにしています。

    今回xmlでパースをしているのですが、なにかその設定などがあるのでしょうか?

    ソースはこちらです。

    http://www.nomtam.jp/applet/tabaco.pde

    どなたかわかる方いらっしゃいましたら教えてください。よろしくお願いします。

  211. ieopoie より:

    >リコさん

    イメージをロードされているようですが、tabaco_04.gifなどの画像ファイルは設置されてますか?

  212. イヌッチ より:

    XMLElementが、というか、アプレットの通信一般に、ドメインをまたぐ通信が出来ないことが原因ではないでしょうか。

    解決策としては、自サイトに別ドメインと通信するためのcgiを置く方法か、アプレットを署名付きにする方法があると思います。

  213. hirok より:

    イヌッチ さんのご指摘の通り、

    XMLElementはdataディレクトリの中に入っているXMLファイルを読み込むことしかできないようです。

    (Javaのコンソールを見ればどのようなエラーが起きているか分かります。)

    http://processing.org/reference/libraries/xml/XMLElement.html

    のExamplesに書いてありますね。

    そこでdataディレクトリにxmlファイルを置いてphpで書き換えることにしました。

    –まずは下準備から–

    アップレットをアップしたフォルダにdataフォルダをつくり

    http://www.proce55ing.info/samples/XMLtest/data/xml.txt

    をxml.phpにファイル名を変更してアップ

    空のファイルdata.xmlをdataフォルダにアップロード、パーミッションを666に変更します。

    –プログラムの修正–

    xml = new XMLElement(this, “http://weather.livedoor.com/forecast/rss/13/63.xml“);

    のところを

    loadStrings(“http://www.proce55ing.info/samples/XMLtest/data/xml.php“);

    xml = new XMLElement(this, “data.xml”);

    に置き換えます。

    以上です。

    画像がないので黒と灰色のいgifで置き換えました。

    http://www.proce55ing.info/samples/XMLtest/

  214. hirok より:

    読込先をパラメータ指定できるようなphpを作成しました。

    http://www.proce55ing.info/samples/XMLtest/data/xml2.txt

    のtxtをphpに変えるとXMLの読込先と保存ファイル名を指定できます。

    xml2.php?path=[url]&save=[filename]



    http://www.proce55ing.info/samples/XMLtest/data/xml2.php?path=http://weather.livedoor.com/forecast/rss/13/63.xml&save=data.xml

    ※保存ファイルはあらかじめ存在してパーミッションが666である必要があります。

    あとは

    loadStrings(“http://www.proce55ing.info/samples/XMLtest/data/xml.php“);

    のURLを例のように書き換えれば良い と。

  215. hirok より:

    >空のファイルdata.xmlをdataフォルダにアップロード、パーミッションを666に変更します。

    >※保存ファイルはあらかじめ存在してパーミッションが666である必要があります。

    ファイルが存在している必要があるって書いたんだけど

    そのディレクトリのパーミッションが707,757,777にすれば、

    新たにファイルが作れるってことみたいだ。

  216. ハヤッ より:

    みなさま、親切なご返答ありがとうございます!とってもうれしいです。

    >hirokさん

    ほんとに丁寧な解説ありがとうございます!

    無事動くようになりました。

    http://www.nomtam.jp/applet/

    ちゃんとネットの仕組みをわかってないといけないようですね;

    phpも追々勉強していきたいと思います。ありがとうございました。

  217. イヌッチ より:

    ネットの仕組みは、最初はなかなか難しいですよね。

    >hirokさん、リコさん

    ファイルに落とさず、スクリプトから直接吐くともう少しシンプルになります。

    phpはよく知らないので、慣れてるperlで。

    — getxml.cgi —

    #!/usr/local/bin/perl

    use LWP::Simple;

    $content = get(“http://weather.livedoor.com/forecast/rss/13/63.xml“);

    print “Content-Type: application/xml; charset=UTF-8\n\n”;

    print $content;

    — getxml.cgi —

    これだけのファイルを、サーバーのcgiが実行できるディレクトリにおいて、実行権限をつけると、

    xml = new XMLElement(this, “getxml.cgi”);

    とやると、http://weather.livedoor.com/forecast/rss/13/63.xml の中身を取得できます。

    サーバーに、LWPがインストールされている必要がありますが、

    たいていのレンタルサーバーなら大丈夫じゃないかなあ。

    ダメだったらコードは少し長くなりますが、別の方法があります。

    cgiのパラメータでアドレス指定できるようにしてもいいけど、

    悪いことの踏み台にされるのがこわいので、取得先ごとにcgiファイルを作るようにしてます。

  218. hirok より:

    ああ、そうか .cgi で表示させれば良いんだった(;´▽`A“

    作り直したが、イヌッチさんのあるから良いよね。

    PHPもPerlもやったことなかったが、どちらも入出力系はごちゃごちゃしてるんだな。

  219. ハヤッ より:

    PHPはファイルを入力してそのまま出力するだけなら1行で書けますよ。

    普通に書いても2行。

  220. ハヤッ より:

    みなさん、丁寧な解説、本当にありがとうございます!

    少しずつですが、webの仕組みがわかりそうなきが…

    さて、また質問で申し訳ないのですが…

    最初うまくいっていたのですが、いじっていると

    processing.xml.XMLParseException: XML Parse Exception during parsing of the XML definition at line 1: Expected: <

    というエラーがでてしまい、直らなくなってしまいました;

    ブラウザのほうでは

    XML パースエラー: 要素が見つかりません。

    URL: http://nomtam.jp/tktk/senju/data/data.xml

    行番号: 1, 列番号: 1:

    と出ています。

    ソースや属性変更などチェックしているのですがどうもわかりません…;;

    教えていただけると助かります。よろしくお願いします。

  221. hirok より:

    XMLがおかしいデス。

    データサイズが0byteとか。なってしまうのですが。

  222. hirok より:

    ああ、分かった

    processingのpdeファイルがおいてあるdataフォルダの中に

    data.xmlを突っ込まない

    getxml.cgiも突っ込まない

    xml.phpも突っ込まない

    以上

  223. hirok より:

    ほとんどの項目は当たり前だと思いますが、後から見る人のためのログとして。

    ・p5ではエクスポートするときにdataフォルダにあるものをjarファイル(エクスポートしたやつ)の中に格納するようになってる。

    ・アップロードするときにサーバにdataディレクトリを作成して、そこにファイルを入れるとjarファイルの中にデータがなくてもそこから読み出してくれる。

    ・jarファイルの中にファイルがあって、dataディレクトリにもファイルがあった場合、p5はjarファイルの方を優先する(かも知れない)。

    ・jarファイルの中に入れたファイルは書き換えができない。

    ・サーバ上で実行したり書き換えたりする可能性のあるファイルをdataフォルダに入れてエクスポートしない。

  224. イヌッチ より:

    > processing.xml.XMLParseException: XML Parse Exception during parsing of the XML definition at line 1: Expected: <

    > というエラーがでてしまい、直らなくなってしまいました;

    というのが、ローカルでの現象かサーバにアップロードしたときのJavaConsoleでの出力かわからないのですが、perlとかphpとかのスクリプトを使ったプログラムを書くときの注意点を一つ。

    問題点:

     ローカルの環境では、PCでWEBサーバを立てないとcgiは動きません。

     Processingのソースコード内でcgiのパスを相対パスで書いていると、ローカル環境では

     cgiを実行せずにcgiのスクリプトの中身をそのまま読んでしまいます。

     また、cgiで生成されるはずのファイルも生成されません(または更新されない)。

     サーバにアップロードするとcgiは実行できますが、同じソースでローカルとサーバで

     動作が違うのでデバッグしにくいです。

    解決策:

     Processingでは、ローカル環境ではどのサーバへもアクセスできるので、cgi関係の

     ファイル(cgiの本体、cgiで生成されるファイル)はあらかじめサーバへアップロードして

     おいて、Processingのソースコード内でそれらのファイルを、http://で始まるURLの

     フルパスで記述すると、cgiの実行ができるようになります。

     ローカルとサーバでソースが共通になるのでProcessing側のデバッグもやりやすく

     なります。

    ・・・書いているうちに、ものすごくあたりまえのことを書いている気がしてきましたが、

    もしこのあたりでつまづいていたらという事で。。。

  225. hirok より:

    Processing自体に簡易Webサーバ機能があるといいな

    ついでにFTPクライアントも付いて、自動UP、実行してくれると・・・

    当分なさそうですね。

  226. ハヤッ より:

    みなさまありがとうございますぴかぴか(新しい)

    全然わかっていなくてごめんなさい;

    webのことすこしづつですが勉強して行こうと思います〜。

    ほんとうにありがとうございました。

  227. yN より:

    はじめまして。

    昨日からprocessing始めた初心者なんです。

    よろしくお願いします。

    標準のIDE使わずにeclipseを使っています。

    その際に、processingではfloat型が多用されていますが、どうも、そこでエラーが出るので(赤い下の波線)double型で指定して、(float)でキャストしています。

    さすがに、ちょっと面倒に感じているのですが、何か良い方法はないでしょうか?

    最初に、『ここに出てくるクラス中のdouble型はすべてfloat型とみなす』みたいな設定ができるとか、

    そもそも、eclipse上の設定が変だとか、初心者な質問でスイマセン。

  228. NatcH より:

    >>253 yNさん

    processingで使うものは最初からfloat型で宣言しておくのが良いかと思いますが、

    例えば「0.3」は「0.3f」とすればfloatとして使えますよ。

    doubleを使う理由があるのでしたら、使うメソッドをdoubleが使えるように

    オーバーロードしてしまうのも手かと思います。

  229. yN より:

    >>254 NatcH

    なるほど。

    0.3なら0.3fでキャストできるんですね。

    double型でないといけないわけではなく、float型で宣言したいんですが、

    eclipseの人が赤いマーク出して、コンパイルしてくれないのです。

    0.3入れると、float型じゃなくてdouble型が入ってるよ!

    というエラーが出て。

    でも、いったんそれでやってみます!ありがとうございました!

    オーバーロードはまだあんまり使ったことないので、これからやってみるかもしれません、助言助かりました!

  230. yN より:

    eclipseは個人的にあまりお薦めではないなぁ。

    プログラムを組む能力が育ちづらい環境だと思いますよ・・・。

    多分Javaをいじる人の内の何割かは賛同してくれるはずです。

  231. yN より:

    >>256 miya6611さん

    確かに、いろいろと覚えないです。

    でも、便利さを覚えてしまったらどうも抜けられません。

    逸れてしまいますが、仕事でFlexBuilder(これもeclipseですね)使ってるので、

    そういうことも影響しているのかもしれません。。。

    コードヒントもあんまり当てにならないので、もうちょっと慣れたら標準のIDE使ってみることにします!

    ありがとうございます!

  232. ちい より:

    質問です。

    いま大学の課題で動く映像を作ってるんですが、

    点がある円周上を回っていくようにしたいです。

    アナログ時計のような動画をつくろうとしてます。

    なにかヒントが有りましたら教えてください。

    おねがいします。

  233. ちい より:

    rotateとtranslate。

    ですね。

    三角関数つかって自前で計算してもいいんですけど。

  234. ちい より:

    rotate()のなかのPIって何を表してるんですか?

  235. いけの より:

    π.近頃では約3の.

    ラジアン単位って学校で習うんでしたっけ?

    半径1の円周は2πから,360度を2*PIってことにして,

    半円の周長はπなんで,180度ならPI

    90度ならPI/2.0

    45度ならPI/4.0

    みたいな.

    知ってたらすみません.

  236. ちい より:

    ありがとうございます。

    まだぜんぜんできないけど、もうすこしがんばります。

    これ動かすにはどうすればいいでしょうか?

    自動的にずっと動かしたいんですが。

  237. ちい より:

    draw(){

    ブロックの中にかけばずっと動きますよ。

    proce55ingの本なりチュートリアルなりやることをお薦めします。

    角度はradians()を使えば簡単に。

    http://processing.org/reference/radians_.html

    rotate(radians(45));

    の様に。

    先に予想して書いちゃいますが軌跡を残したくないならbackground()を使います。

    http://processing.org/reference/background_.html

  238. ちい より:

    rotate(radians(45));

    ではなく

    rotate(PI*radians(45));

    かも。

    あまり回転させないからどっちか忘れました。

    試してみてください。

  239. ちい より:

    こんなかんじにしてみたんですけど

    うごきませんでした。

    なぜでしょう?

    void setup(){

    size(550,550);

    colorMode(HSB,100);

    background(100);

    noStroke();

    }

    void draw(){

    fill(0,100,100);

    translate(width/2, height/2);

    rotate(PI*radians(45));

    ellipse(0,-240,10,10);

    }

  240. qCtth より:

    >rotate(PI*radians(45));

    これの中身radians(45)は定数。ついでにradians(45)の時点でPI/8.のはずなのでraidansにかかってるPIは要りません。

    で、動かないのは定数だから当然で、中に描画毎に動く変数を入れましょう。

    ex.

    int i = 0;

    void setup(){

    size(550,550);

    colorMode(HSB,100);

    fill(0,100,100);

    noStroke();

    }

    void draw(){

    background(100);

    translate(width/2, height/2);

    rotate(PI*radians(i));

    ellipse(0,-240,10,10);

    i++;

    }

    等々。以前との違いとか新出語彙の意味は調べましょうー。

  241. ちい より:

    void setup(){

    size(550,550);

    colorMode(HSB,100);

    background(100);

    noStroke();

    frameRate(15);

    }

    int i=0;

    void draw(){

    background(100);

    fill(0,100,100);

    translate(width/2, height/2);

    rotate(PI/40*radians(i));

    ellipse(0,-240,10,10);

    rotate(PI/5*radians(i));

    ellipse(0,-210,10,10);

    rotate(3*PI*radians(i));

    ellipse(0,-180,10,10);

    i++;

    }

    うごきましたっ。

    ありがとうございました。

  242. ちい より:

    void setup(){

    size(550,550);

    colorMode(HSB,100);

    background(100);

    frameRate(15);

    }

    int i=0;

    void draw(){

    background(100);

    stroke(0,100,100);

    translate(width/2, height/2);

    rotate(PI/40*radians(i));

    point(0,-240);

    rotate(PI/5*radians(i));

    point(0,-210);

    rotate(3*PI*radians(i));

    point(0,-180);

    i++;

    }

    この三つの点をつないで動く三角形ってできますか?

  243. qCtth より:

    rotate使ってるとめんどくさいですね。

    便利な物(rotateとか)を使うのが悪いとは言いませんが、ちゃんと基本的/原始的な方法も知っていた方が良いと思います。

    ということで、rotateについてもう少し調べられると良いと思います。

  244. ハヤッ より:

    こんにちは。どう解決すればいいかわからないエラーがでてしまったので、書き込みさせていただきました。

    ムービーファイルを長時間loopさせ、イベントが起こったときに映像が出てくるようなプログラムを書いています。実際にはセンサーで値をとって、人が通ったらあらかじめloopして呼び出している映像が出てくる、というような仕組みです。(実際はもっといろんなライブラリをつかっていて複雑になっていますが、映像に関しては基本的にそれのみです。解りにくくて申し訳ありません;詳しくはコードを参照してください。)

    appletで起動させたところ、最初は問題なく動くのですが、

    java(542,0x18e7200) malloc: *** error: can’t allocate region

    java(542,0x18e7200) malloc: *** set a breakpoint in szone_error to debug

    quicktime.std.StdQTException[QTJava:6.1.5g],-50=paramErr,QT.vers:7138000

    at quicktime.std.StdQTException.checkError(StdQTException.java:38)

    というエラーが出て、25分くらいでappletが止まってしまいます。

    映像ファイルの方に問題があるのかと調べてみましたが、映像をかえてみても、やはり同じようにappletが止まってしまいます。

    以下のURLにコードを置いておきます。

    http://nomtam.jp/Changenews_4_0/

    だれか解る方がいらっしゃいましたら教えていただけないでしょうか。よろしくお願いします。

  245. qCtth より:

    >error: can’t allocate region

    メモリが足りなくなってるのでは。25分くらいでメモリを使い切ってるんじゃないかと。

    ソース全部出されてもソースのどの部分がどうなのか読む気になりませんが、メモリエラーに関してだったらどれで吐かれてるかは不明。まあ、下の方にquicktimeって出てるからMovieだとは思うけど。

    で、取り敢えずはメモリの解放とかそこらへんを考えてソースを読み直してみると吉なんじゃないかと。Movieとメモリの関係がどうなってるのかとか。

    単純に何かがmallocしてるみたいで、かつ、GCがうまく働いてないみたいなのでどっかでfreeしないといけないのかな?(そもそもJavaはfreeだったかすら怪しい…(^^;

    まあ、とにもかくにも、メモリ関係だろうと思います。

  246. ハヤッ より:

    ∫f(ξ)dξさん

    んー、なるほど、ありがとうございます。

    確かに、アクティビティモニタで確認してみたところ、メモリがだんだん溜まっているのが解ったので、メモリの問題なようです。

    javaにはC言語でいう「free」みたいなものがないんですね;もう一度ソースを一通り見直して調べてみたいと思います。どうもありがとうございました。

  247. qCtth より:

    やっぱりfreeはCですよね…お恥ずかしい。

    てきとーに書いてることバレバレです。

    System.gc();かなー。

    http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/lang/System.html

    http://www13.plala.or.jp/kymats/study/Java/b15-0.html

  248. 匿名 より:

    みなさんはじめまして。ちょっと困っているので質問させてください。

    今processingでティアドロップ形のシェイプを描くプログラムを作っています。

    原点を中心に半径rの円をまず描いて、指定した頂点座標と円との接線を引き中を塗りつぶす方法で一応ティアドロップ形は描けたんですが、これだと透明度を指定したときに円と三角形が重なる部位のみ二度塗りつぶされて、色の濃度が異なる部分ができてしまいます。(わかりづらいでしょうか(^^;) 透明度を指定した時の画像を置いておくので見てみてください。)

    透明度指定しても均一な色になるような完璧なティアドロップ形を描くいいアイデアはないでしょうか。curveVertexなどで描くのが理想的なのかもしれませんが、将来的に各パラメータを引数とした関数として扱うことを考えると、カーブの制御は僕の技術では難しそうです・・・。

    p5コミュの諸兄に是非ご教授いただきたいです。よろしくお願いいたします。

    以下ソースです。

    int r = 40;

    int cX, cY;

    int tX, tY;

    cX = width/2;

    cY = height/2;

    tX = 0;

    tY = 100;

    size(300, 300);

    colorMode(HSB, 100);

    fill(0, 30);

    noStroke();

    smooth();

    background(99);

    translate(cX, cY);

    rotate(radians(180));

    float d = dist(0, 0, tX, tY);

    float x0 = r*sqrt(1.0-pow((r/d), 2));

    float y0 = pow(r, 2)/d;

    beginShape();

    vertex(x0, y0);

    vertex(0, d);

    vertex(-x0, y0);

    endShape();

    ellipse(0, 0, 2*r, 2*r);

  249. イヌッチ より:

    三角に頂点を追加して四角に。

    追加するのは円の中心。

    残った円弧をarcで描けばいいような気がします。

    出先なので確認はできてません。

    境界見えちゃうかなー?

  250. イヌッチ より:

    ↑のやりかたできれいにかけました。

    void teerdrop(float x, float y, float w, float h, color c){

    noStroke();

    fill(c);

    float as = asin(w/h);

    quad(x, y, x-w*cos(as), y-w*sin(as), x, y-h, x+w*cos(as), y-w*sin(as));

    arc(x, y, 2*w, 2*w, -as, PI+as);

    }

    http://inutch.xrea.jp/processing/teerdrop/

  251. 匿名 より:

    >>イヌッチさん
    お返事ありがとうございます!お礼が遅くなってしまってすいません。

    イヌッチさんの方法で実装してみたところ、見事に解決いたしました。本当にありがとうございました。

    それにしてもスマートなコードですね。参考になります。同じ形描いてるはずなのに私のコードの半分の行数で済むとは恐れ入ります。精進せねば・・・。

  252. 機能別ヘ より:

    こんにちは、質問させていただきます。

    http://www.tom-carden.co.uk/2004/05/31/attractors-and-particles/

    このサイトにある作品はtom cardenさんがソースコード付きで公開しているものですが、

    すべてprocessingがalpha時代に作られたものだそうです。

    そこで上から3番目のオレンジの光で構成された作品をprocessing[BETA 135]比較的新しいバージョンで動かしたいのですが、

    ↓のソースコードをどのように書き換えれば最新のprocessingで動くでしょうか?

    御教授お願いします。

    int NUM_PARTICLES = 10000;

    int NUM_ATTRACTORS = 8;

    int SPRITE_SIZE = 2;

    Particle[] particle;

    Attractor[] attractor;

    float damp = 0.0002;

    float accel = 10000;

    BImage part;

    class Particle {

    float x,y,vx,vy;

    Particle() {

    x = random(width);

    y = random(height);

    vx = random(-accel/2,accel/2);

    vy = random(-accel/2,accel/2);

    }

    void step() {

    for (int i = 0; i < attractor.length; i++) {

    float d2 = sq(attractor[i].x-x) + sq(attractor[i].y-y);

    if (d2 > 0.1) {

    vx += accel * (attractor[i].x-x) / d2;

    vy += accel * (attractor[i].y-y) / d2;

    }

    }

    x += vx;

    y += vy;

    vx *= damp;

    vy *= damp;

    }

    }

    class Attractor {

    float x,y;

    Attractor() {

    x = random(width);

    y = random(height);

    }

    }

    void setup() {

    size(800,600);

    part = new BImage(SPRITE_SIZE,SPRITE_SIZE);

    attractor = new Attractor[NUM_ATTRACTORS];

    particle = new Particle[NUM_PARTICLES];

    scatter();

    float md = 0.5*sqrt(sq(part.width/2)+sq(part.height/2));

    for (int x = 0; x < part.width; x++) {

    for (int y = 0; y < part.height; y++) {

    float d = sqrt(sq(x-part.width/2)+sq(y-part.height/2));

    float r = 255-(255*d/md);

    float g = 128-(128*d/md);

    float b = 32-(32*d/md);

    part.set(x,y,color(r,g,b,8-8*d/md));

    }

    }

    imageMode(CENTER_DIAMETER);

    }

    void loop() {

    for (int j = 0; j < particle.length; j++) {

    particle[j].step();

    blend(part,0,0,part.width,part.height,(int)particle[j].x-part.width/2,(int)particle[j].y-part.height/2,(int)particle[j].x+part.width/2,(int)particle[j].y+part.height/2,ADD);

    }

    }

    void scatter() {

    background(0);

    for (int i = 0; i < attractor.length; i++) {

    attractor[i] = new Attractor();

    }

    for (int i = 0; i < particle.length; i++) {

    particle[i] = new Particle();

    }

    }

    void mousePressed() {

    scatter();

    }

  253. Yuushi より:

    おはようございます。質問致します。

    電光掲示板が並んで作動しているように、異なる文字列が表示されるような状況を作りたいと考えています。具体的には以下の状況です。

    http://web.sfc.keio.ac.jp/~epitajim/denkou2/index.html

    ソースコード的には結構おかしなことをやっています。

    文字列が二つだけならこれでも良いのですが、文字列を何百何千とやるため、後々になって致命的な問題が出ないか心配です。もっと効率の良いコーディングの手法、ライブラリ、processing以外の言語などがありましたら、ご教授いただけたら幸いです。

    int i=0;

    PFont font = createFont(“MS-Gothic”, 24);

    String[] hello = new String[11];

    String[] night = new String[11];

    void setup(){

    textFont(font);

    size(400,200);

    frameRate(5);

    hello[0] = “こんにちは ”;

    hello[1] = “んにちは  ”;

    hello[2] = “にちは   ”;

    hello[3] = “ちは    ”;

    hello[4] = “は     ”;

    hello[5] = “      ”;

    hello[6] = “     こ”;

    hello[7] = “    こん”;

    hello[8] = “   こんに”;

    hello[9] = “  こんにち”;

    hello[10]= “ こんにちは”;

    night[0]= “ こんばんは”;

    night[1] = “こんばんは ”;

    night[2] = “んばんは  ”;

    night[3] = “ばんは   ”;

    night[4] = “んは    ”;

    night[5] = “は     ”;

    night[6] = “      ”;

    night[7] = “     こ”;

    night[8] = “    こん”;

    night[9] = “   こんば”;

    night[10] = “  こんばん”;

    }

    void draw(){

    background(255);

    fill(0,0,255);

    text(hello[i],200,100,80,50);

    fill(0);

    text(night[i],110,100,80,50);

    fill(255);

    noStroke();

    if(i==10){

    i=0;

    }

    else{

    i++;

    }

    }

  254. Yuushi より:

    なお、

    textを動かして、上からrectなどをかぶせる手法も考えました。

    http://web.sfc.keio.ac.jp/~epitajim/denkou1/index.html

    こちらだと文字列を一つだけ書けば良いので効率は良いのですが、文字列がかぶってしまうのでNGになってしまいました。以下、ソースコードです。

    int i=320;

    int j=90;

    PFont font = createFont(“MS-Gothic”, 24);

    void setup(){

    textFont(font);

    size(400,200);

    frameRate(10);

    }

    void draw(){

    background(255);

    fill(0,0,255);

    text(“こんにちは”,i,100,150,50);

    fill(0);

    text(“こんばんは”,j,100,150,50);

    fill(255);

    noStroke();

    rect(280,0,120,200);

    rect(190,0,10,200);

    rect(0,0,110,200);

    if(i<70){i=320;}

    else{i=i-8;}

    if(j<-60){j=190;}

    else{j=j-8;}

    }

  255. はぅ君 より:

    >Yuushiさん

    はじめましてこんにちは(・−・)ノ

    気になったので、str.length()を利用して作って見ました。

    文字列と位置調整をいじれば、文字がいくつ増えても対応できると思います。

    どうでしょうか〜。

    ※ProcessingはVer.0135Betaを利用しています。

    static final int MAX_ARRAY = 10;

    PFont pf; //フォント

    String[] str = new String[MAX_ARRAY]; //文字列

    int[] ct = new int[MAX_ARRAY]; //カウンタ

    //————————————————–

    // setup

    //————————————————–

    void setup(){

    int i;

    size(400,200);

    pf = createFont(“MS-Gothic”,24);

    textFont(pf);

    str[0] = “こんにちは”;

    str[1] = “こんばんは”;

    str[2] = “おはよう”;

    str[3] = “さようなら〜”;

    str[9]=”あ”; //一文字の幅を取得する用に使う。定数にしちゃうのが良いかも。

    frameRate(5); //デフォルトだと早すぎるのでFPS5に制限

    //初期化

    for(i=0;i<MAX_ARRAY;i++){

    ct[i]=0;

    }

    }

    //————————————————–

    // draw

    //————————————————–

    void draw(){

    int i;

    int minTextCount;

    int maxTextCount;

    int tmpx,tmpy;

    background(0);

    //文字列の描画開始

    for(i=0;i<4;i++){

    ct[i]++;

    //文字が左に消えるところまでカウントしたいので *2 が条件。

    if(ct[i]>str[i].length()*2){

    ct[i]=0;

    }

    //文字列を取得する幅を決める

    minTextCount = ct[i]>str[i].length()?ct[i]-str[i].length():0;

    maxTextCount = min(str[i].length(),ct[i]);

    //文字列を描画するいちを決める。

    tmpx=(int)((150+(i%2)*200)-maxTextCount*textWidth(str[9]));

    tmpy=i / 2 * 50 + 50;

    //描画

    text(str[i].substring(minTextCount,maxTextCount),tmpx,tmpy);

    }

    }

  256. Yuushi より:

    >はぅ君

    ありがとうございます!

    str.lengthを使う手法は思いつきませんでした。

    やってみます!!

  257. Yuushi より:

    やってみたら一つ上手くいかない部分が出てきてしまいました。。

    文字列が長過ぎると282の場合のように文字列同士でかぶってしまうのです。

    こちらにエラーの様子があります。

    http://web.sfc.keio.ac.jp/~epitajim/applet/index.html

    文字列が長い場合、表示されるのは常に一部になっても構わないのですが、絶対に文字列同士がかぶらないようにしたいのです。

    僕がサンプルとして短い文字列にしたのがいけませんでした。申し訳ないです。

  258. サダム より:

    横槍すんません。

    ちょっと書いてみました。

    PFont pf;

    int textNum = 4;

    ScrollString[] ss = new ScrollString[textNum];

    void setup(){

    size(400, 200);

    pf = createFont(“MS-Gothic”,24);

    textFont(pf);

    // 文字を生成

    ss[0] = new ScrollString(“こんにちこんにちこんにちわ〜”, 50, 50, 100);

    ss[1] = new ScrollString(“こんばんこんばんこんばんわ〜”, 50, 150, 100);

    ss[2] = new ScrollString(“さようなさようなさようなら〜”, 200, 50, 100);

    ss[3] = new ScrollString(“ぃょぅ”, 200, 150, 100);

    frameRate(5);

    }

    void draw(){

    background(0);

    // 文字を描画

    for(int i = 0; i < textNum; i++){

    ss[i].draw();

    }

    }

    // スクロールStringクラス

    class ScrollString {

    String text;

    int posX, posY, lengthX, movX;

    int counter;

    /**

    * コンストラクタ

    * @param text:表示する文字列

    * @param posX:表示するX位置

    * @param posY:表示するY位置

    * @param lengthX: 表示する文字列の最大の長さ

    */

    public ScrollString(String text, int posX, int posY, int lengthX){

    this.text = text;

    this.posX = posX;

    this.posY = posY;

    this.lengthX = lengthX;

    // 一文字分の長さmovX

    movX = (int)textWidth(“あ”);

    counter = 0;

    }

    // 描画

    public void draw(){

    // 描画される文字:buffを作成

    int endIndex = counter;

    if(endIndex > text.length()){

    endIndex = text.length();

    }

    String buff = text.substring(0, endIndex);

    // 描画の位置:startX

    float startX = posX + lengthX – counter * movX;

    // 描画の位置がposXより左に行くときは頭から1文字ずつ消す(かつ0文字より減らさない)

    while(startX < posX && buff.length() > 0 ){

    buff = buff.substring(1);

    startX += movX;

    }

    pushMatrix();

    // 描画位置をstartX, posYに移動

    translate(startX, posY);

    // buffを描画

    text(buff, 0, 0);

    popMatrix();

    counter++;

    // この辺でcounterを初期化させれば繰り返す

    }

    }

    一回しか表示しないんで、も一回表示したいときはcounterを0にしてやってください。

  259. はぅ君 より:

    >サダムさん

    おー、クラスを使われましたか、なるほどφ(・−・)

    >Yuushiさん

    私の方でも改造してみたのでそれを載せて見ます。

    複雑になってきちゃったかなぁ…。

    static final int MAX_ARRAY = 10;

    PFont pf; //フォント

    String[] str = new String[MAX_ARRAY]; //文字列

    int[] ct = new int[MAX_ARRAY]; //カウンタ

    static final int SHOW_TEXT_SIZE = 6;

    //————————————————–

    // setup

    //————————————————–

    void setup(){

    int i;

    size(400,200);

    pf = createFont(“MS-Gothic”,24);

    textFont(pf);

    str[0] = “こ”;

    str[1] = “こん”;

    str[2] = “おはようおはようおはようおはようおはようおはよう”;

    str[3] = “さようなら〜さようなら〜さようなら〜さようなら〜さようなら〜”;

    str[9]=”あ”; //一文字の幅を取得する用に使う。定数にしちゃうのが良いかも。

    frameRate(5); //デフォルトだと早すぎるのでFPS5に制限

    //初期化

    for(i=0;i<MAX_ARRAY;i++){

    ct[i]=0;

    }

    }

    //————————————————–

    // draw

    //————————————————–

    void draw(){

    int i;

    int minTextCount;

    int maxTextCount;

    int tmpx,tmpy;

    int posx;

    background(0);

    //文字列の描画開始

    for(i=0;i<4;i++){

    ct[i]++;

    //文字が左に消えるところまでカウントしたいので *2 が条件。

    if(ct[i]>str[i].length()+SHOW_TEXT_SIZE){

    ct[i]=0;

    }

    //文字列を取得する幅を決める

    //minTextCount = ct[i]>str[i].length()?ct[i]-str[i].length():0;

    //ct[i]からstrの長さを引いた残りが文字列の幅。マイナスだったらゼロと一緒だお。

    if(ct[i]>str[i].length()){

    minTextCount = ct[i]-str[i].length();

    }

    else{minTextCount = 0;}

    maxTextCount = min(str[i].length(),ct[i]);

    if(str[i].length()<SHOW_TEXT_SIZE){

    posx = min(ct[i],SHOW_TEXT_SIZE);

    }else{

    posx = min(SHOW_TEXT_SIZE,ct[i]);

    }

    //文字列を取得する幅を決める

    //minTextCount = ct[i]>str[i].length()?ct[i]-str[i].length():0;

    //ct[i]からstrの長さを引いた残りが文字列の幅。マイナスだったらゼロと一緒だお。

    //if(ct[i]>str[i].length()){

    // minTextCount = ct[i]-str[i].length();

    if(ct[i]>SHOW_TEXT_SIZE){

    minTextCount = ct[i]-SHOW_TEXT_SIZE;

    }

    else{minTextCount = 0;}

    //minTextCountがmaxを超えてしまう対策

    if(minTextCount>maxTextCount){

    minTextCount = maxTextCount;

    }

    //文字列を描画する位置を決める。

    tmpx=(int)((180+(i%2)*200)-posx*textWidth(str[9]));

    tmpy=(i / 2) * 50 + 50;

    //描画

    text(str[i].substring(minTextCount,maxTextCount),tmpx,tmpy);

    }

    }

  260. 匿名 より:

    ビデオカメラからキャプチャーした映像の特定の色だけを抽出する方法がわかりません。どうすれば良いでしょうか?

    例えば赤色のところだけを黒色にするといったようなものです。

    全く無知で稚拙な質問しか出来ませんが、良ければ教えていただけないでしょうか?

  261. サダム より:

    >> 288 ケビン・サンダーソンさん

    どこからどこまでが「分からない点」なのかがはっきりしないので、憶測で答えてしまいます。

    キャプチャまではそういうトピが別にあるようなので割愛しますね。

    loadPixels()を用いると、画像の全てのピクセルデータを取得することができます。

    RGBの値を抽出したいときは、キャプチャした画像を表示後に、

    loadPixels();

    for (int i = 0; i < width*height; i++) {

    float r = red(pixels[i]); // 赤色

    float g = green(pixel[i]); // 緑色

    float b = blue(pixel[i]); // 青色

    }

    とするだけで出来ちゃいます。

    ここで、どういう色を「赤色」とするか、てところが一番の肝です。

    R255なら「赤」かというとそうではなく、白も黄色もR255だからです。(分かりますよね?)

    なので、仮に「赤が150以上で、かつ緑と青が50以下なら赤として、黒塗りする」とすると、

    loadPixels();

    for (int i = 0; i < width*height; i++) {

    float r = red(pixels[i]); // 赤色

    float g = green(pixel[i]); // 緑色

    float b = blue(pixel[i]); // 青色

    if(r > 150 && g < 50 && b < 50){ // 赤色判別

    pixels[i] = color(0);

    }

    }

    updatePixels();

    とすれば、画像の中で「赤が150以上で、かつ緑と青が50以下のドットは黒くなった」画像が作れます。

    キャプチャのたびにこの処理を繰り返してあげれば、望みの映像ができあがります。

    「ここ、赤くねーのに黒くなる!」

    てときは、赤色判別の条件を変えてアレコレ試してみてください。

    もちろん、ある程度以上の精度を求めるのであれば、被写体をブルーバックに立たせるなど、キャプチャ以前の工夫が必要です。

  262. Yuushi より:

    >サダムさん

    >はぅ君さん

    返事が遅れてごめんなさい、動作確認しておりました。

    僕が動きができてます、月末の作品展に間に合いそうです。ありがとうございます!!

    それにしてももっとJava勉強しないとな。。

  263. 匿名 より:

    >サダムさん

    回答ありがとうございます。processing初心者なこともあり、

    質問の仕方が下手ですみません。何とか動作確認できました。

    今は赤色識別の数値をアレコレやってるところです。

    出来ればなんですが赤色と判定したピクセルを黒に変えるだけではなく、

    モザイクをかけたりも出来るのでしょうか?

    モザイクをかけるようなアルゴリズムがわからない上に

    どうプログラミングしていいものかわからないです。

    ある一定の範囲をその範囲中の色の平均値にするといったことなのでしょうか?

    例えば3×3のピクセルの色を合計し1/9にしたものを3×3のピクセルに

    適用するようなものかと思うのですが、どうやって3×3のピクセルを指定できるのか

    果たしてそのような原理なのかわかりません。

    まだまだ勉強不足なので質問するのも忍びないのですがよければお答えください。

    あと、日本語のサイトでprocessingのvideoを勉強するのに

    いいサイトなどがあれば教えてください。

  264. たくや より:

    最近プロセッシングをはじめたものです。

    PFontを使って文字を書こうとしているのですが、一つ分からないことがあります。

    processingのtextは結構文字送り幅が狭いので、文字送り幅を調節してやりたいのですが、そのやり方が分かりません。

    誰か、知っている方がいらっしゃいましたら、よろしくおねがいします。

  265. 匿名 より:

    拡張ライブラリのNextTextを使ってみるとかどうでしょう?

    私は標準のフォントの方法だと送り幅とかは指定できないようなので↓のようにしてます

    String letters = “何か文章を入力”; //String型に文章を格納し

    pushMatrix(); //念のため現座標を退避

    for(tmp=0;tmp<letters.length();tmp++){ //文字の長さ分ループ

    text(letters.charAt(tmp),0,0); //一文字ずつ書き出し

    translate(20,0); //送り幅(指定したフォントの値を見ながら決めてください)

    }

    popMatrix(); //元の座標の復元

    あるいはループ内を

    text(letters.charAt(tmp),tmp*α,0); //α=送り幅

    のようにして行列の退避・復元をとっぱらっちゃってもいいと思います。

  266. :P より:

    はじめまして。

    とにかく光らせてみたくてopenGLを使用するといいらしいということで

    http://www.flight404.com/blog/?p=71を参考にしているのですが、

    import javax.media.opengl.*;

    の箇所が実現できません。

    java.netから jogl-1.1.1-windows-i586 というファイルは

    引っ張ってきましたがそのあとのlibraryへの追加方法がわかりません。

    ほかのlibraryのように放り込むだけではだめなんですね。

    しょうもない質問かもしれませんが、詳しい方いらっしゃいましたらご教授願います–

  267. hirok より:

    ずいぶんMixiから遠ざかってしまったけどP5人口増えてますね。

    需要があるのかな?>>ALL

    そして亀レス>>291

    >>ケビン・サンダーソン さん

    >>182あたりで同じようなコードを書いた記憶がある

    参考になるか分かりませんが

    多少高速化してありますし、赤に近い部分という指定ができます。

    光の加減で 陰(黒)や反射(白)くなっていると正確には取れませんが

    比較的うまくいくのではないかと。

  268. :P より:

    295に投稿したものですが、問題解決できました。

    お騒がせしました。

    あとはブレンドの勉強します。

  269. たくや より:

    コター(「・ω・)「さま

    ありがとうございます!!

  270. 匿名 より:

    >>hirokさん

    少なくとも私のようなプログラミング初心者で英語も出来ないものにとっては、需要あります。

    あと、この前言っていたの(赤色を判定して赤色部分のみモザイクをかけるというもの)をいろんな所のものをまねしながら作ってみたのですか動作しません。

    いろんなものをごちゃまぜにしたきたないソースですが、よかったら改善点を教えてください。

    import processing.video.*;

    Capture camera;

    PImage Pcamera;

    void setup(){

    size(640, 480);

    frameRate(12);

    noStroke();

    camera = new Capture(this, width, height, 15);

    Pcamera = new PImage(width, height);

    }

    void draw(){

    Pcamera.loadPixels();

    tint(255, 64);

    image(camera, 0, 0);

    for(int y=0 ; y < height ; y+=5) {

    for(int x=0 ; x < width ; x +=5) {

    int pos = (y * width) + x;

    float diff = abs(brightness(Pcamera.pixels[pos]) –

    brightness(camera.pixels[pos]));

    loadPixels();

    for (int i = 0; i < width*height; i++) {

    float r = red(pixels[i]); // 赤色

    float g = green(pixels[i]); // 緑色

    float b = blue(pixels[i]); // 青色

    if(r > 200 && g < 110 && b < 140 && diff > 50 ){

    fill(camera.pixels[pos]);

    rect(x, y, diff/5, diff/5);

    }else if(r > 100 && g < 50 && b < 50 && diff > 50){

    fill(camera.pixels[pos]);

    rect(x, y, diff/5, diff/5);

    }

    }

    updatePixels();

    Pcamera.copy(camera, 0, 0, width, height, 0, 0, width,

    height);

    }

    }

    }

    void captureEvent(Capture camera) {

    camera.read();

    }

  271. サダム より:

    亀レスすいません。

    >> ケビンさん

    モザイクですね。

    書かれたソース、軽く見てみましたが、diffは明るさの差分なので、これをrectの大きさに利用してしまったらバラバラの大きさのrectが出来てしまいます。

    モザイクにしたいなら、rectの大きさは5にするべきでしょう。

    以下ではモザイクにする機能をメソッドにしてみました。

    前回同様、全ては書いていないので、上手く取り入れてみてください。

    int mSize = 3; // モザイクのサイズ、可変

    loadPixels();

    // 縦横mSizeピクセルおきにmosaikメソッドを呼び出す

    for (int i = 0; i < height; i += mSize){

    for(int j = 0; j < width; j += mSize){

    mosaik(i * j, mSize);

    }

    }

    updatePixels();

    /**

    * mSize内がモザイクをかけるメソッド

    * @param ptr : モザイクをかける位置

    * @param size : モザイクの大きさ

    */

    public void mosaik(int ptr, int size){

    boolean isRed = false; // 赤いピクセルが含まれるかの判定フラグ

    float avr = 0; // モザイク内の色の平均値

    for(int x = 0; x < size; x++){

    for(int y = 0; y < size; y++){

    int i = ptr + x + y * width;

    if(i < width * height){ // iが画面サイズをオーバーしていないか。

    float r = red(pixels[i]); // 赤色

    if(r > 150 && g < 50 && b < 50){ // 赤色判別

    isRed = true;

    }

    avr += pixels[i];

    }

    }

    }

    if(isRed){

    avr = avr / (float)(size * size);

    // size×size内を全部同じ色(avr)へ。

    for(int x = 0; x < size; x++){

    for(int y = 0; y < size; y++){

    int i = ptr + x + y * width;

    if(i < width * height){

    pixels[i] = avr;

    }

    }

    }

    }

    }

    モザイク内に1ピクセルでも赤いピクセルがあれば、そのモザイク内のピクセルを全部平均的な色にしてしまう、というメソッドです。

    赤色判別は適当に書いてるので、より精度を上げたい場合は適当な値に変えてあげてください。

  272. しんちゃん より:

    初めまして、今年に入りProce55ingを触り始めたものです。

    早速ですが、プログラムほぼ初心者な私を助けていただきたいのです。

    Proce55ingを使って音楽を視覚化して表示したいと思っているのですが、イメージとしてはWindowsMediaPlayerにあるような視覚エフェクトの様な球が音の大きさによってトゲトゲしくなるような感じのを作りたいなと思っているのですが、何が必要になるか考えたりしたんですが勉強がたりなくてよくわかりません・・・

    自分なりに考えた必要な事は

    ・音を扱うライブラリ(何種類かありますがどれが私が作ろうとしてるのに適しているのかわからない)

    ・音を抽出して抽出した情報を元に球をトゲトゲさせるプログラム

    だと思います。(これさえ満たせば何とかそれっぽいのは出来ると・・・)

    音を扱うのは初めてでして、この考えで間違っているかどうかと、考えているような物を作るために必要なライブラリなどのアドバイスなどいただけたらと・・・

    Proce55ingに詳しい先輩方どうかご教授お願いします。

    長文・駄文で申し訳ありません。

  273. 機能別ヘ より:

    音楽を扱うライブラリはいくつかあります。Essとか。

    それらはProcessingのライブラリのページを参照するといいでしょう。

    どれにしろ、音楽から何か特徴量(大きさであったり、フーリエ変換した値であったり)が得られると思います。

    それらの特徴量を元にいじくればいいんじゃないかな。

  274. 匿名 より:

    >>サダムさん

    ありがとうございました。勉強不足のために動作確認に時間がかかりましたが、どうやら完成しそうです。完成したときはまた報告させていただこうと思っています。ありがとうございました。これからもよろしくお願いします。

  275. しんちゃん より:

    >sasamistreetさん

    ありがとうございます。

    ESSを使ってやってみようと思います。

    またわからない事など出てきましたらこちらに寄らせていただきます。

  276. RoA より:

    質問です。

    minimのgetLineInで入力した音を

    ローパスフィルターなどを通してフィルタリングし

    スピーカーなどに出力出力するにはどうしたらいいのでしょうか?

    今のところ下のようなソースで

    ラインインの音をローパスフィルター(マウス操作でフィルタリングするサンプル)することは出来たのですが

    フィルタリングされた音を出力するやり方がわかりません。

    何方か解る方いましたらご指導よろしくお願いします。

    import ddf.minim.*;

    import ddf.minim.effects.*;

    AudioInput in;

    AudioOutput out;

    LowPassFS lpf;

    void setup()

    {

    Minim.start(this);

    in = Minim.getLineIn(Minim.STEREO, 512);

    out = Minim.getLineOut(Minim.STEREO, 512);

    lpf = new LowPassFS(100, in.sampleRate());

    in.addEffect(lpf);

    }

    void draw()

    {

    background(0);

    stroke(255);

    for(int i = 0; i < in.bufferSize() – 1; i++)

    {

    line(i, 50 – in.left.get(i)*50, i+1, 50 – in.left.get(i+1)*50);

    line(i, 150 – in.right.get(i)*50, i+1, 150 – in.right.get(i+1)*50);

    }

    }

    void mouseMoved()

    {

    float cutoff = map(mouseX, 0, width, 60, 2000);

    lpf.setFreq(cutoff);

    lpf.printCoeff();

    }

    void stop()

    {

    in.close();

    super.stop();

    }

  277. Yuushi より:

    7月の作品展前は本当にお世話になりました。

    今回も質問です。お手数ですが宜しくおねがいします。

    質問内容は「本物のマウスカーソルが出てこないようにすることはできるのか?」です。

    例えば、以下のような感じでマウスマーソルを消して代わりのアイコン(というかellipse)を使うとします。

    void setup(){

    size(1000,800);

    }

    void draw(){

    background(255);

    noCursor();

    int x = mouseX;

    int y = mouseY;

    fill(0);

    ellipse(x,y,8,8);

    }

    そうすると、一応本物のマウスカーソルは消えるのですが、マウスカーソル(ここではマウスカーソル代わりのellipse)を上にやると本物のマウスカーソルが姿を表してしまいます。これをどうにかして避けたい(すなわちescを押したりアプリケーションを終了しない限り本物のマウスカーソルがでないようにしたい)のですが、そのようなことはできるのでしょうか?

  278. 機能別ヘ より:

    >>Yuushiさん

    >マウスカーソルを上にやると・・・

    これは、ウィンドウをはみ出すと、という意味でしょうか。

    もしそうでしたら、マウスカーソルのアイコン自体を変えてみてはいかがでしょうか。マウスカーソルアイコンの作成はフリーソフトでもありますよ。

  279. 匿名 より:

    mixiの日記やコメントに

    P5のアプリを掲載する方法があれば

    教えていただきたいです。

    よろしくお願いします。

  280. サダム より:

    >> Yuushiさん

    draw()の処理は毎フレーム呼び出される命令なんです。

    だから、noCursor();はdraw()内ではなく、setup()内で呼んであげてください。

    あるいはsetup()内に記述してうまく動作しない場合は、

    keyPressed()内などに記述して、何らかのキーを押したらマウスが消えるようにするのが良いと思います。

    >> C’sさん

    mixi側がJava appletの掲載をサポートしない限り、無理だと思います。

    そこら中にアプレットが貼り付けられてたら、重たくなっちゃいますし、

    悪意あるユーザがひどいアプレットを貼りつけないとも限りませんからね・・・。

    日記に貼るなら、スクリーンショットの画像を貼って、リンクで自分のWEBページとかに飛ばせばどうでしょう。

  281. 匿名 より:

    初めまして、質問させていただきます。

    現在processingと音を組み合わせた作品を作ろうとしています。

    具体的には音の視覚化や

    ↓こういったものです。

    http://jp.youtube.com/watch?v=XK18H_mv7hk&eurl=http://technorati.com/videos/youtube.com%2Fwatch%3Fv%3DXK18H_mv7hk

    EssではなくPure Dataを使いたいのですが

    processingでどのようにしてPure Dataを呼び出すのかわかりません。

    どのようにしたらできるのでしょうか?

    ご存知の方がいらっしゃいましたら教えてください。

  282. サダム より:

    >> たぬきさん

    Pdを使うのであれば、OSC(Open Sound Control)という通信プロトコルを使うのが良いかと思います。

    OSCとは、まあMIDIの便利版だと思ってくれればOKです。

    processingではoscP5という、OSCを使えるライブラリが開発されています。

    http://www.sojamo.de/libraries/oscP5/

    こいつをダウンロードしてprocessingのライブラリフォルダ内にぶっ込んでインポートして使えば、PdへのOSCメッセージの出力ができます。

    このOSCメッセージを入力するためには、Pd側にもOSCの対応が求められるのですが、今ちょろっと調べたところ、Pd-extendedにOSCを扱うためのオブジェクトが含まれる、という情報がありました。

    http://goonsh.ddo.jp/fg/2008/06/14/squeak-osc-pd

    使い方に関しては、上記のWEBページのサンプルを見て頂ければOKかと思います。

  283. 匿名 より:

    >>サダムさん

    いろいろ調べていただいて、ありがとうございます!

    さっそく試してみます。

  284. アボガド より:

    全く初歩的なことになってしまうのですが、質問させてください。

    Q、クラスAのメソッド・変数を、クラスBの引数にするにはどうすればいいのでしょうか?

    例えば、描画色設定をまとめておいて、スケッチ全体で使いたいのですが。

    void setup() {

    colorMode(HSB, 100);

    }

    void draw() {

    COLORS colors = new COLORS();

    Class_A obj_A1 = new Class_A();

    obj_A1.play(10,10);

    }

    //—————————————–

    class COLORS {

    color c1;

    COLORS(){

    c1 = color(0,100,100,100);

    }

    }

    //—————————————–

    class Class_A {

    /*Const Color*/ color c1 = color(0,100,100,20);

    /*Stroke Size*/ float strokesize =29;

    /*Stroke Color*/ color strokecolor = color(24,100,100,80);

    Class_A () {

    }

    void play(int xpos, int ypos){

    fill(colors.c1);//※”colors”が見つからない。

    rect(10,10,xpos,ypos);

    }

    }

    }

  285. fuku より:

    これでできないですかね

    void draw() {

      COLORS colors = new COLORS();

      Class_A obj_A1 = new Class_A();

      obj_A1.play(10, 10, colors);

    }

     :

     :

     :

    void play(int xpos, int ypos, COLORS colors) {

      fill(colors.c1);

      rect(10, 10, xpos, ypos);

    }

  286. アボガド より:

    出来ました。ありがとうございました。

  287. 機能別ヘ より:

    はじめまして。

    学校の課題で取り組んでいるものです。

    下記プログラムの、表示されている円をクラスにして配列で記述したいのですが、

    クラスも配列も苦手分野でよくわかりません…

    やりたいこととしては、data1にそって、

    まず各地域に丸を表示、

    そして例えば札幌が8日目、晴れ(「1」)の時、円をオレンジ色にする、

    ということをやりたいです。

    更に欲を言えば、色が変わるときにフェードで変わってほしいと思っています。

    何かアドバイスを頂ければと思い、書き込みしました。

    よろしくお願いします。

    アップ先

    http://web.sfc.keio.ac.jp/~t05055ai/kadai_japan01.zip

  288. fuku より:

    これはどうですか?

    // 経緯度を持つクラス

    public class Area {

     private float longitude; // 経度

     private float latitude;  // 緯度

     public Area(){

      this.longitude = 0.0;

      this.latitude = 0.0;

     }

     public Area(float lon, float lat){

      this.longitude = lon;

      this.latitude = lat;

     }

     public void setLongitude(float lon){

      this.longitude = lon;

     }

     public float getLongitude(){

      return longitude;

     }

     public void setLatitude(float lat){

      this.latitude = lat;

     }

     public float getLatitude(){

      return latitude;

     }

    }

    // ———————————————————————

    // kadai_japan01.pde

     :

     :

    void setup(){

     :

     :

     // 追加

     setLongAndLatData();

    }

    // 追加(経度と緯度を取得)

    void setLongAndLatData(){ 

     // ——(別途データ読み込みクラス、メソッドを作ってやる・・・)——

     // 経度と緯度の配列

     float[] longitude = new float[AREA_COUNT];

     float[] latitude = new float[AREA_COUNT];

     longitude[0]=144.38225;

     longitude[1]=141.3508;

     longitude[2]=140.88204;

     longitude[3]=139.06188;

     longitude[4]=139.76608;

     longitude[5]=136.64776;

     longitude[6]=136.88163;

     longitude[7]=135.49497;

     longitude[8]=133.54352;

     longitude[9]=132.47582;

     longitude[10]=130.41829;

     longitude[11]=130.56301;

     longitude[12]=127.68093;

     latitude[0]=42.99027;

     latitude[1]=43.06862;

     latitude[2]=38.26029;

     latitude[3]=37.91202;

     latitude[4]=35.68138;

     latitude[5]=36.57827;

     latitude[6]=35.17069;

     latitude[7]=34.7019;

     latitude[8]=33.56675;

     latitude[9]=34.3982;

     latitude[10]=33.60657;

     latitude[11]=31.60143;

     latitude[12]=26.2124;

     // —————————————————————

     

     areas = new Area[AREA_COUNT];

     

     for(int k=0; k<AREA_COUNT; k++) {

      areas[k] = new Area(longitude[k], latitude[k]); //経度と緯度セット

     }

    }

    void draw(){

     :

     :

     // 追加

     for(int k=0; k<AREA_COUNT; k++) {

      drawData2(map(areas[k].getLongitude(),xMin,xMax,0,width),

           map(areas[k].getLatitude(),yMin,yMax,height,0));

     }

  289. 機能別ヘ より:

    ありがとうございます、なんとかできました。

    更に丸の色が切り替わるのをフェードで切り替わるようにしたいのですが…

    どなたか良い方法を思いついたら教えてください。

    よろしくお願いします。

  290. 機能別ヘ より:

    はじめまして。質問です。

    processingとActionScript3.0を連携させたいと思っているのですが、

    何かいい方法をご存じないでしょうか?

    具体的には、

    4nchor5 la6 (http://www.456.im/)

    で公開されているBBOSCを使って、

    バランスWiiボードから入力された数値をprocessingで受け取り、

    ActionScriptで利用したいと考えています。

    どなたかいい方法をご存知でしたら教えていただけないでしょうか。よろしくお願いします。

  291. ieopoie より:

    >>ごろやん

    BBOSCはoscを送り続けるソフトウェアなので、

    ASでoscを受信するだけで利用できます。

    oscについては、こちらを参考にされてみてはどうでしょう

    SSAW07 >> 第10回:作品制作のヒント:OSCによる複数のアプリケーションの連携

    http://yoppa.org/ssaw07.php?itemid=622

  292. 機能別ヘ より:

    >ieopoieさん

    ASだけで実現できるんですね!

    BBOSCはprocessingで使うものだと思い込んでいました。

    早速挑戦してみます!ありがとうございました!

  293. 匿名 より:

    お久しぶりです。また質問させてください。

    processingでの描画結果を画像データとして出力したいのですが、デフォルトで備わっているsave()命令ではsize()命令で指定した描画領域すべてが保存されてしまいますよね。

    これを指定した一部の領域だけを保存したり、あるいはプログラムの処理によって変更を加えたPImaggeオブジェクトを出力したりすることは可能でしょうか。

    なにかいい方法があれば教えていただきたいです。よろしくお願いします。

  294. 匿名 より:

    はじめまして、質問させてください。

    100〜200までの整数をランダムに入力するプログラムを作るにはどのようにすればよいのでしょうか。

    random()では小数点以下も代入されてしまい上手くいかないもので…

    お分かりになる方いらっしゃいましたら、ご教授お願いいたします。

  295. 機能別ヘ より:

    >いつきさん

    random(100, 201)で100以上201未満の数がfloat型で返ってきます。

    それを、floor()を使うことで小数点を切り捨てればいいのではないでしょうか。

    つまり、floor( random(100, 201) ) です。

    戻り値はint(整数型)になります。

    例)

    for(int i=0;i<5;i++){

    print(floor(random(100, 201)));

    }

    ->出力

    122

    173

    184

    107

    141

  296. 機能別ヘ より:

    325の例のprintはprintlnの間違いです。

  297. 匿名 より:

    >sasamistreetさん

    ありがとうございます。

    無事プログラムすることが出来ました。また何かありましたらよろしくお願いいたします。

  298. 匿名 より:

    すいません。また質問させてください。

    時間の経過によって、描写される図形が変化するプログラムを作りたいのですが、

    上手くいきません。たとえば、

    はじめは、(20,20)に半径20の円が描かれていて、

    その20秒後に、(40,40)に円が描かれるといったものです。

    どなたかわかる方いらっしゃいましたら、ご教授お願いいたします。

  299. 機能別ヘ より:

    どういう意図かわからないので、汎用性も込めて。

    int rate = 10;

    int x1 = 20;

    int y1 = 20;

    int x2 = 40;

    int y2 = 40;

    int radius = 20;

    int time = 20;

    void setup(){

    size(160, 160);

    frameRate(rate);

    background(0);

    noStroke();

    }

    void draw(){

    background(0);

    ellipse(x1+((x2-x1)*frameCount)/(time*rate), y1+((y2-y1)*frameCount)/(time*rate), radius, radius);

    println(nf(second(), 2) + ” : ” + (x1+((x2-x1)*frameCount)/(20*rate)));

    }

    x1,y1は始めの位置、x2,y2は終わりの位置、radiusは円の半径。

    rateはframeRateです。1秒間に何回draw内が繰り返し処理をされるかを表しています。

    timeは目標位置にたどり着くまでの秒数。

    draw()内の2行目 ellipse()の中身は、始めの位置に現在の位置までの増加分を足しています。

    draw()内の3行目 println()は確認用です。実際に座標の位置が変わるのを確認した方がいいかと。

    他、細かい関数はリファレンスを参照してくれると助かります。

  300. アズアミ より:

    初めまして、質問させて下さい。

    春夏秋冬をテーマに作品を作っていて、四季をそれぞれ別々のデータで作っているのですが(haru.pde、natsu.pde、aki.pde、fuyu.pdeといった具合に)それら4つのデータを、例えばharu.pdeを1分間再生したのち、自動的にnatsu.pdeに切り替わるといった操作は可能でしょうか?FLASHか何かと連携させて一本のタイムラインにまとめてみようと試してもみたのですが良く分からずに困っています…

    宜しければご教授お願い致します!

  301. アズアミ より:

    331番の件ですが、saveFrameで何とか解決できそうです。

    他力本願な書き込みで皆様の気分を害してしまったかも知れません。

    申し訳ありませんでした。

  302. アズアミ より:

    連投失礼します。

    millisのカウントを、100000までいったらまた0に戻る、といった具合にリセットすることは可能でしょうか?

    どなたかわかる方いらっしゃいましたら、ご教授お願いいたします。

  303. 不老中年 より:

    それはif文でできるのでは?

  304. アズアミ より:

    >不老中年さん

    アドバイスありがとうございます。

    if文で

    float m = millis();

    if ( m < 60000){〜

    }

    if ( m > 60000){〜

    }

    if ( m > 180000){〜

    }

    if ( m > 240000){〜

    }

    if ( m == 240000){???

    }

    という風に1分単位で画面を切り替えているのですが、mが240000を数えた時にmを再び0に戻す方法が分からなくて困っています。どういった表記をすればいいのでしょうか?

  305. fuku より:

    fpsでどうですか?

    ———————————————————

    static int FPS = 30;

    int count = 0;

    void setup() {

     frameRate(FPS);

    }

    void draw() {

     count++;

     //println(count);

     if((0 < count) && (count <= FPS)){

      //println(“Spring”);

     } else if((FPS < count) && (count <= FPS*2)){

      //println(“Summer”);

     } else if((FPS*2 < count) && (count <= FPS*3)){

      //println(“Autumn”);

     } else if((FPS*3 < count) && (count <= FPS*4)){

      //println(“Winter”);

     } else {

      count = 0;

     }

    }

  306. 機能別ヘ より:

    millis()はアプレットが起動してからの時間みたいなのでリセットできなさそうですが

    float m = millis();



    float m = millis() % 240000;

    とすれば240000のとき0に戻りますよ

    float m = millis() % 240000;

    if((0 <= m) && (m < 60000)) {

    }

    if((60000 <= m) && (m < 120000)) {

    }

    if((120000 <= m) && (m < 180000)) {

    }

    if((180000 <= m) && (m < 240000)) {

    }

    まだ酒が残ってるので間違ってるかもですがまん顔

  307. fuku より:

    連続すいません

    ———————————————————

    static int FPS = 30;

    int count = 0;

    void setup() {

     frameRate(FPS);

    }

    void draw() {

     count++;

     //println(“count: ” + count);

     

     int seasonID = count/FPS;

     //println(“seasonID: ” + seasonID);

     switch(seasonID) {

      case 0:

       //println(“Spring”);

       break;

      case 1:

       //println(“Summer”);

       break;

      case 2:

       //println(“Autumn”);

       break;

      case 3:

       //println(“Winter”);

       break;

      /*

      case 4:

       println(“Hoge”);

       break;

      */

      default:

       count = 0;

       break;

     }

    }

  308. アズアミ より:

    >fukuさん、sa2さん

    迅速なアドバイスありがとうございます!感動しました。

    無知なものでfpsの仕組みが良く分からなかったもので(fukuさんせっかくアドバイス頂いたのに申し訳ありません…)sa2さんのアドバイスを元に実験してみたら出来ました!親切にありがとうございました。

  309. 不老中年 より:

    >アズアミさん

    あけましておめでとうございます。

    無事できてよかったですね!

    私のレジュメのところにもありますが、

    float m = millis();

    のあとに、

    mを別の変数に退避しておき、比較することでもできます。

    http://fac.geidai.ac.jp/~kaay/graphic_pg/resume2008/index.php?%A5%E2%A5%F3%A5%BF%A1%BC%A5%B8%A5%E5%A5%D7%A5%ED%A5%B0%A5%E9%A5%E0

    このような時刻を扱ったシーケンシャルなプログラムの作成方法は

    グラフィックスのプログラミングでは、論じられることも

    少ないようにも感じられます。

    しかし、MIDIなどの音との連携などの場合などには必須ですし、

    そういったワザがもっと論じられてもよいようにも思います。

    あとはdelay();の信頼性が?な面もあるというのも困ったことですよね。

  310. fuku より:

    > アズアミさん

    FPSって、Frame / Second で 一秒間に何フレーム?

    processing だと一秒間に何回 draw() メソッドが呼ばれるか

    だと思って

    http://processing.org/reference/frameRate_.html

    > For example, the function call frameRate(30) will attempt to refresh 30 times a second.

    あまりフレームレートが高くて、draw()メソッドの処理が多いと

    正しく画面が更新されないですけど

  311. アズアミ より:

    >不老中年さん

    明けましておめでとうございます!ありがとうございます。

    プログラミングの教鞭をとられていらっしゃるんですか?

    せっかくのお話についていけずにちょっと悔しいです。

    >fukuさん

    分かりやすい解説、ありがとうございました。

    今回の作品の締め切りを考えるとちょっと手が出せませんが、いつかそういうのをきちんと理解して使いこなしてみたいです…

    また何かありましたら、知恵を貸して頂けるとありがたいです!

  312. 匿名 より:

    はじめまして。

    Processingで画像に水面の波紋のエフェクトを作成したいのですが、手がかりがつかめません。

    http://hp.vector.co.jp/authors/VA012735/applet/dropimg.htm

    のようなものができれば良いと思っています(マウスイベントは必要ないですが)。

    Javaなので、Processingで書き換えられるかと思い、今日一日取り組んでいたのですが、

    どうにもなりませんでした。

    どなたかご返信いただけると助かります。

  313. 匿名 より:

    Processing 1.0とMIDI用のライブラリRWMidi(http://ruinwesen.com/blog?id=95)をOS X 10.5.5で使用しています。

    void sysexReceived(rwmidi.SysexMessage msg) {
    msg.getMessage();
    println(msg);
    }
    でデバイス(テノリオン)から受け取ったメッセージ内の数字を、任意に扱える変数として納める方法を教えてください。

    例えば以下のようなメッセージ…
    Sysex Message:
    0000 – f0 43 73 01 33 00 09 01 0f f7 – .Cs.3…..

    f7の前、最後の”01 0f”が押されたボタンの座標を示していることが分かったので、これを(x, y)として扱いたいんですが…。
    そもそもJava、MIDIともに圧倒的な勉強不足なのですが、どうしても早めに解決したい部分なのです。
    ご教示よろしくお願いいたします!

  314. 機能別ヘ より:

    >heeさん

    あくまで予想ですが、”01 0f”というのは16進数で表されているのではないでしょうか。

    もしそうなら、01が2番目の位置、0fが16番目の位置になります。(00が1番目として)

    縦座標または横座標を固定して直線上にボタンを押してみて、

    テノリオンから受け取るメッセージを確認してみてください。

  315. 匿名 より:

    >sasamistreetさん

    レスありがとうございます。
    おっしゃる通り左上を(00, 00)として、縦横の座標を16進数で吐き出しています。
    というのは分かるのですが(すいません!)、疑問点は『msg.getMessage();としてひとかたまりに受け取る文字列を分解して個々に扱う方法』で、「Java Sysex 解析」とか検索してみるものの思うようなドキュメントに当たりません。
    勉強は惜しまないつもりですがいかんせんどこから手を着けて良いか分からずです…。

  316. 機能別ヘ より:

    >hee

    もし、文字列中の座標表現の位置が定まっているなら、

    split()でいけるかと思います。

    http://processing.org/reference/split_.html

    String s = 0000 – f0 43 73 01 33 00 09 01 0f f7 – .Cs.3…..

    なら、

    x座標は、split(s, ” “)[9]、y座標は、split(s, ‘ ‘)[10]

    で受け取れます。(受け取る形はStringなので数値用に変換する必要があります)

    または、substring()で、値を決め打ちするのも手かもしれません。

    http://processing.org/reference/String_substring_.html

  317. 匿名 より:

    >sasamistreetさん

    書いていただいた例を見てハッとしまして、sysexはbyte型の配列なのでbyte[n]で試してみたところ見事に取り出せました。
    込み入ったことをやるにしてもやはり基本が大事なんですね。。
    的確なご回答ありがとうございます!
    またお世話になるかと思いますのでよろしくお願いいたします。

  318. 匿名 より:

    はじめまして、質問させて下さい。

    noiseを使った動きを複数制御するにはどうすればよいでしょうか?

    以下は一つのrectがnoiseで動いています。このように20個のrectが別の動きをするようにしようと思い、配列を使って試してみたのですがうまく出来ず困っています。

    初歩的な質問で申し訳ございませんが、ご教授お願いいたします。

    float x,y,xoff,yoff;

    void setup(){

    size(400,400);

    stroke(255);

    x=random(200);

    y=random(200);

    }

    void draw(){

    background(0);

    xoff += 0.008;

    yoff += 0.008;

    x = noise(xoff)*400;

    y = noise(xoff,yoff)*400;

    rect(x,y,4,4);

    }

    よろしくお願いいたします。

  319. fuku より:

    配列使ってませんが

    これではどうですか?

    for文で回してるだけです。

    ———————————————————–

    import processing.video.*;

    float x,y,xoff,yoff;

    MovieMaker mm; // Declare MovieMaker object

    void setup(){

     size(400,400);

     // Create MovieMaker object with size, filename,

     // compression codec and quality, framerate

     mm = new MovieMaker(this, width, height, “mixi_processing_351_v2.mov”,

                30, MovieMaker.H263, MovieMaker.HIGH);

     stroke(255);

     x = random(200);

     y = random(200);

    }

    void draw(){ 

     background(0); 

     

     for(int i=0; i<20; i++){

      xoff += 0.008;

      yoff += 0.008;

      x = noise(xoff)*400;

      y = noise(xoff,yoff)*400;

      rect(x,y,4,4);

     }

     

     mm.addFrame(); // Add window’s pixels to movie

    }

    void keyPressed() {

     if (key == ‘ ‘) {

      mm.finish(); // Finish the movie if space bar is pressed!

     }

    }

    ———————————————————–

    上記のプログラムの動画

    ———————————————————–

    *動画作成参考

    http://www.processing.org/reference/libraries/video/MovieMaker.html

  320. 匿名 より:

    >fukuさん

    ありがとうございます。

    このように20個のつながったrectではなく、下の画像のように各々が独立してnoiseの動きで制御されるようなプログラム作るにはどうすればよいでしょうか?

    よろしくお願いいたします。

  321. fuku より:

    あー

    ん?その画像はw

    こうですか?noiseメソッド使ってませんけど。

    ———————————————————–

    float x,y,xoff,yoff;

    void setup(){

     size(400,400);

     stroke(255);

     //x = random(200);

     //y = random(200);

    }

    void draw(){

     background(0);

     

     for(int i=0; i<20; i++){

      //xoff += 0.008;

      //yoff += 0.008;

      //x = noise(xoff)*400;

      //y = noise(xoff,yoff)*400;

      //rect(x,y,4,4);

      rect(random(400),random(400),4,4);

     }

    }

    ———————————————————–

  322. fuku より:

    答えといてなんですけど、noiseメソッドってなんですかね?

    誰か教えてエロい人

    Perlin <http://processing.org/reference/noise_.html>

    パーリンノイズを返すものらしいですね

    パーリンノイズ – Wikipedia <http://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%83%AA%E3%83%B3%E3%83%8E%E3%82%A4%E3%82%BA>

    S5-13d <h

    ttp://homepage3.nifty.com/higematsu/AE_Exp/S5_13d.htm>

    > 動きなどにばらつきを与え自然な感じにしたい時に、乱数では変化が激しすぎて不自然になることがしばしば有ります。それを補う目的で作られたのがパーリンノイズです。

    なんですね。

  323. 匿名 より:

    >fukuさん

    ありがとうございます。

    これは乱数になっていますね。351 のように、noiseの返す値が欲しいのですが、何か解決策はあるでしょうか?以下はrectが2つの状態です。このようにrectを増やしたいのですが。

    ーーーーーーーーーーーーーーーー

    float x,y,x2,y2;

    float xoff=random(100);

    float yoff=random(100);

    float xoff2=random(100);

    float yoff2=random(100);

    void setup(){

    size(400,400);

    stroke(255);

    }

    void draw(){

    background(0);

    xoff += 0.008;

    yoff += 0.008;

    xoff2 += 0.008;

    yoff2 += 0.008;

    x = noise(xoff)*400;

    y = noise(xoff,yoff)*400;

    x2 = noise(xoff2)*400;

    y2 = noise(xoff2,yoff2)*400;

    rect(x,y,4,4);

    rect(x2,y2,4,4);

    }

    ーーーーーーーーーーーーーーーー

    上記のように、個々に数値を与えてやると出来るのですが、配列などを使うとnoiseがうまく動きません。2個くらいなら問題ありませんが20個やそれ以上になるとプログラムが困難になってしまいます。

    よろしくお願いいたします。

  324. fuku より:

    > 配列などを使うとnoiseがうまく動きません

    って、これじゃうまく動いてませんか?

    ———————————————————–

    //float x,y,x2,y2;

    float[] x = new float[20]; // 初期値は0.0f

    float[] y = new float[20]; // 初期値は0.0f

    //float xoff=random(100);

    //float yoff=random(100);

    //float xoff2=random(100);

    //float yoff2=random(100);

    float[] xoff = new float[20]; // 初期値は0.0f

    float[] yoff = new float[20]; // 初期値は0.0f

    void setup(){

     size(400,400);

     stroke(255);

     

     for(int i=0; i<20; i++){

      xoff[i] = random(100);

      yoff[i] = random(100);

     } 

    }

    void draw(){

     background(0);

     //xoff += 0.008;

     //yoff += 0.008;

     //xoff2 += 0.008;

     //yoff2 += 0.008;  

     //x = noise(xoff)*400;

     //y = noise(xoff,yoff)*400;

     //x2 = noise(xoff2)*400;

     //y2 = noise(xoff2,yoff2)*400;

     //rect(x,y,4,4);

     //rect(x2,y2,4,4);

     for(int i=0; i<20; i++){

      xoff[i] += 0.008;

      yoff[i] += 0.008;  

      x[i] = noise(xoff[i]) * 400;

      y[i] = noise(xoff[i], yoff[i]) * 400;

      rect(x[i], y[i], 4, 4);  

     }  

    }

    ———————————————————–

  325. 匿名 より:

    >fukuさん

    ありがとうございます!

    問題なく動きます!

    初期値とsetup内に設定する値を理解していなかったようです。

    初歩的な質問にお付き合いいただきありがとうございました!!

  326. 機能別ヘ より:

    はじめまして。最近processingをいじりはじめたのですが

    webカメラを使用して光の軌跡で文字や絵を描くプログラムを組みたいのですが

    どのようにすれば良いのでしょうか?

    前のフレームとの輝度の差分を調べていけば良いのでしょうか?

    どなたか教えて頂けないでしょうか。

  327. fuku より:

    こんなのでましたけど

    建築発明工作ゼミ2008: Processing Webカメラを光センサとして使う <http://kousaku-kousaku.blogspot.com/2008/09/processingweb.html>

  328. はじめまして質問おねがいします。

    ライブラリの3Dにあるimageの項目を参考に下記1のような画像をつくりました。

    これを

    int radius = 1;

    float angle ;

    void setup() {

    size(1000, 1000,P3D);

    background(255);

    }

    void draw() {

    camera(0, 1000, 1000,

    0, 0, 0,

    0.0, 1.0, 0.0);

    background(0);

    for(float i=0 ;i<480;i+=1){

    for(float j=0 ;j<360;j+=3.6){

    angle = j;

    float rad = radians(angle);

    stroke(255);

    point(i*radius*cos(rad), i*radius*sin(rad));

    }

    }

    }

    このプログラムで描いたように、画像のy方向を円形にx方向を外側にむけて配置したいのですが、どのような手順でプログラムを描けばよいのかてづまっています。

    ご指導よろしくお願いします。

  329. 初めまして。Proce55ingは久しぶりで戸惑っております。ご存知の方申し訳ありませんがご教授頂けないでしょうか?

    Processingで特定のHTMLファイルを読み込み、Webブラウザ上のマウスカーソルをArduino+加速度センサで動かしてドラック・クリックの動作をさせたいと思っています。要するにマウスの動作をArduino+加速度センサの動きで代用させたいのですが・・・

    そこで、

    ・特定の.htmlファイルを読み込み、表示

    ・マウスカーソルをコントロールする

    ということはProcessingで可能なのでしょうか?

    よろしければご教授頂けないでしょうか・・・。お願い致します。

  330. はじめまして。最近Processingを使い出した者です。

    実行中のpdeファイルと同じディレクトリにある全てのファイル名を取得したいです。

    しかし、JavaのFile( “.” ).getAbsoluteFile().getParentFile()でカレントディレクトリを取得すると、

    実行中のpdeファイルの場所ではなく、Processing本体の場所を取得してしまい、目的の処理ができません。

    実行中のpdeファイルのディレクトリを動的に取得する手段はありますか?

  331. 匿名 より:

    お久しぶりです。質問させてください。

    ランダムで規定される一秒間の間に、

    aを3回押すと画像が表示されるプログラムを作りたいと思っています。

    たとえば、

    1秒間が規定されている間は、何かの画像が表示されており、1秒が経過すると消える。

    その画像が表示されて間にaを3回押すと別の画像が表示される。

    aが3回押されなかった場合は、aを押した回数はリセットされる。

    このようなプログラムを作ることは可能ですか?どなたかご教授願います。

  332. fuku より:

    >366

    こちらのBlogが参考になりそうですけど

    (CLOSED) Programming Web Audio » Blog Archive » Java Sound APIとProcessing (3)

    h

    ttp://www.sonasphere.com/lab/?p=76

    >367

    可能ですよ

  333. fuku より:

    >367 いつき さん

    可能ですけど・・・こんなのですか?

    ————————————————————–

    int WIDTH = 800;

    int HEIGHT = 600;

    float INTERVAL = 1000; // 1秒間

    float timestamp;

    int count;

    boolean intervalFlag;

    String imageFile1 = “Sunset.jpg”;

    String imageFile2 = “Winter.jpg”;

    PImage startImage;

    PImage hiddenImage;

    void setup(){

     size(WIDTH, HEIGHT);

     startImage = loadImage(imageFile1);

     hiddenImage = loadImage(imageFile2);

     timestamp = millis();

     count = 0;

     intervalFlag = true;

    }

    void draw(){

     if(intervalFlag){

      image(startImage, 0, 0);

      if((millis() – timestamp) <= INTERVAL){

       if(count >= 3){ // aを3回押すと別の画像

        image(hiddenImage, 0, 0);

       }

      }else{

       intervalFlag = false;

       println(“1秒経過”);

       count = 0; // aを押した回数はリセット

       //timestamp = millis();

      }

     }else{

      background(0);

     }

    }

    void keyPressed(){

     if(intervalFlag){

      if (key == ‘a’){

       count++;

       println(“aを押した”);

      }

     }

    }

  334. >fukuさん

    ありがとうございます。参考にしてみます。

  335. 匿名 より:

    こんばんは、またしても質問させて下さい。

    OpenGLにおいて2Dの基本図形(ellipse, rectなど)を滑らかに描画するにはどうすれば良いでしょうか?

    JOGLのdocには一応目を通しましたがさっぱりです。。

  336. 匿名 より:

    こんばんは。

    先ほどprocessing.orgでReference→Libraries→TopTypography / Geometryの

    NextTextから飛んでZIPファイルをダウンロードして、processingのライブラリに突っ込み起動させたのですが、sketchのImportLibraryにNextTextが見当たらないのです…

    お助けを…

  337. hirok より:

    >ライブラリが見つからない件

    ライブラリの配置場所のミスが原因と考えられます。

    processingのディレクトリ\libraries\nexttext\library\nexttext.jar

    になることが正しい配置

    ライブラリはlibrariesディレクトリの中に入れます。

    ライブラリ本体(.jar)と同名のディレクトリの中にlibraryディレクトリがあり、

    その中にライブラリ本体が入るようにします。

    ちなみにNextText同封のexamplesディレクトリは、nexttextとかにリネームし、

    processingのディレクトリ\examples

    の中に入れると良いでしょう。

  338. 匿名 より:

    >hirokさん

    ありがとうございます。

    教えて頂いた通りnexttextは無事使えるようになりました。

    しかし今度はTUIO_Processingをprocessingのディレクトリ/librariesに入れてexampleもprocessingディレクトリ/examplesに入れて起動させたのですが、examplesだけ表示されて、ImportLibraryにはTUIOが見当たりません…

    ちなみに同じ状況がpromidiにも起こっています。

    度々ではございますが、ご教授よろしくお願いします。

  339. hirok より:

    解凍したディレクトリをそのまま入れるのではなく、

    先に挙げました

    Processingのディレクトリ\libraries\xxx\library\xxx.jar

    となるように配置してください。

    TUIO_Processingの中にtuioディレクトリがありました。

    Processingのディレクトリ\libraries\tuio\library\tuio.jar

    となるのが正しい配置でしょう

  340. 匿名 より:

    音を視覚化するプログラムが欲しいんですが

    どなたか教えてくださいませんか?

    簡易版iTunesのビジュアライザみたいな…

  341. 匿名 より:

    >hirokさん

    ディレクトリの位置を教えて頂いた通り、セッティングしましたが結局表示されず。

    しかし、TUIOのexampleフォルダ名がlibraryフォルダにあるTUIO本体と同じ名前だったので、別個の名前を付けたところ、processingで表示されるようになりました。

    雑文ですが、結果報告でした。

  342. 匿名 より:

    前レスに似たようなのがあったんですね…
    失礼しました

    それをふまえて
    もう一度質問します
    周りの音を拾って、周波数によって
    色や四角や円を出すプログラムを作りたいと思います

    ライブラリはESSを使おうと考えています

    1から作っているので
    ご教示お願いします

  343. 匿名 より:

    >379 JOKEЯさん

    ESSではないですがminimを使った音響視覚化のやり方が載っています。

    http://yoppa.jpn.org/ssaw08.php?itemid=859

  344. ご質問

    目指している表現がありますexclamation ×2

    しかし、まだ入門レベルのためつまずいてまして

    もしヒントでもお教え頂ければうれしいですexclamation ×2

    私がやってみたい事

    1 キャンパスいっぱいに小さい四角を敷き詰めて

    2 写真をそこにのせて、(つぶつぶが1つで1つの色)

    3 すなのようにサーっとくずれたり、マウスと反応させたり

    ーーーーーーーーーーーーーーーーーーーーーーーーーー

    現在、どうにか「1」は出来ました。

    (スマートでないかもしれませんが、、)

    size(300,150);

    int Length = width*height;

    float[]X=new float[Length];

    float[]Y=new float[Length];

    colorMode(HSB,100);

    rectMode(CENTER);

    noStroke();

    for(int i=0 ; i<Length ; i++){

    X[i] = i % width;

    Y[i] = floor(i / width);

    fill(0,99,99);

    rect(X[i],Y[i],1,1);

    }

    ーーーーーーーーーーーーーーーーーーーーーーーーーー

    「1」では仮に赤い四角でテストして、無事しきつめられたと思い

    「2」に進みました...が。。。

    PImageに写真を読み込んで

    pixelsあたりの機能を利用してどうにかつぶつぶに色をのせたいと挑戦しているのですが

    つまずいております。

    ーーーーーーーーーーーーーーーーーーーーーーーーーー

    「3」ではどんなことをしようか考えておりませんが

    この「2」までができれば表現の準備完了と感じてます。

    「2」のところについて、お教え頂ければうれしいです。

  345. 匿名 より:

    > 2000人の狂人さん
    ありがとうございます
    かなり参考になりました
    minimのほうが汎用性高いですね

  346. じっく より:

    ご質問です!

    jbox2dを使ったことがある方いらっしゃいませんでしょうか?

    JAVA自体が初心者なため、どこにインストールしていいやら困ってます。

    どなたかご存知の方、教えていただけないでしょうか??

  347. hirok より:

    >モミー・テールさん

    原型でよろしければ。

    画像PImage.jpgを入れてくださいね。

    PImage image;

    int length;

    Pix[] pixs;

    void setup() {

    image = loadImage(“PImage.jpg”);

    size(image.width, image.height);

    length = width * height;

    pixs = new Pix[length];

    for (int i = 0; i < length; i++) {

    pixs[i] = new Pix(image.pixels[i],(i % width),(i / width));

    }

    noStroke();

    }

    void draw() {

    for(int i=0;i<length;i++){

    fill(pixs[i].col);

    rect(pixs[i].x,pixs[i].y,1,1);

    }

    }

    class Pix {

    color col;

    int x;

    int y;

    int baseX;

    int baseY;

    Pix(color col,int x, int y){

    this.col = col;//色

    this.x = x;//現在の場所X

    this.y = y;//現在の場所Y

    this.baseX= x;//元の場所X

    this.baseY = y;//元の場所Y

    }

    }

  348. hirok より:

    ただ表示するだけだと、逆にわかりにくいのかなと思いました。

    つぶつぶを少しずつずらすようにしました。

    メニューのTools -> AutoFormat で読みやすくしてくださいね。

    PImage image;

    int length;

    Pix[] pixs;

    void setup() {

    image = loadImage(“PImage.jpg”);

    size(image.width, image.height);

    length = width * height;

    pixs = new Pix[length];

    for (int i = 0; i < length; i++) {

    pixs[i] = new Pix(image.pixels[i],(i % width),(i / width));

    }

    noStroke();

    }

    void draw() {

    for(int i=0;i<length;i++){

    pixs[i].rand();

    fill(pixs[i].col);

    rect(pixs[i].x,pixs[i].y,1,1);

    }

    }

    class Pix {

    color col;

    int x;

    int y;

    int baseX;

    int baseY;

    Pix(color col,int x, int y){

    this.col = col;//色

    this.x = x;//現在の場所X

    this.y = y;//現在の場所Y

    this.baseX= x;//元の場所X

    this.baseY = y;//元の場所Y

    }

    void rand(){

    x =x+int(random(-1.5,1.5));

    y =y+int(random(-1.5,1.5));

    }

    }

  349. hirokさま

    ご丁寧な返信いただきましてありがとうございますexclamation ×2

    とっても感謝してますexclamation ×2

    無事に準備整いこちらをベースにいろいろな事をして行きたいと思います。

    今回、まだ僕自身は前進してませんが

    視界をクリアにしていただきまして

    実は?な部分もありますが

    僕にとってはとてもヒント含まるご返信だったので

    どんどん身に付けて前進していきたいと思います。

    ありがとうございました富士山

  350. hirok より:

    >JMmyronのUnsatisfiedLinkError対応

    there is a folder called “Extra DLLs” – those are DLLs that JMyron depends on so make sure they’re copied into your system’s DLL search path – such as the Processing root directory, or even C:\windows\System32.

  351. 匿名 より:

    質問お願いします!!

    Webカメラ等を用いて撮影したライブ映像をフレームレートを変えて重ね合わせて表示することってできますか?映像をディレイさせ、残像のようなものを作りたいと思っていますが、方法がわかりません。

    また、2種類のライブ映像にも同じことができますか?

    質問に不足があるかもしれませんが、教えて頂きたいです。

    よろしくお願いします。

  352. サダム より:

    >>371

    答えられていないようなので、解決してるかもしれませんが一応レスを・・・。

    http://processing.org/reference/hint_.html

    processingのOpenGLには、hint()というメソッドが用意されていて、ここでアンチエイリアスの掛かり具合を調整できます。

    デフォルトでは2Xのアンチエイリアスが掛かってますので、アンチエイリアスを切ることや、4Xにしてより滑らかにできます。

  353. サダム より:

    >>390

    ProcessingのライブラリにVideoライブラリというのが存在します。

    これを使えば簡単にWEBカメラの映像を取り込むことができます。

    http://processing.org/reference/libraries/video/Capture.html

    このページではCapture myCaptureが一つですが、ここでは2つにしましょう。

    Capture myCapture1;

    Capture myCapture2;

    というように。

    もっといっぱい使いたい場合は配列にしても良いでしょう。(重くなりますが・・・)

    で、Videoライブラリにはキャプチャのフレームレートを操作するメソッドがあります。

    http://processing.org/reference/libraries/video/Capture_frameRate_.html

    これでそれぞれのフレームレートを変えればキャプチャのタイミングは変わります。

    ただし、カメラ自体のフレームレートを超えても意味無いので注意してくださいね。

    最後に、最初のリンクの描画のところでimage()メソッドを使っている(PImageを使ってる)のがミソです。

    PImageにはbrend()という簡単に2つの画像を重ね合わせることができるメソッドがあります。

    http://processing.org/reference/blend_.html

    これらを組み合わせればバッチリです!

    ただ、やっぱり動画を何個も何個も描画したら重くなるのでご注意ください。

  354. いけの より:

    大きなデータをpde内に定義すると,64kを越えたといってコンパイルできなくなります.そこで,テキスト形式でデータを書き出して

    String lines[] = loadStrings( fname);

    int a = int( lines[line++]);

    とやっています.

    これはこれで動きはするんですが,もっとましな方法はありませんか?

  355. hirok より:

    呼び出し方、データ構造、パフォーマンスなどいろんな観点がありますが。

    どう、「まし」にしたいでしょうか?

    ProcessingのloadStringsを使う方法は、手軽に使えますし、

    わりとスタンダードな方法だとは思います。

    ちなみに、Processingの開発者であるben fryの

    zipdecode[http://benfry.com/zipdecode/]

    でも利用されています。

    (ソースコードは書籍ビジュアライジング・データに載っています。)

  356. いけの より:

    ビジュアライジング・データを読んで見ます.

    マシという言葉が悪かったですね.漠然と,なんらかのloaderクラスがあって,みんなそれを使っているんじゃないかと予想していたのです.

    ありがとうございました.

  357. 匿名 より:

    >>サダムさん

    ありがとうございます。

    返事遅れてすみません。

    videoライブラリ自体は使ったことあるんですが、そんな使い方知りませんでした。

    とりあえず試してみます。

    成功するか、わからなくなったら報告させてもらいます。

    今後とも何かとお世話になるかもしれませんがよろしくお願いします。

  358. 匿名 より:

    はじめまして。

    midi入力を扱いたく色々調べているとpromidiにたどり着きました。

    しかし、最近ずっとサイト(www.texone.org)が落ちている(?)ようで

    ダウンロードできません。

    どなたか宜しければどこかにミラーリングしていただけないでしょうか?

    宜しくお願い致します。

  359. サダム より:

    >> 397

    – themidibus

    Handles real time inbound/outbound MIDI in a simple way.

    http://smallbutdigital.com/themidibus.php

    こんなのもあるようです。

    ガチるなら、

    http://www.ruimo.com/howto/java/midi/

    javaはデフォルトでもMIDI扱えるので、トライしてみるのも手です。

    最初はちょっとハマりやすいですが・・・。

  360. 匿名 より:

    RWMidiが使いやすくて好きです。

    http://ruinwesen.com/support-files/rwmidi/documentation/RWMidi.html

    ちなみにmmjを入れてやらないと動きませんでした。。

    http://www.humatic.de/htools/mmj.htm

    1.0.5のアップデートで改善されたんですかね?

  361. 匿名 より:

    はじめまして

    まだ使い始めたばかりの初心者です。

    バネのアルゴリズムを使ってやりたい表現がありますがつまずいています。

    1)三種類の長方形を異なる組み合わせごとに異なる種類のバネで結ぶ。a-b,a-c,b-c

    2) 黒い長方形を配置して三種類の長方形と黒い長方形は重ならない。

    ヒントなど頂けるとありがたいです。

    よろしくお願いします。

  362. NatcH より:

    >>400 : かつ さん

    1) は、ばねのインスタンスを生成する際に両端の長方形の組み合わせによって

    ばねの特性(ばね定数、自然長・・・)を与えてやれば出来るのではと思います。

    2) は、現在ばねのアルゴリズムをどのような方法で実装されているのかによってやり方が変わってくると思いますが、

    基本的には、長方形の位置を更新する際に黒い長方形との衝突判定をすることになります。

  363. 匿名 より:

    NatcHさん

    丁寧な説明ありがとうございます。

    すぐには出来ませんがなんとか出来そうですわーい(嬉しい顔)

    ありがとうございました。

  364. 匿名 より:

    質問お願いします。

    “unexpected token:200″とエラーが出るのですが、どういったエラーなのかわかりません。

    よろしくお願いします。

  365. hirok より:

    >403

    エラー名だけ出されてもはっきりした原因は分かりませんが。

    プログラムミスが原因です。

    200って数字をどこかで使ってますよね。

    その前後が原因だと思います。

  366. 匿名 より:

    >>hiokさん

    ご説明ありがとうございます。

    コード貼ります。

    import hypermedia.video.*;

    OpenCV opencv;

    int count = 0;

    color B = color(0,0,0);

    color W = color(255,255,255);

    void setup() {

    size( 320, 240 );

    opencv = new OpenCV( this );

    opencv.capture( 320, 240 );

    }

    void draw() {

    opencv.read();

    opencv.convert(OpenCV.GRAY);

    opencv.threshold(80);

    image( opencv.image(), 0, 0 );

    }

    void keyPressed(){

    color [] px = new int[9];

    for (int y = 1; y < height-1; y++){

    for (int x = 1; x < width-1; x++){

    px[0] = get(x-1,y-1);

    px[1] = get(x,y-1);

    px[2] = get(x+1,y-1);

    px[3] = get(x-1,y);

    px[4] = get(x,y);

    px[5] = get(x+1,y);

    px[6] = get(x-1,y+1);

    px[7] = get(x,y+1);

    px[8] = get(x+1,y+1);

    if((px[0] == W) && (px[1] == W) && (px[2] == B) && (px[3] == W) &&

         (px[4] == B) && (px[5] == W)&& (px[6] == B) && (px[7] == W) && (px[8] == W)){

    count++;

    }

    }

    }

    }

  367. こんばんわワイングラス

    きっと初歩的な事でつまづいてしまいまして

    ご質問させていただきました。

    ——————————————————-

    四角を複数つかって円状に配置しようと思いました。

    Nという変数を用意して

    個数をこの値で扱える様にしてみようと思いました。

    例えば

    このNの数値が

    50や90の時は円状になるのに

    80や100の時は円状にならない

    のです。

    私としては1回転分の360度をNで割って

    その分づつ、づらしているつもりで

    どんな個数でも円状にしているつもりなのですが、、

    基本的な事がわかっていない可能性大ですが、、、

    もし、ご存知の方がいらっしゃいましたらよろしくお願いいたしますexclamation ×2

    (画像は円状にならない状態のものです)

    ——————————————————-

    size(800,800);

    colorMode(HSB,100);

    background(20);

    smooth();

    stroke(10,100,100,50);

    noFill();

    translate(width/2,height/2);

    int N=50;

    for(int i = 0 ; i < N ; i++ ) {

    pushMatrix();

    rotate(radians((360/N) *i));

    rect(0,200,100,100);

    popMatrix();

    }

  368. 匿名 より:

    >1回転分の360度をNで割ってその分づつ、づらしているつもり

    変数の型(intとfloat)に注意しながら、実際にそうなっているか

    確かめてみるのが一番だと思います。

  369. タナカさま

    ご返事ありがとうございますexclamation ×2

    Nの変数の型を float にしたら

    円状にならなかった

    N=80 や N=100 でも円状になりました!

    ありがとうございましたexclamation ×2

    Nには整数しかいれていないのですが

    型をfloatにすることで

    結果がかわるのですねexclamation

    私にはまだ謎がたくさんですが

    がんばりますexclamation ×2

  370. hirok より:

    >408

    Nの型をfloatにするのは、プログラムとしては余り良くないかも。

    50等分するから整数であって、50.0等分するわけではないから。

    なので、

    rotate(radians((360/N) *i));



    ?rotate(radians((360.0/N) *i));

    ?rotate(radians((360F/N) *i));//数値の後ろにFを付けると360はfloatだと解釈される。

    ?rotate(radians((360/float(N)) *i));//p5の変換メソッドfloat()を使う。

    ?rotate(radians((360/(float)N) *i));//キャスト(float)を使う。

    等にした方がいいのではないかと思います。

  371. いけの より:

    360*i/Nにすればいいだけかも?

  372. 匿名 より:

    大事なのは、intとintの割り算で、小数部の切り捨てが起こる事と

    intとfloatが混ざる計算では、明示的な型変換キャストを使えば

    良いと言うことを理解する事だと思います。

  373. みなさま ありがとうございますexclamation ×2

    hirokさま

    今回のことから派生して、Fをつけるなど知らなかった事を知る事ができました!

    ありがとうございました。

    いけのさま

    確かに教えて頂いた方法でもできました!

    360/N で角度の差をだしてから i をかけたい気分がモリモリでしたので

    ここは思いつきませんでした!

    タナカさま

    実は、、ハイレベルでついていけていませんが、ありがとうございます!

    一筋縄にはいかないことを知れました!

    —————————

    私的にまとめさせていただくと・・・

    Nには整数を入れるから、型は int !

    ではだめで、

    その後に使う際の計算 (360/N)  の結果が

    整数か小数かを把握する必要がある

    というふうに、ぼんやりですが感じました。

    まだまだはっきりつかめていない感がありますが

    結果オーライにせず、クリアできる様にがんばりまーす!

  374. Ry@ より:

    はじめまして。大学でProcessingの存在を知り、初心者ながら楽しんでいます。

    いま、マウスの位置で長さの変わる複数のバーをfor文で作っているのですが、起動するたびにそれぞれのバーにランダムな値を与え、伸びる比率を変えられないかと悩んでいます。

    必要な数のrectとrandomをつくればいいだけの話かもしれませんが、もしスマートにできる方法があればご教授頂けないでしょうかm__)m

    以下、ソースです。画像は1枚目が現在で、2枚目が理想です。

    ****

    void setup(){

    size(400,400);

    colorMode(HSB,100);

    background(100);

    noStroke();

    }

    void draw(){

    fadeToWhite();

    for (int i=15 ; i<width ; i+=50){

    fill(0,100);

    rect(i, 400, 20, -mouseY);

    }

    }

    void fadeToWhite(){

    rectMode(CORNER);

    fill(100,50);

    rect(0,0,width,height);

    }

  375. fuku より:

    スマートにできる方法はわかりませんが

    randomメソッドとnoiseメソッド使ってみました

    //———————————————————

    void setup(){

     size(400, 400);

     colorMode(HSB, 100);

     background(100);

     noStroke();

    }

    void draw(){

    // fadeToWhite();

    // for (int i=15 ; i<width ; i+=50){

    //  fill(0,0,0);

    //  rect(i, 400, 20, -mouseY);

    // }

    }

    void mouseMoved() {

     fadeToWhite();

     for (int i=15; i<width; i+=50){

      fill(0, 100);

      //rect(i, 400, 20, -(random(0, mouseY)));

      rect(i, 400, 20, -(noise(random(mouseY)) * height));

     } 

    }

    void fadeToWhite(){

     rectMode(CORNER);

     fill(100, 50);

     rect(0, 0, width, height);

    }

  376. Ry@ より:

    ありがとうございます!noiseってこういう風に使えるんですね〜

    fadetoWhiteのfillを(100,100)に変えたらイメージに近くなりました(^o^)

    本当にありがとうございますm__)m

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です