ほねっとのブログです。プロジェクトとか大好きです。八神はやてが大好きな管理人です。ないブログに表示されています。新しい記事を書く事で広告が消えます。丸ビルで竹尾という紙の会社さんがあるのですが、その竹尾さんが中心となって紙の展示会を行っています。そこで展示されている、紙を作る「抄紙機(しょうしき)」の制作に関わらせていただきました。紙を作るパルプと呼ばれる原料と水から紙ができ、紙が再び水に還っていく様、さらにまた紙として再生される様を感じていただければとおもいます。会場では説明&機械の見守り役として私かもう一人の制作メンバーが立ってますので、お気軽に声をかけていただければ裏話までお話ししますよ^q^東京で4/15~4/18、大阪でも展示を行いまして5/27~5/29と、出張しての展示も行います。会期は合わせて一週間程度で短いものですが、毎年数万人の方に来ていただいてる大規模イベントです。平日であるにもかかわらず、午前からずっとたくさんの方にいらしていただけました。「はやてちゃんぼっとまだ?」という発言が多かったので作ってしまいました。(bot)とは...プログラムによって自動的に発言するキャラクターのことということで、はやてちゃんぼっとのアドレスはhttp://twitter.com/YagamiHayatebotです、よろしくおねがいします☆まだ発展途上なので暴走するかもしれないので甘く見てください><ぼっとを作るよはやてにちなんで、8810秒でプログラミング!C++で作って、タスク常駐プログラムにしたいな~と思ってVC++起動。!どうやってやるのかわからない!8810秒の制限があるので、いちから調べる時間はなかったので、諦め。・・・Flashしかないですよね!ってことで、Flashでちゃきちゃきーっとコーディング。発言のリストをXMLで作ろうと思ったんですが、なぜかXMLで躓いてしまったので、いまはコードに直うちです。main.asはパスワード入力ボックスとスタートボタンがおいてあって、もうひとつ発言をまとめたクラスがあります。はやてちゃんぼっとの本体のコードをのっけてみましょう。trace);trace(urlReq.data);trace(urlReq.url);loader.load(urlReq);}}}・・・なんと見づらい!説明しづらいのです・・・で、これができたので、Flashで走らせてみたのですがなんせ常時プログラムが起動していて間違って終了させてしまうこともしばしば...ということで、C++を再起動!C++でFlashを再生して、そのプログラムを隠せばいいんですね。最初、MFCからActiveXを操作して再生しようとしたのですが、うまくいかない。1時間ぐらい格闘...諦めかけていた時、@__parkさん(http://kataho.net/about.html)から助け舟!「IEコンポーネントブラウザにしてしまうってのは?」それだ!ということで@__parkさんに手取り足取り教えてもらいながらIEコンポーネントを表示するプログラムができました。(頂いたというのが正しいかも)さらにウィンドウを表示させない設定にして完成!タスク常駐アイコンも表示されなくなって予想以上の出来でした。COMMENT[2]TwiconPic高速化のために前のエントリで書きました、TwiconPic、大きな問題点として対象となる絵を描画するまでに時間が20秒程度かかるという点がありました。原因として、1.元になる絵の画素(約1万個)それぞれの色に近いアイコンを探す際に、画素1つ1つにおいて、すべてのアイコン(約500個)に対して画素距離求めるため、計算が非常に時間がかかる(約10秒)2.アイコンをポリゴンに貼りつけてPapervision3Dで1つ1つ表示していったために、メモリの確保やポリゴン(約1万個)の描画に時間がかかる(約15秒)&画面スクロールや拡大に時間がかかるというのがありました。このままではアイコンの読み込みが終わった後、アイコンで絵を描くまでに30秒近くプロセスを占有してしまい、Flashどころかブラウザも止まってしまうのでいけません!そこで、対処法をLarkさん(http://d.hatena.ne.jp/Lark_mp/)に相談したところ、1.について以下の方法を適用してみました。1.アイコン1つ1つには画像全体の画素のRGBそれぞれの平均値があります。それをRについてバケツソートを行います。2.バケツソートができたら、元画像の対象点の画素のRのバケツに入っているアイコンについて最短距離を求めます。3.最短距離が出たら対象点の画素のR±最短距離の範囲のバケツに入っているアイコンについてRに近いバケツからチェックして最短距離を更新していきます。4.真の最短距離がでたらおしまい!こうすることで、0≦R<256の範囲でこれまで計算していたのがたとえば100≦R≦110とかの短い範囲で計算が終わったりできて高速化ができる寸法です!言葉で説明しにくいー><これをやることで、10秒かかっていた計算処理がソートの時間も込みで2秒弱に収まるようになりました。よかったよかった!そして、問題2.のほうですが、単にPapervision3Dをやめて普通のSpriteで描画すればいいだけなので楽ちん!とおもったのですが、あれ?時間がかかる?私が引っかかったところはメモリの確保時間の部分にありました。Bitmapという風にデータを作っていました。これでやると15秒→12秒程度と、大して変わらない...どういうことかなと考えてみると、BitmapDataはすでに作ってあるのでこれを新たに作る必要はないわけです。Bitmapとすることにしました。すると3秒ぐらい!はやーい!ということで素早い表示が可能になりまs・・・いや、これでもまだ不自然です。次回はプロセスが独占することなく、描画スレッドをきちんと働かせて順次アイコンを表示するようにしていこうと思います。あと、アイコンが綺麗に動くようにしたいです。COMMENT[0]TwiconPic前回の記事でTwitterのアイコンの画像情報から空間展開してみました。その情報をもとにしてちょっとしたものを作ってみました。下のかわいいイラストをご覧ください。Point様のフリー素材をお借りしました。このはやてちゃんとTwitterのアイコンがどう関係があるのか。前回の実験から、Twitterのアイコンの色の偏りはユーザによってかなり異なることがわかりました。いうことは、ユーザとアイコンの色の偏りというのは固有の関係といえるのかもしれません。ユーザそれぞれの作ってきたフォロワーをユーザそれぞれのパレットとして考えてみることにしました。前置きはこれくらいにして作ろうとしてるものの現状です!そう、イラストをtwitterのアイコンで描画します!遠目でわからないのでFlashの機能のズームをすると、こんな感じになっているんですねー。私のtwitterアカウント、いくつかあるのですが、それぞれで出来上がる絵が異なります。黄色がすごく多いアカウントや、全体的にばらけているアカウント、それぞれ向き不向きがあっておもしろいです。今のところ、2つ問題があってネットに公開することができません。1つが色の検索速度が遅い、もう1つがポリゴンの数が多すぎて描画が重くて遅いという問題です。)カウンターアクセス。