次のProjectNote Index


この掲示板は私の開発日記です。
まぁ、それ以外に毎日の中で思いついたことも書き込みます。
この日記の人物の名前はハンドルネーム等で書かれています。


[49] さやの蔵書 Casper 2001年08月06日 (月) 14時36分
 世界には本が沢山あります。たくさんの人が書きつづけているので、一人の人間が読みつづけても全部読むのは不可能です。

 ところで僕の家にある本(とりあえずコミックのみ)を友達たちが読んでいるわけですが、一年以内に全て読めるかというと困難みたいです。
 土曜日に[6kna]の祭り(各地で祭りがありましたが…)に妹が友達と行きました。そこで紙袋1つ分の本(新刊、中古、文庫など)を買ってきました。
 日曜日は[v\dj]に行って古本屋で紙袋2つを一杯にして、さらに新刊を買っていました。

 まだ僕も読んでない本が部屋に山積みされています…。


[48] 世界の水泳技術 Casper 2001年08月06日 (月) 00時07分
 世界水泳のテレビ中継は見ましたか?

 競技スタートの時に水面に国旗が映っていませんでしたか。
 あれは3Dをリアルタイムに合成しているそうです。CGです。
 他にも色々な所にCGが使われているそうです。

 ソープの水着にはまたまた最新技術が組み込まれているそうです。体を覆うように螺旋の模様が表面に作られています。こうすることで水の抵抗が減るそうです。また、生地は水を弾くようになっていて、これも抵抗を減らしているようです。
 あとソープの泳ぎは大きく水を掻くようになっています。できるだけ前の水を、できるだけ後ろに送るようにするそうです。腕のピッチが落ちますが、波しぶきがあまり立たなくなり、この泳ぎに変えるだけでタイムが結構変わるそうです。


[47] [v\dj]でのお買い物 Casper 2001年08月05日 (日) 23時57分
 今日は[v\dj]市へ買い物に行きました。
 目的はウルティマオンラインのアカウントを更新するためで、他に新刊を買いに行きました。

 最初は高速出口に近い『フタバ図書MEGA』に行きました。ビルの1階のフロアの4分の3が本屋で、他にゲームやCDを売っているマルチメディアな本屋です。ここで新刊をだいたいそろえました。
 ここでもハリーポッターは人気のようです。1つのコーナーを占拠しているポタ本ですが、いろいろな場所にも点在していました。
 まだ日本語版の出ていない第四巻の原書が置かれていたので、手にとってみました。やっぱりというか英語だらけでした。なんと挿絵もまったくなく、フォントも変えられていませんでした。
 表紙もあまり好きではないし、英語が読めても日本語版だなと思っちゃいました。

 次にSofmapに行きました。あそこの向いには昔T-ZONEがあって、2店のテーマソングが通りで競っていたのに、ソフマップのテーマがあたりに充満していました。
 そこの2階でUOのゲームタイムを買って、更にMP3プレイヤーを買っちゃいました。CD-Rに焼いたMP3を再生できるCDプレイヤーです。タグも読めると書いてありましたが、後でよくみると(英数字のみ)と書かれちゃってました。タイトルが英数字だけのファイルとなるとMADの一部だけじゃん!!

 更に広島でBookOffを見つけました。この店は古本屋で色々な場所に店舗を拡大しつつあって、[v\dj]のほかに[2h7j]などでみつけました。僕はここのカードをつくりました。広島の店は結構な広さがあって、MEGAくらいの広さに中古の本がずらりと置かれていました。でもそこで本を買うことはありませんでした。MP3プレイヤーを買いましたから。

 その後東急ハンズに行きました。
 ホントに色々な物を売っている店で、どちらかというと材料が多い店です。工作の材料や理科の道具、家の補修、健康食品、パーティのグッズ。
 隣が映画館になっていて、『A.I.』をやっていました。ハリポタ、神隠しの次に観たい映画です。

 帰りは僕が運転して帰りました。
 昼食で父がビールを2杯飲んじゃったからです。
 疲れました……。


[46] 見たいもの Casper 2001年08月04日 (土) 20時41分
 鳥人間コンテストと花火が同じ時間に重なっちゃいました。
 どちらもとっても見たいです。

 鳥人間があるってわかった時には既になかばまで来ていて、ちょうどヘリコプター部門が終わったところでした。
 8時30分から花火が始まって、ビデオにとっておけばよかったなぁ。


