まどかの | 自 | 己 | 満 | 足 | 日記 |
0170
|
2002/03/31(日)■ | |
今日もファミコン三昧(^^; | ||
はい、今日は毎週恒例の彼女と遊ぶ日で、これまた毎週恒例のファミコン三昧です(^^; 今日はヤフーオークションで購入したファミコン用のロボット(ジャイロセットとかのやつね)を眺めたり(<眺めるだけかよ!)最近ハマっているボンバーキングや、グラディウス、スクーン、スペランカー、ソロモンの鍵、レッキングクルー、バルーンファイト、ゲゲゲの鬼太郎妖怪大魔境、タッグチームプロレスリング、マグナム危機一髪、マイクタイソンパンチアウト、マリオUSAに忍者ハットリくんと盛り沢山(^^; そしてお昼には私の大好物である「カルボナーラ」を彼女に作ってもらって「ウマー!!」と言いながら食べてテレビを見たり…… けっこう充実した休日を過ごしました(^^ で、昨日買ってきた長岡のお土産の笹だんごを食べて、夕食を頂いて、部屋に帰りました。 そして、部屋に帰ってからは、ちょっとまた自力3Dに興味が湧いてきたので、とりあえず自力3Dのサイトを回ったりして、どうやったら自力3Dでカッコイイデモが作れるのかを考えてました。 以前はC++でベクトル(Vector)クラスや行列(Matrix)演算クラスを作って、ワイヤーフレームだけどなんとか3D表示するまでやって、ほんとはテクスチャを貼るまでやりたかったのですが、暇がなかったのと、どうやってやったらいいのかがわからなかったので、断念しました(j−j で、今一度自力3Dをやってみようと興味が湧いてきているのですが、基本的に3Dの表示って、まず、表示するオブジェクトごとにローカル座標系ってのが存在して、それぞれのオブジェクトを構成するパーツはローカル座標系の原点を中心にローカル座標値で配置され、そしてそのオブジェクトは3D世界全体の位置を表すワールド座標系にローカル座標系の中心(原点)を配置するという形で表されて、ローカル座標をワールド座標に変換するには、ワールド座標の原点から各オブジェクトの中心がどれだけ離れているかという変換(平行移動や回転など)をオブジェクトを構成する各パーツの頂点座標それぞれにかけてやることで実現できますよね? で、ワールド座標系で表された物体を実際に画面に表示させるには、まず視点の位置を決めて各オブジェクトにカメラ(視点)行列をかけて、視野角や視点からスクリーンへの距離などを盛り込んだ射影(プロジェクション)行列をかけてやると、あたかも3Dの世界をある視点から眺めている風景(?)を画面に表示させることができます。(かける順番が違うかもしれませんが(^^;) わ、なんとなーく説明的に書いてみましたが、訳わからんですな(^^; かなりはしょって書いているので全然理解できないかもしれませんが、まあこんな感じで表示できる(はず)。 で、3D表示のほとんどの部分は座標計算で、各オブジェクトの頂点の座標にワールド変換行列とかカメラ行列とかを掛け算してやればいいものなので、とりあえず座標を管理するクラスと、行列演算が簡単にできるクラスを作ってやれば、あとはオブジェクトのデータを作るだけで、ワイヤーフレームでの表示はできます。 あ、ワイヤーフレームで描画するにはAPIのLineとかを使うより、DIBにブレゼンハム等の自力直線描画ルーチンで描いた方がだいたい速いので、それの実装もする必要があります。 あとは、テクスチャマッピングなのですが、これって良く考えたら、拡大縮小や自由変形(アフィン)で画像をある領域(ポリゴン)に描画してるだけなんですよね。まあ、奥行きを考えてパースペクティブコレクトとかも考えないといけないんですが、基本的にってことで。 仕事で自力拡大縮小や、アフィンを勉強してやっと気付きました(^^; 我ながら応用に気付く遅さに驚かされます。 というわけで、テクスチャマッピング実装への糸口が見出せたわけですが、四角形ポリゴンへのテクスチャマッピングはできそうでも、三角形ポリゴンへのテクスチャマッピングってどうするんだろう? 普通にラスタースキャンしていって、ラスター方向にある頂点との対角線上で描画を打ち切ったら、三角形になるか…… たぶんそんなところだろう。まだよくわかってません(^^; あと、各ポリゴンの頂点の順番ってどうやって決めているのかなぁ。まあ計算で順番を求めるんだろうけど、今ぱっとやり方が思いつかないので、また今度考えることにします。 ああ、でも考えれば考えるほどやることが複雑な気がしてきました。いや、実際複雑なんですが(^^; まだ始めるかどうかも決まっていませんが、当面の自力3Dの目標は、テクスチャマッピングが施された物体がクルクル回ってるってのにしようと思います。 それができたら、今度は親子関係のある多間接物体とか、人を歩かせるとかしたいなぁ。 それが、いつできるかは想像できませんが(^^; ああ、なんかとりとめのない話になってしまいましたが、まあ自力3Dがやりたくなって、それを実現するにはどうすればいいかという私の覚書程度の認識で読んでくださいね。 ってなわけで、今日はおしまい。 明日は名古屋の会社でお仕事です。 それでは、おやすみなさーい。 |
0169
|
2002/03/30(土)■ | |
帰ってきました(^^ | ||
えー、今日はちょっと早めに起きて、ホテルの一階のレストランで、朝食バイキングをのんびり楽しもうと思っていたのですが、昨日遅くまで作業をしていたのと、ドキドキしてなかなか寝付けなかったのがたたってか、起きたらお客様との約束の時間ギリギリではないですか!? なので、急いでスーツに着替え、チェックアウト。そして即座にタクシーで現地に向かいました。 幸い、時間にはギリギリ間に合ったので良かったのですが、朝飯抜き…… これは私が悪いの?<そうです で、ちょっとしたテストをさせて頂いてからシステムとアプリケーションの取り扱い説明に。 このシステムは半分以上私が作ったものだし、取り扱い説明も他のお客様のところで何度もやっているので、昨日ドキドキする程のことはほとんどないのですが、やっぱり初めての一人きりで、味方(?)がいないのには緊張します(^^; そして、2時間ほどで取り説は終了し、午後からは実際にお客様にシステムを触って頂いて、わからないことがあったらアドバイスをするという段取りで、お昼に行きました。 お昼と言っても、近くに喫茶店も無いし、車でどこかに乗せてってくれる人もいないので、そこらへんをブラブラ歩いて、コンビニを探してみました。 が、周辺にコンビニはなく、けっこう離れた場所にスーパーがあったので、そこでパンと飲み物を買うことに。 で、公園かどこかのベンチで食べようかと公園を探して、ベンチのところまでは来たのですが、どうも昨日の夜に雨が降ったらしく、濡れていて座れません(j−j なんかいぢわるされているみたい…… ついてねぇ、くそぅ。 しかたないので、現地の方向に戻りながらパンをかじり、昼食終了。 で、現地の前まで戻ってきたのですが、昼からの約束の時間にはまだだいぶ時間があり、中に入って一人で待っているのもなんか気まずいので、しばらく時間つぶしに駅までの道を確認することにしました。 昨日、今日と現地まではタクシーで来たのですが、意外と駅から現地までは距離が無いので、帰りは歩いて帰ることにしました。 そして、時間になるまで駅の方まで歩いて道順を確認し、現地に戻りました(^^; で、昼からの作業(って言っても、ほとんど見てるだけなんですけど(^^;)も4時頃に終了し、これで全作業無事終了となりました(^o^ ふぅ。何事も無く(いや、あったけど)無事に終えることができて良かったです(^^; というわけで、私の初めてのおつかい的な出張も終了し、駅まで歩いて彼女へのお土産を買って、新幹線で帰りました。 行きは3時間ほどで着けたのですが、帰りには4時間かかってしまって、けっこう疲れました(^^; 長時間電車に揺られるのは何もしていませんが、疲れます…… で、名古屋に着いたのですが、時間も遅く、帰りのバスが40分待ちとかだったので、歩いた方が早いと思い、そのまま歩いて部屋に帰ることにしました。運動しないとね(^^; そして、途中でがんばった自分への御褒美として、ココイチでカレーを食べました。フライドチキンカレー400グラム甘口にチーズうずら卵フライミックスで(^^; うーん。やっぱりココイチのカレーは美味しいです(^o^)/ というわけで、部屋に帰ってきましたが、疲れたのでこの日記を書いて今日はおしまいにします。 明日は、彼女と遊ぶ予定です。お土産も渡さないとね。 それでは、おやすみなさい。 |
0168
|
2002/03/29(金)■ | |
新潟にやってきました | ||
はい、今日は新潟に出張の日で、8時3分の新幹線ひかりと東京駅から乗換えで、MAXあさひという新幹線に乗って新潟県の長岡市というところにやってきました。 ここでちょっとびっくりしたのが、MAXあさひはなんと2階建てで、ホントは2階に乗りたかったのですが、満席で1階の自由席に座りました(j−j しかも喫煙車しか空いてなくてちょっとご不満。 で、3時間ほどで長岡の方に着けたので、のんびりお昼をとってタクシーで現地に向かいました。 今日は私が担当しているあるシステムのパソコンの設置と、お客様のパソコンへのアプリケーションのインストール作業。 作業自体はそれほど大した事無いのですが、今回はちょっとトラブルがありまして、お客様のパソコンにはOSにWindows2000を指定してあったのですが、なんかMeから2000にアップグレードしたもので、しかもあるデバイスの2000用のドライバがなくて正常に動かないのです。うう、困った。 しかも、昨日アップグレードしてたときに、一度誤ってインストール途中で電源を切ってしまったとか…… おいおい(^^; とりあえず、アップグレード用のCDから再インストール。 数時間後インストールは完了するが、やっぱりドライバが見つからないので、結局今日はそれ以上作業が進まず、いったんホテルにパソコンを持ち帰らせてもらうようにして頂いて、色々試してみることにしました。 というわけで、ホントはホテルでのんびり電子工作の本を読む予定だったのですが、OSのインストール作業をすることに……(j−j で、ホテルに帰って早速再インストール。このパソコンはパソコン教室用に確保してあったノートパソコンで、重要なデータは何も入ってないから、好きにしていいとの事なので、とりあえずパーティションの作り直しからやってクリーンインストールをしてみました。 数時間後インストール作業は終了し、2000は正常に立ち上がるのですが、やはりドライバが見つからないので、うちのアプリケーションは正常に実行できません。 ちなみに、このノートパソコンのメーカのHPでドライバを探してみましたが、どうも見つからず、断念。 で、最悪元のMeに戻して、うちのアプリケーションをインストール(Meでも動作はしますが、推奨はしていないのです)しようかと、試しにノートのバックアップCD-ROMからMeの復旧作業を試みるが、そのバックアップCD-ROMは「ゴースト」という初期のハードディスクの内容を丸ごと圧縮して保存しておき、復旧するときはその圧縮したハードディスクのイメージを展開して復旧するという手法を使ったもので、復旧にはゴーストの展開プログラムを実行するのですが、いざ実行してみると、英語で「NTでは動きません」のメッセージが…… ガーン! Meにすら戻せないなんて…… ほんとに最悪の事態になってしまいました(j−j で、こうなったら、お客さんに正常に動作するWindows2000のパソコンを用意してもらって、またここにインストール作業をしにくるしかないのですが、そんなことしたらお金もかかるし、面倒極まりないので、なんとかしようと、念のためにといつも出張には持ってきている色々なドライバの入ったCD−Rから、それらしいデバイスのドライバを試してみました。 するとどうでしょう。見事に一致するドライバが見つかったではないですか! これは奇跡か!!<大げさ 教訓:「出張にドライバCDは必ず持ち歩こう。何があるかわかりませんから……」 というわけで、そのデバイスも正常に動いているようだし、うちのアプリケーションもちゃんとインストールできて、正常に動いているようなので、これで万事解決です(^^; ああ、もう日付変わってるよ…… 残業扱いになるのかなぁ。これ。 とかなんとか考えながら、明日の用意をして、お風呂に入ってから眠りについたのですが、明日は上の会社の人もいなくて、初めて自分ひとりでお客様相手に、取り扱い説明とかの作業をするので、ドキドキしてなかなか眠れませんでした(^^; というわけで、明日に続きます。 |
0167
|
2002/03/28(木)■ | |
あうう、時間ギリギリ……(j−j | ||
えー、今日はデバッグやら出張の準備の最終確認やらをやってて、なんだかんだで夜も遅くまでかかってしまいました(j−j 明日は8時3分の新幹線で、新幹線を乗り継いで新潟の長岡まで行ってきます。 というわけで、今日はこれからゆっくりお風呂に入って寝まーす。 それでは、おやすみなさい。 |
0166
|
2002/03/27(水)■ | |
なんか寒くなりましたね | ||
えー、今日は雨が降って曇りで、ちょっと寒かったですね。 今日は一日デバッグ。NuMegaのBoundsCheckerでトレースしたり、じっくり読み直したり、テストしたり。 けど、ちゃんと動いているっぽいので、やっぱり原因不明。 もしかしたら、環境設定の方で不備があるのか、使用するデータがおかしいのか。ちょっとわかんないです。 と、仕事の話は置いといて、今日は赤外線でリモコンキャタピラカーの御披露目をしました。 けっこう受けは良く、満足な結果でした(^^; デモってると、やっぱり赤外線の受光部の受光範囲が狭いのか、うまく操縦できなかったので、社長のアイディアで、アルミホイルを使って、簡易反射板を受光部のところに取り付けると赤外線を受けやすくなりました。 うむ、この方法は使えそうだ。今度ちゃんと反射板を作ることにします。 で、今日はなんだかみんな早めに帰ってしまったので、私もちょっと早めに帰りました。 部屋に帰ってからは、なんとなく自力3Dについて調べたくなったので、ネットサーフィン(もう死語?)してました(^^; 今度は、MMXとかも使って、高速なものがつくりたいなぁ。 というわけで、今日はこんな感じで。 明日もデバッグして、明後日から新潟に出張してきます(^^; それでは、おやすみなさい。 |
0165
|
2002/03/26(火)■ | |
今日はちょっと御満悦(^o^) | ||
はい、今日は、出向日なので出向先での作業なのですが、今日は、昨日調べていたMMXを使って、ある処理を高速化させる作業をしていました。 できるかどうかはわからなかったのですが、結果として処理時間を今までの約半分にまで短縮させることに成功しました。 やっている処理は、1ピクセル2バイトで格納されている画像データを上位バイトと下位バイトを2つに分けて、別の配列に格納するという処理です。 これをMMXのパック機能とWORD単位でシフトできる機能とかを活用し、64bitのレジスタを2つ使ってパックをし、8ピクセル同時に処理をするというやり方で高速化を図りました。 処理的には8倍なのに、速度的には約2倍くらいにしかならないのは、そういうものなんだそうです。ちょっと疑問が残りますが、配列のポインタを8バイト境界とかにそろえれば、もうちょっと速くなるかなぁ。 なにはともあれ、処理時間を約半分にすることができたので、がんばった甲斐がありました(^o^ 上の人も喜んでくれているようだったので、御満悦でした(^^;(私が) で、出向先での作業を終えてから、また名古屋の会社に行って、他の仕事のデバッグ作業です。 何度やっても上手く動いているっぽいので、やっぱり骨が折れそうな感じですが、あと2日でなんとかなるかなぁ。がんばります。 で、地下鉄の終電までがんばってテストして、部屋に帰りました。 部屋に帰ってからは、昨日できなかった赤外線でリモコンキャタピラカーを実現するため、黙々とプログラム。 そして、とりあえず完成したので、テスト。 うん! 動いてます!! 赤外線で操縦できてます(^o^ P/ECEの赤外線は受光範囲が狭いそうなのですが、P/ECE正面に向かって赤外線を出すと意外とうまく受光できます。逆に裏に向かって赤外線を出すと、上手く受光できてない感じです。そういうもんなんですね。 で、キャタピラカーに受信用P/ECEを乗っけて、上からP/ECEに向かって赤外線を飛ばすと思ったとおりに操縦することができます(^ー^ 赤外線の通信(片方向)は、一応CRCチェックとかでエラー処理をしているのですが、なぜかアドレスがおかしいとかいうエラーがでてしまうので、エラー処理をカットし、意味不明なコマンドが来たら、全て停止コマンドに変換するようにして、調子が悪いときは止まるようにしました。 えー、まだ、短いコードのコネクタを作ってないので、コードは長いまま、マジックテープで固定して不恰好になってますが、これで赤外線でのリモコンも目標達成です(^^ コードが無いのでちょっとしたラジコン気分です。デジQにも負けませんよ(^-^; 早速明日お披露目としよう(^^; あとは、短いコードのコネクタを作って、画像処理だな。うん。 はい、最近P/ECEの方が止まっていましたが、今日でまたちょっと進められました。 明日は名古屋の会社でデバッグです。 というわけで、今日はおしまい。 それでは、おやすみなさい。 |
0164
|
2002/03/25(月)■ | |
ちょっとへこみーな日でした(j−j | ||
えー、今日はちょっと仕事で不具合が見つかって、その対応にちょっと追われてて、むぅーな感じ。 そのほか、せっかく書いた赤外線でリモコンキャタピラカーをやるためのソースを誤って消してしまって、まあそんなにたいしたものではないので、また書こうと思えばすぐ書けるのですが、やる気がずぅーんと下がってしまいました(j−j しくしく でも、ちょっと良い気分になったこともあって、それは、仕事でほんのちょっとだけ、自力で3Dをやれるのかなぁーなんて雰囲気になったので、仕事ではやれないかもしれませんが、趣味でまたやってみようと思いました。 以前はワイヤーフレームでグリグリ物体を回すくらいまでしかやってませんが、今はだいぶ3Dもわかってきたので、それ以上のことがしたいです。 また、今日は出向先での作業だったのですが、今やってる仕事の関係でMMXをちょっと考える機会がありまして、久しぶりにMMXを調べていたら、やっぱり面白そうだなと、つくづく思いました。 4ピクセル同時に処理ができるとかって、魅力的ですよねぇ(^^; MMXって爆速!とか書いてあるとやってみたくてたまりません。 昔はアルファブレンディングをMMX使って自力でやってたりしましたが、あれは今やっても多分楽しいですよね。また、CPUも速くなって、かなり自力でもやれることが増えてきたので、DirectXなんかに頼らず、どんな環境でもちゃんと動く、そんなものをつくってみたいなぁ。 またまたそのほか、仕事でCGI書けそうとか、JAVAができそうとか、ちょっとおもしろそうな感じになってきました。趣味でやろうと思ってたことを仕事でやれるって良いですよねぇ(^^ 一日の大半を好きなことやってられるんですから、そりゃあもう、がんばっちゃいますよ。調べまくるし、試しまくりますってなもんですよ。 また、逆に趣味でやってるP/ECEでカメラとかが仕事にちょっと役立ったりするから、一石二鳥です。 というわけで、またやりたいことが増えてしまいました(^^; 今度は社長がブラシレスモータに興味を持ち出したので、私も便乗して勉強しちゃおうかな。 なんか色々本を買って来てくれるので、ホント良い社長です(^^; 私もP/ECEでロボットカーを卒業したら、ちょっとした回路設計から始めて、ロボット製作の方に趣味の幅を広げていきたいです。でも、今はモータを制御して、空飛ぶなにかを作ってみたいと思ってます。 最近っていうか、けっこう前からありますが、中心に大きなプロペラがついてて、周りにも小さいプロペラがついているUFOのラジコンみたいなやつがありますよね。あれ、あれが作りたいんですよ。ラジコンじゃなくて有線のリモコンでもいいから空飛ぶやつ。どうやってやるかなんて全然考えていませんが、とにかく作りたいと思いました(^^ そこにカメラつなげて、へぼーい航空写真とか撮ってもいいなぁ。USBコントローラ付きのH8マイコンボードとか使ったら、カメラで撮影した画像をUSBでパソコンに転送したりできるよねぇ。 ところで、メモリって簡単に接続できるのかなぁ? そこんところの知識が全然ないので、良くわからないのですが、うちのハード屋さんがよく外部メモリがどうとかいってるから、がんばればできるもんなんだろう。どれだけがんばればいいのかは見当がつきませんが(^^; できれば、仕事の実験用にちょっとした回路を作れるくらいにはなりたいなぁ。 電子工作の得意なバイト君がそういうのをやってるのを見て、すごいなぁと感心しました。そうだ、この前買った電子工作の新しい本も読まないとなぁ。 ああ、私も趣味の並列処理ができたらどんなに良いか…… なんか今の私って擬似マルチタスクな感じ(^^; そうそう、タスクっていえば、昔MSXでゲームを作ってた頃は、タスクなんて言葉も知らなかったし、当然BASICなので、そんなのはやったことなかったんですが、いつかゲームでタスク処理してみたいなぁ。 あ、有限のタスク処理は専門学校でシューティング作ったときにやったなぁ。その時はタスクなんて思わずにやってたけど。アセンブラで。 ああ、時間がほしいー。 そういえば、水曜の出張が先方の都合で金曜日に延びちゃって、しかも私一人で行くことになるような感じになってしまったので、ぷーな感じです。 せっかく金曜日は、仕事の打ち上げ会として、会社のみんなで楽しく飲み会する予定だったのにぃ。ま、中止じゃなくて、延期なので良いんですけど。 その前に、不具合を直さないとなぁ。出現性のひくーいバグっぽいので、見当もつかないから、骨が折れそうです(j−j うーん、困ったなぁ。 よし、出張に電子工作の本を持っていこう。ホテルでの空き時間に読むことにしよう。ホテルって自分のパソコンがないからけっこう暇なんですよね。やることっていったら、地方のテレビ番組を見るくらいだし。 この前は、ノートを持っていったので、P/ECEのMM音楽館開発とかやってましたが(^^; 今回もノート持っていけるかなぁ。でも、さすがにキャタピラカーは持っていけないので、おとなしく電子工作の本を読んでいることにしよう。うん、そうしよう。 ちなみに、飛行機ではなく新幹線になりました。そっちの方が安くなってしまったんです。色々ありまして。 というわけで、陸路で行きます(^^; いや、まだ私が行くと決定したわけではありませんが、ほぼ決定ということで。 はい、というところで、明日も出向日なので、今日はもう寝ます。 それでは、おやすみなさい。 |