[45] タブレットを買い求める人の動機 Casper 2001年08月04日 (土) 16時34分
 お絵かき掲示板を見た人間がまず始めにすることは、
 気に入った絵を集めることで、
 次に絵を描こうとし、
 タブレットが欲しくなるものである。

 そんなわけで僕もつられて買っちゃいました。
 タブレットがあるからといって絵がうまくなるわけでもなく。
 さらに練習しないと使いこなせないのに、買っちゃいました。
 (さらにちょっと壊れちゃいました)


[44] LEGO MINDSTORMSの説明 Casper 2001年08月04日 (土) 16時27分
 今日は息抜きにレゴをしました。ブロックなど作るタイプは大好きで、特にレゴのテクニックシリーズはお気に入りです。現在あまりはやっていないのが残念です。
 そんなテクニックシリーズですが、そのパーツを継承してマインドストームが登場しました。簡単に言うとテクニックシリーズにモーターとコンピューターが追加されたような内容のシリーズで、作ったモデルがプログラムによって動きます。
 そのキットだけでは、そんなに複雑なモデルが作れるわけではなく、マインドストームの追加パーツやテクニックシリーズを合わせてつくることで、更に楽しめます。

 学校では混ぜたらいけないので、そんなにたいそうな物は組めませんが、去年のようにモデルを作ってみようかなと思い、馬をレゴで作ることを挑戦しました。
 最初に全体の組み方を考えるわけですが、マインドストームの場合、モデルを動かすための『RCX』(コンピューター)と『モーター』の配置が重要になります。
 ここではRCXを寝かせて置いて背中の部分にすることにして、モータは腹に置く事にしました。
 次の問題がとっても重要な足の動かし方です。モーターの回転運動を足の動きに変換する機構を作らなければなりません。去年は回転運動を首振り運動になおすだけだったので楽でしたが、今回は上下にも動かす必要がありました。

 結局、設定時間内に骨組みは出来ませんでした。
 足が往復するだけなら出来そうでしたが、四足歩行は実現できそうにありませんでした。レゴマインドストームの難しさを実感するとともに、クランクやピストン、シリンダーなどの機構についてまとめた本を参考にしてみたいと思いました。
 現在の状態では足が地面から離れるように胴体を支えて、足がジタバタ動く馬で作れそうです。
 (さらに別のモーターで馬全体が上下動するようにする)


[43] 一日あたりの投稿数 Casper 2001年08月04日 (土) 12時47分
 このProjectNoteはプロジェクトの開発日記でしたが、普通の日記も兼ねているのでけっこう早く流れていきます。
 それというのも考えたことごとに書き込んでいくためで、多いときは5つくらい追加されます。

 投稿した記事を後から変更を加えたり、一日分ごとにページになにる掲示板を使ったほうが良かったのかな。
 まぁファイル投稿掲示板と落書き掲示板がすでにあったから、「サーバの負担が軽い」が売りのこの掲示板にしたわけで。日記がかければ一応の目的が果たせます。


[42] 自作の箱庭諸島 for JavaScript Casper 2001年08月04日 (土) 11時41分
 ほったらかしだった箱庭JSですが、テストしてみると怪獣付きの方に問題がありました。コマンドは実行できるけど、ゲームが進行しませんでした。
 原因を究明して正しく書き直したので動くようになりました。

 この『箱庭諸島 for JavaScript』ですが、オリジナルに手を加えてあって。ちょっとイベントが変わっています。また、JavaScript版独自のコマンドがあります。

 そのうちの1つ、『セーブ/ロード』は苦労しました。島データを書き出して、それを島データに戻す機能です。
 書き出された島データはユーザー側でテキストファイルとして保存できるようになっています。それを同じように貼り付けると、
島を復元させることができるようになっています。

 それとコマンドの多さには苦労しました。元のコマンドと付け加えた『神の手』コマンドで約2倍になり、if文をたっぷりと並べることになりました。

http://isweb24.infoseek.co.jp/computer/js-labo/island/


[41] 日記の書き込みを開始 Casper 2001年08月04日 (土) 11時35分
 ホームページの移動があったりで、色々忙しくて滞りがちだったProjectNoteですが、これからはビシバシ更新していきたいと思います。
 (はやく過去ログとやらが見てみたい……まだテストできてない)

 巷では『夏休み』とやらが満喫されているようですが、僕らは学校でプログラム(!?)の毎日です。
 まぁ今年の夏は類を見ないくらいの猛暑なので、クーラーの効いた部屋で好きなこと(!?)ができるのはいいことです。


[40] notfound.htmのバグ Casper 2001年08月04日 (土) 00時59分
 これは『ごちゃ混ぜ置き場』においてある、リンク先が無くなっている時になる、NotFoundをカモフラージュするファイルです。 しかしFreeWebやinfoseekのように、広告が付くサイトでは滑稽でした。
 もろバレ……。


[38] 日記の編集中 Casper 2001年08月02日 (木) 19時21分
 CGIを編集してinfoseekに書き換えました。
 うまくいっていれば、これが投稿できるはずです。

http://isweb24.infoseek.co.jp/computer/js-labo/


[37] 日記の休止 Casper 2001年07月30日 (月) 11時54分
 ホームページを移行させるために、全ファイルを退避させておきます。それとこの掲示板を含めて管理を休止状態にします。
 つまりここの更新もストップします。
 また今度……。


[36] タブレットの状態 Casper 2001年07月28日 (土) 17時29分
 タブレットのペンが壊れたのは前回投稿しましたが、何とか使えるかな? というところまで設定しました。ペンが直ったわけではなく、使えるようになったということです。
 まずペン先が押さえられたままという状態なので、ペン先の関連付けを無効にして、サイドボタンに左クリックを割り当てます。こうするとサイドボタンを押したときだけ描くことができます。
 もう一つの描き方は消しゴムの方で描くことです。消しゴムというのはペン先の反対側についていて、こちらで描くと消しゴムの機能になるというものです。
 しかしどういうわけかこのペンでは普通にペン先で描いたようになるのです。多分本来のペン先の方が押さえられているからだと思います。もともと消しゴム機能の方はあまり使っていませんでした。ペンを持ち返すくらいなら消しゴムを選べばすむことです。
 というわけで本格的に壊れない限りこのままでもやって行けそうです。


[35] 別のユニットに処理を分ける Casper 2001年07月28日 (土) 17時21分
 現在フレームやモデルをコントロールするのを作ろうとしている。
 これは従来バラバラに定義され使われていたモデルセットやモーションなどをひとつのクラスで扱えるようにするもので、今日は下請け関数を別のユニットに定義して動作できるかをためした。
 ゆくゆくは各プロジェクトに移植できるように、このモデルコントロールクラスは独立したユニットにするつもりなので、そのためにはその処理をメインのソースと分けておくことが必要なのである。
 で、結果はというと少々プログラムを削り、一応動作するところまでこぎつけた。あとはこの下請け関数を内蔵したクラスを定義して使うだけである。

 しっかし、今日のプログラムは面倒臭い部分が多くて疲れました。今までは下請け関数の中でもIDirect3DRMのメッシュやテクスチャーやフレームの生成が行えたのに、ユニットを分けたためそれが困難になったということです。IDirect3DRMのこれらはDXDrawからしか生成できないのです。
 今はメインの方で生成を行っていますが、それだとモデルコントロールクラス側から扱えないので、ユニットの相互参照をおこなってDXDrawにアクセスできるようにするか、もしかしたらできないけどDXDrawのポインタをもらってそれを通してアクセスするようにしなければなりません。


[34] ブロックの形状を入力する Casper 2001年07月27日 (金) 17時47分
 競技部門のテーマはパズルで、ブロックを箱にどれだけ詰め込めるかで勝敗を決めます。
 で今回重要なのがブロック形状の入力です。複雑な形状をしたブロックがたくさんあるので、間違えずに、しかも素早く打ち込む必要があるのです。これは毎回の競技で重要なことのひとつです。
 いろんなアイディアがあって、ブロックのあるなしを1、0にして16進で入力するとか、超音波センサーで入力するというものまでありました。
 で、そんなにハードウェアを使わずに、標準の入力装置(マウス、キーボード等)で形状を入力するインターフェースプログラムを月曜日までに作ってくることになりました。
 (作らなきゃならないのは竹村で、僕じゃないです)
 僕のアイディアとしては、基本の形状を組み合わせて大まかに形を作った後、少し修正を加えるといった方法と、ブロックを2マスごとに分けて、それごとにパターンを入力するという方法です。


[33] テクスチャーを貼るの Casper 2001年07月27日 (金) 16時58分
 ここでちょっと楽になった。なんとモデラーの方でテクスチャーを貼ると、こちらはXFileを読み込むだけでテクスチャーが貼れてしまうのだ。これはもう塗装済み組み立てキット級の手軽さです。
 テクスチャー定義済みモデルは、すでにテクスチャー座標等が定義されているので、テクスチャーのロードやラッピングは設定する必要がありません。

 この調子でテクスチャーの透過もやってくれると便利なのですが…。まだ試していません。
 テクスチャーを透過したいときはモデル自体の透過設定をどうしておけばいいのかな。


[32] 運動モデル(角度の変化) Casper 2001年07月27日 (金) 11時28分
 自動的にフレームの角度、位置を変化させる運動モデルを作っています。今は角度(向き)の変化を行う運動モデルを対象に作っています。
 任意の時刻における角度を出すために補間を行っているのですが、正しくない結果が得られることが考察によって分かりました。今は角度を表すのに、基準フレームから何度軸回りに回転したかを、その回転角度で表しています。もちろん角度は0度~360度でひと回りなので、0度をまたいで補間しようとするとその中間の値となってしまいます。
 対策:角度の差が180度以上の場合は小さい方に360度を足して計算する。

 またフレームの向きを方向ベクトルで表すデータでは、座標を補完しても正しくある時刻でのフレーム向きは得られません。これは回転角度で表して正解でした。
 補間して得られた角度と単位方向ベクトルを相互変換するコンバーターを用意しましょう。


[31] なんとホームページのURLがかわるらしい Casper 2001年07月26日 (木) 20時20分
> freewebは、今月末をもって株式会社インフォシークのサービス下に統合されます。

 というわけでホームページがインフォシークになるそうです。
 ファイルはそのままべースURLを変えてからコピーしただけでいいのかな?
 freemailはそのままですか? 無くなってしまうなら他のを探さないといけませんね。
 せっかく転送されるようにしたのに変えないと…。


[30] タブペンが壊れたの…… Casper 2001年07月26日 (木) 12時58分
 ちょっとラクガキがしたくなって、タブ(タブレット)を取り出したらペンが壊れていました。
 どのように壊れてるかというと、ペン先が中にめり込んじゃってて、左クリックが押されたままの状態から戻らないといった具合です。
 ペン先のボタンの割り当てを外して、サイドボタンを左クリックに割り当てて、とりあえず使えるようにはなったが、描き始めと描き終わりがうまくいかないです。
 もしバラして直らないようなら新しいのを買うことになります。(バラすと、直っても使い心地がおかしくなってしまうかも…)


[29] 運動モデルファイル(MotionFile)の構想 Casper 2001年07月26日 (木) 12時52分
 大元の仕組みを作っておいて、後から機能を拡張していくというやり方が好きでよくやってたのですが、大きなプロジェクトの場合、個々の機能の単体テストを行いながらじっくりと作る必要があるので、それぞれの機能だけのプログラムを済ませてから組み立てるという風にする必要があります。

 で、今度はフレームの動きを制御する運動モデルを作ることにしました。このあたりからスクリプトとも関わってくるためファイルの入出力を使います。
 まずファイルのデータをTextにするかBinalyにするかです。
 TextだとStringListで読んでおいてから、行ごとに数値に直していくのでプログラミングは楽です。ですが文字列を数値に直す処理が必要で、文字列処理をする必要があります。(セパレーターを取り除く、データを切り分ける等)また、Binalyに比べファイルサイズが大きくなります。
 BinalyだとFileを直接読み書きすることになります。Binalyは変数と相性がよく、そのままファイルにすることが出来ます。しかし複数個の変数が入る場合、それぞれをどう分けるかを考える必要があります。同じ変数が並んでいる場合は、その数を最初に書き込めばいいし、いろんな種類の変数があるなら、それぞれの変数の前に変数の種類やサイズを入れておいて、とこまでが変数かがわかるようにすればいい。

 今回はBinalyを使います。早い処理が要求されるのと、大量のデータで駆動させるかもしれないためです。専用のデータ作成ツールが必要ですが、結局どちらの場合も作ることになるので…。

 まずは角度変化を制御する運動モデルを作ります。
 フレームの軸の向きを指定する方法と、フレームの軸の基準からの回転角度を指定する方法がありますが、人間的に分かりやすい後者の方を採用します。しかし、プログラム的には前者の方が値を入れるだけなので簡単です。そのため相互変換の出来るコンバーターを用意したいと思います。

 運動データの形式ですが、まずデータの個数があって、時間と角度が並んでるようなものにします。時間は等間隔じゃなくてもいいです。時間のIndexを付けようかと思いましたが、2分検索でいいと判断しました。(Indexがあるとハッシュが使えて速いが、データ数が多くないとあまり効果がない)
 あとは指定された時間におけるフレームの角度を得る方法ですが、その時間に最も近いデータを選んで、補間法によって目的のデータを得ます。とりあえず2分検索で選んで1次補間でいきたいと思います。


[28] Local Link (ページの更新をしなきゃ…) Casper 2001年07月25日 (水) 15時59分
 自分用リンク集「Local Link」が結構重宝されているようです。さらに使いやすくするためにリンクの更新をしようと思っています。結構リンク切れがあるのと、ブックマークに溜まっている未登録分を入れたいと思います。
 あとはHomePageの内容の充実を図ることですが、これはネタがちょっと無いのと、忙しいということで次の機会にさせてください。


[27] 任意の位置へモデルを作成する Casper 2001年07月25日 (水) 15時54分
 この問題はMeshBuilderをIDirect3DRMMeshBuilder3にすることで簡単に解決した。
 IDirect3DRMMeshBuilder3では頂点(Vertex)を直接得ることが出来るようになっているのだ。これで含まれている全ての頂点に対して移動を行い、モデル座標を変えることに成功したのだった。

 これを利用して迷路を作った。配列を用意して立方体が壁を構成するようにしたのだ。
 今後これを改造するなら、見えていない物を消す処理を加えることだ。
 このとき、フレームに追加したVisualがどのモデルかを知る必要がある。そのためVisualの作成時にインデックス番号を知る必要がある。それをモデル情報に書き込んでおいて、消す必要が生じたとき、それをもとにVisualを取り出して消すようにすればよい。


[26] デバグの技 Casper 2001年07月25日 (水) 11時16分
 昨日のアイディアをプログラムして試したところ、モデルが一応違う場所に表示された。(指定された位置にモデルを設置する)
 しかし、モデルは変形してしまっていた。前の位置からは完全に移動しているので、全ての頂点に対して処理はされていると思う。全部同じ値で移動させてあるはずなのに変形(せん断変形っぽい)している。
 もしかして頂点が共有頂点で2回、3回と移動させられているのかもしれない。
 それとも頂点のインデックス番号がおかしいのか。それで違った頂点で面を作成されたり、他の頂点を上書きしているのか。

 けっこうプログラムをやってきたので、原因のわからない結果になることは良くあった。大抵は簡単なミスが原因で、違った変数を使った、関数が使われていない、初期化がまだ、条件が不十分であるなどがあった。
 今回はよく分からないDirectXをDelphiXを通して使っているのでなおさらだ。
 こういった場合、もう一度ソースを確認したり、違う値、条件を入力してテストしたり、状態を出力させるデバグ用関数を埋め込んで範囲を絞り込んだりする。簡単なプログラムなら始めからやり直すのもよい。
 しかしどれを取っても時間がかかり、面倒なことである。作り直してもまったく同じソースが得られることもある。そんなときは明日、気分転換に他のことをしてみる。もしかしたら別の方法が見つかるかもしれない。


[25] 商船祭の出し物 Casper 2001年07月25日 (水) 02時32分
 商船祭ではマイコン部はプログラム展示をしていました。
 そこで提案、ちょっと前の工作教室第2弾「紙飛行機を作って飛ばそう!」です。その名の通り、髪飛行機を作ります。髪飛行機は大きく分けると2種類です。小さい子向けには「折り紙で作る神飛行機」をして、年が上の子供には「紙を切って組み立てる飛行機」をします。そして野球場等で飛ばすのです。
 マイコン部的にもっとするなら、紙飛行機を設計して、テストして、印刷するプログラムを作りますか? テストというのは設計した髪飛行機の性能を見ることです。これが出来たらけっこう凄いでしょうね。
 他にペットボトルで車を作ってみたり、船を作ってみたり、etc……。


[24] USB接続のCDR/Wが欲しい Casper 2001年07月25日 (水) 02時20分
 趣味としてお絵かき掲示板を保存していっています。結構集めました。1万個以上あります。
 共有お絵かき掲示板なので流れが速く、ほっとくと100個近く溜まります。
 しかし、プロジェクトの関係で家を留守にしてしまいます。その間も流れつづけ、その間の絵は消えてしまうのです。
 そうならないためには学校でも集めればいいわけですが、その後取り出すのが大変です。
 そこでCDR/Wです。こいつを後ろのUSBに挿して、焼いて、GETです! とっても便利。プログラムを焼いたりも出来るし、とっても欲しいです。


[23] (無題なの) Casper 2001年07月25日 (水) 02時08分
 あしたは水曜日、頼まれた本を持っていこうとするけれど、彼女は来ないのではと思う。バイトの予定があった気がする。
 妹がAccessを始めた。なにやらNovelのDBを作って整理するらしい。そんなにあるのかと実感。
 みんな日記をかけ~♪ でも仕事はサボっちゃダメ。
 この掲示板は何ページまで保存できるようにするべき?(現在5ページ。1ページに10件)
 後少し読まれていない本がある。(妹には読めないくらい文庫がある…溜まっていました)
 そのせいでまだハリーポッター第三巻を読んでいないそうです。(何よりまずはハリーポッターを読め!)


[22] UOのアカウントが切れた Casper 2001年07月25日 (水) 01時46分
 Ultima Onlineのアカウントの有効期限が切れました。UOできな~い。
 新しいゲームタイム・プレミアムを買わないと遊べないです。
 でも最近だれてきたので更新しないです。もし更新するならUOTD(第三の夜明け)を試したいです。グラフィックが増えたり、アクションが増えたり、世界が増えたりで楽しいらしいです。
 ……重いけど。


[21] 「ハレのちグウ」が見た~い!! Casper 2001年07月25日 (水) 01時41分
 火曜日午後6時からテレビ東京系列でやってるアニメ『ジャングルはいつもハレのちグウ』が見た~いです!
 ほっとくとセンターは5時で閉まるので、センターで見るためには、5時に鍵を預かって、6時半まで粘る必要があるのだ。
 はっきり言ってめんどい……。
 (3年生とかが残って作業などをやってたりすると、楽に見られるのになぁ。
 おっと、お泊りモードに入ると見られるようになるのかな!? ←それ以前にピンチの状態であるため見られない!!)


[20] 日記の機密性、隠匿性 Casper 2001年07月25日 (水) 01時33分
 この掲示板はHTMLを書き出す仕組みになっていて、サーバに負担がかかり難く、軽いというのがポイントとなっています。
 そのため、プロジェクトの内容が検索エンジンで漏れてしまうのではと意見されました。
 この掲示板は表面はデフォルトですが、中は少し変えてあります。フォントをおっきくしたり、タイトルの横に情報が並ぶようにしてみたり、リンクのターゲットを親フレームに設定したりしました。
 そしてロボット検索エンジンに指示をするメタタグも入れてあります。これはこのページを検索の対象にしたり、これより下の階層を検索するのをやめるようにさせます。
 またそんな内容を書かなければいいことです。
 ここに書くのはプログラミングの技と新発見と、話のネタ、メモ、考え(提案)などです。
 (さらにパスワード機能を付けて、知り合いしか見れないようにする?)


[19] メーリングリストの転送 Casper 2001年07月25日 (水) 01時16分
 学校のメーリングリストで送られてくるメールが、どこでも読めるようにと、こっちに転送されるようにした。この機能は極めるとけっこう面白いらしいが、あんまり興味ないです。
 それはそうと、どうせなら全部のメーが転送されるようにしてもいいのではと思いました。
 学内でしか見れないなんてしんどいです。


[18] WinMXの様子 Casper 2001年07月25日 (水) 01時09分
 うちのWinMXはずっと動いています。朝起きると夜中の分を確認して、学校に行く前に昼の分を仕込んでいます。
 ところで『例のあの人』のところではどうなっているのか。まぁ共有のジャンルが合わなけりゃ検索にかからないけどね。
 (こっちのは結構多いです……)


[17] おやつのポテチ Casper 2001年07月25日 (水) 00時55分
 仕事の合間にお菓子をつまむのですが、一番食べるのがポテチです。
 お菓子は誰かが買ってくるという事になっていて、どんな物かは買ってくる人の好みです。
 (食べれるんだから文句はいうなです)

 最近は『きわものポテチ』でした。
 きわものとは開発部が新しく開発した種類の味のことで、まだ経験した事が無かったり、これはアブノーマルな組み合わせだと思わせるようなものを指します。
 きわものと決定された味としては、サワークリーム、シュガーバター、レモンソルトなどが挙げられます。人によっては生理的というか、体に合わないらしいので注意が必要です。
 ここまで言うと、好奇心に駆られて食べたくなる人がいます。 

 たいてい失敗するのですが、新たな刺激を求め、再び未知のポテチを手にとります。


[16] メッシュの頂点を動かす Casper 2001年07月24日 (火) 19時02分
 背景や動かない物体を配置するのに、いちいちフレームを用意していたら面倒なので、フィールドフレームに全部を配置してしまおうと考えた。
 そのためにはファイルからメッシュ(モデルを構成する面集合)を読み込んだ後、フェース(メッシュを構成する面1つ分)を取り出して、その頂点座標を移動させて、またメッシュを構築しなおせば良いと考えた。
 でも今日はうまくいかなかったの。
 今度はFaceからVertexとNormalを得た後、VerTexの座標を動かして、MeshBuilderにVertexとNormalをセットするというのを試すつもりです。


[15] 馬のモデルを消す Casper 2001年07月24日 (火) 14時02分
 モデルを消すことが出来たので報告します。
---フレームを消す-----------
DXDraw.Scene.DeleteChild(FieldFrame);
 この方法はフレームごと消すことが出来ます。

---メッシュ(ビジュアル)を消す-----------
procedure DeleteTest(Frame: IDirect3DRMFrame);
var
 A: Integer;
 VisualList: IDirect3DRMVisualArray;
 Visual: IDirect3DRMVisual;
begin
  Frame.GetVisuals(VisualList);
  for A:=0 to VisualList.GetSize-1 do
  begin
    VisualList.GetElement(A, Visual);
    Frame.DeleteVisual(Visual);
  end;
end;

例:DeleteTest(FieldFrame);
 この方法ではフレームに含まれているビジュアルを1つずつ取ってきては消すということをしています。

 これらの方法では特定のモデルのみを消すことが出来るうえ、かなりの速度で行うことが出来ます。
 しかし、フレーム作成に失敗していると正しく消すことが出来なくなります。
 例えば、同じフレームインターフエースで作成すると消せなくなります。

 フレームを消すと、それを使用している所があるとエラーが発生してしまいます。
 また、階層構造を作った場合、親フレームを参照してからでなとい消せないので、フレームのビジュアルを消す方法の方がよさそうです。(なんだかスマートな気がする)


[14] 2進数で表示する (プログラムのソース) Casper 2001年07月23日 (月) 15時55分
// 10進を2進にする //
function IntToBit(x: Int64): String;
var
 A: Integer;
 H,C: String;
begin
  Result:='';
  H:=IntToHex(x,16);
  H:=AnsiUpperCase(H);
  for A:=1 to Length(H) do
  begin
    C:=Copy(H,A,1);
    if C='0' then Result:=Result+'0000'
    else if C='1' then Result:=Result+'0001'
    else if C='2' then Result:=Result+'0010'
    else if C='3' then Result:=Result+'0011'
    else if C='4' then Result:=Result+'0100'
    else if C='5' then Result:=Result+'0101'
    else if C='6' then Result:=Result+'0110'
    else if C='7' then Result:=Result+'0111'
    else if C='8' then Result:=Result+'1000'
    else if C='9' then Result:=Result+'1001'
    else if C='A' then Result:=Result+'1010'
    else if C='B' then Result:=Result+'1011'
    else if C='C' then Result:=Result+'1100'
    else if C='D' then Result:=Result+'1101'
    else if C='E' then Result:=Result+'1110'
    else if C='F' then Result:=Result+'1111';
  end;
end;
// 16進を2進にする //
function HexToBit(H: String): String;
var
 A: Integer;
 C: String;
begin
  Result:='';
  H:=AnsiUpperCase(H);
  for A:=1 to Length(H) do
  begin
    C:=Copy(H,A,1);
    if C='0' then Result:=Result+'0000'
    else if C='1' then Result:=Result+'0001'
    else if C='2' then Result:=Result+'0010'
    else if C='3' then Result:=Result+'0011'
    else if C='4' then Result:=Result+'0100'
    else if C='5' then Result:=Result+'0101'
    else if C='6' then Result:=Result+'0110'
    else if C='7' then Result:=Result+'0111'
    else if C='8' then Result:=Result+'1000'
    else if C='9' then Result:=Result+'1001'
    else if C='A' then Result:=Result+'1010'
    else if C='B' then Result:=Result+'1011'
    else if C='C' then Result:=Result+'1100'
    else if C='D' then Result:=Result+'1101'
    else if C='E' then Result:=Result+'1110'
    else if C='F' then Result:=Result+'1111';
  end;
end;


[13] イベントのエリア区分 Casper 2001年07月23日 (月) 09時13分
 イベントをエリアごとに区切って扱うと設定していました。
 これは今いるエリアのイベントだけが条件判断され、実行されるというもので、もうひとつ、どのエリアでも条件判断されるイベントを作って、その2つでスクリプトを組もうと考えていました。
 この場合、どのエリアを調べるか判断しなきゃいけないわけで、遅くなるのではと思いました。
 でもやっぱり数回の判断で、他のたくさんあるイベントを調べなくてもよくなるのはうれしいので、やっぱりイベントの範囲限定方式は採用ということです。
 でも、イベントをエリアで区切るというより、自分から広がるある範囲のエリアにイベントが入ったときに判断するという方が、より良いのではと言われました。


[12] カメラの向き Casper 2001年07月23日 (月) 09時00分
 1台のPCでマルチディスプレイをするにはグラフィックボードが必要だったり、よく分かんない所があったのと、幸いにも同じPCがいっぱいあったので、複数のPCを用いてのマルチディスプレイ、マルチアングルを行うことになりました。
 これはそれぞれのPCが自分のディスプレイを使って表示するので、表示の仕組みとしては今までの技術と同じです。違うのは、それぞれが連携を取りながら動くところで、現在の状態というものをサーバマシンが管理して、その内容をそれぞれの視点から表示するのが今回の仕組みです。


[11] どっきりテクスチャー Casper 2001年07月22日 (日) 22時21分
 雲や木、そして少ないポリゴンで見栄え良くするためにもキレイなテクスチャーを張りたいものです。
 でも現在の状態だと、カメラとの距離でラッピングに歪みが出てくるんですよね。家の環境だとこれが出てこない。いやマジ!!
 歪んじゃうとどんなに美麗なテクスチャーでもだいなしです。
 テクスチャーでポリゴンに穴を空ける方法も、現在研究中です。これがあるとポリゴンモデルでは出来ない複雑な物体を、ビルボードで簡単に見せる事が出来ます。

 XFileでテクスチャーマッピングを設定しておく方法があるらしいです。何とかして作成&読み込みが出来るようにしたいです。

 どうしてもRMでテクスチャーがうまくいかないときはテクスチャー無しか、IMで作るかです。
 IMでテクスチャーを貼るのは難しいと聞いています。テクスチャー座標を各頂点毎に設定する必要があるし、ファイルからテクスチャーを読み込んでVRAMに転送しておく必要があるそうです。


[10] 僕の買いたいゲーム『大乱闘スマッシュブラザーズDX』 Casper 2001年07月22日 (日) 22時02分
速報スマブラ拳!! - http://www.nintendo.co.jp/n01/n64/software/nus_p_nalj/smash/flash/index.html

 ゲームキューブのソフトの中で一番期待のものが『大乱闘スマッシュブラザーズDX』です。
 弟なんて買う気マンマン。キューブだって買っちゃいます。(金があればね)
 必殺技が4種類に増えちゃって、リンクが多段ヒットさせたり、ブーメランが弓矢になりました。
 あと新キャラとして"ピーチ姫"&"アイスクライマー"などが増えています。
 ピーチは空中浮遊とパラソル落下で復帰力はNo.1。
 アイスクライマーは2人で1組。別個で攻撃できます。
 その他、キャラガ細かく描かれています。そしてエフェクトも激しくなっています。
 フィールドも各キャラに数種類存在するようです。マリオとピーチでそれぞれあるのかな? あとキャラ以外にフィールドで動き回るものがあるようです。スターフォックスのアーウェンみたいなものです。F-ZEROではマシンが実際にレースをしていて、これが破壊可能だったりします。

 あっ、今ピカチューが潰れました。スマブラやってたんですが、NPCのピカがタルを背負ったら、そのままの態勢で潰れちゃいました。そのままだと攻撃が当たらなかったので距離を置こうとしたら、タルを投げてきやがった!


[9] プロジェクトの足りないところ Casper 2001年07月22日 (日) 21時36分
 Casperが表示&ネット、Gがモデリング、龍難が音声入力、姫がセンサー、DMACがサウンドと他となっていて、これでプロジェクトが進行しているわけですが、足りないところ、まだやってないところってない?
 どうも全体のイメージや馬の具体的なパラメータ等の設定が出来てないですよね。こういう場合、今までだと……
  その1:それに詳しい人がやる。(前回やった等の経験者)
  その2:手の空いた奴がする。
  その3:一番役割の近い奴がやる。
  その4:仕事の少ない奴がやる。
  その5:しっかりした人、能力の高い人、やらなきゃって思った人がやる。
 ……はっきりいって最後の状態はツライデス。末期的状況、崖っぷちです。
 で今回なんですが、全体のイメージは私っぽいです。でも、でもでもでもみんなで相談したり決めたりしないとやってられないです。っていうか始めに決めとけです。最初の話し合いで決めとくべきでした。今回の場合、馬のよさ、そして自然との共生を織り交ぜなきゃなんないです。
 馬のパラメータは入力系に近いということで、姫、龍難あたりが協力して作ってくれると嬉しいです。でも作るとしたら、下のモデル定義をして、スクリプトにするわけですから、その土台をこっちが作っておかないと、出来たけど見れませんなんてことに…。