TAKAの日記を紹介| オリジナル小説自作ゲームアプリリンク |
| トップ >日記 |
TAKAの独りごち今は3Dゲーム制作メイン――いや、メーン! |
| 2017年の日記 『11月26日』 やっべ、もう今年もあと一か月しかないんですってよ。はぁ……今年は何もできていないんですのに。しかも毎年年末年始に抱き枕カバー絵を描いていましたが、今年は……ねえ? そんなものをアップしたらまたまたサイトが削除されてしまうかもしれませんし……ねえ? という訳で、なんとかゲーム作りの方を頑張りたいところですが、こちらも夏の状態でほぼ止まってますからねえ。というのも、7月ごろに敵のモデルを作ってアニメーションをつけてみたのですが、どうやら能面が敵として出てくる3Dフリーゲームがすでにあったみたいで、がっくりこんです。9月にはまたwindowsアップデートでパソコンがロゴ画面でフリーズしてインストールし直さなければいけませんでしたし、10月はサイトが削除でしょう? そりゃーやる気もなくなりますよ。 また、以前のように敵なしマップ移動だけしかできないプログラムをアップすることになるかもしれません。 『10月22日』 今日は衆議院議員総選挙の投票日です。みなさん、投票はお済ですか? 大事な一票、棄権することなく、雨にも負けず、風にも負けず、投票に行きましょう。 『10月3日』 おそらく規約違反だと思うのですが……サイトが削除されてしまいましたので、一時的に昔のIDでサイトを立ち上げました。規約違反だとすればCGのページが原因だと思います。が、他に原因があったかもしれませんのでとりあえずトップページだけ復活させたと言うわけです。一応このサイトは一時的という位置づけですが、もしかしたら移転先として定住するかもしれません。そのときはよしなにお願い申し上げます。 他のページは規約違反にならないか現在精査中(個人的に)です――(。´・ω・) 『9月6日』 やる気スイッチ わたしはどこにあるんだろう 誰か見つけておくれよ わたしだけのやる気スイッチ (´・ω・`) 『7月29日』 次の更新でプログラムをアップといいましたが、今のままアップしてもフィールドを移動できるだけで面白くもなんともないので――いろいろあったのでわたしはこれだけでも十分満足できているのですけれども――とりあえず、よしえ的なのを一匹くらい野に放って自由に動かせるようになってからのアップにしようと思い直しました。ええ、前回の更新から二か月余り……それはそれはいろいろありました! わたしの使っているPC LenovoG500 は初期のwindows10なら問題はないのですがアップデートするとなぜか電源を落とした後起動するとlenovoのロゴが表示された後そのまま起動しなくなり、基盤のボタン電池を外さない限りlenovoのロゴで止まるを繰り返すのです。なので上記の面倒くさい作業の後、起動したらすぐさま「設定→更新とセキュリティ→更新履歴→更新プログラムのアンインストール」で更新されたプログラムをアンインストール。これで再起動してもlenovoのロゴで止まることは無くなります。そんなことがwindows10にアップグレードして以来幾度となく繰り返していたのです。というのも、windows10の自動更新を「サービス→Windows Update」から停止・無効にしておいてもいつの間にか更新プログラムをダウンロードされ、再起動を促されて始めてWindows Updateが勝手に起動していたことに気づき――仕方なく再起動で更新――デスクトップが表示されたら更新プログラムをアンインストール――Windows Updateを無効にする――普通に起動する――忘れたころにまた「更新プログラムをダウンロードし終えたので更新のための再起動を」と促される――を繰り返していたのです。そして、そんなわたしの単調な日々を打ち壊すべくmicrosoftさんは大型アップデートという最終兵器を用いたのでした。もちろん、いけずなmicrosoftさんはわたしに何の連絡もなくすべての準備を整え、去る6月初旬に「おまえを倒す準備は整った」と言わんばかりに、いつも通り「更新のために再起動を」と催促してきたものです。 わたしはいつも通り対応しました。ただ、今回は二時間近く青い更新画面が続きましたが、それが終われば慣れたものです。長時間かかった物のようやくデスクトップが表示され、何が更新されたのかアンインストールする前に確認するとコントロールパネルがスタートメニュー右クリックから無くなっている――「他にもいろいろ変わっているのでしょうが、コントロールパネルを無くすだなんて!」と思いながらすぐにでも更新したプログラムをアンインストールしたのです。アンインストールは何の問題もなく終わりました。表面上は。winodowsさんも「あとは再起動してください」というではありませんか、わたしは何の疑いもなく指示に従いました。 そして起動しなくなりました。何か読み込んでいる素振りの丸の輪っかがくるくると回り、電源が切れて振出しを繰り返すのです。リカバリーディスクを使い修復を試みるも、半時ほどの時間をかけたのち「修復できませんでした。変更は加えられておりません」なんてことを言います。データを残して再インストールを試みるも、なんとこちらも失敗してしまうのです。わたしは仕方なく、以前作っておいたwindowsイメージで元に戻したというわけです。 で、そのwindowsイメージはそれほど古くはありません。4月後半あたりに2テラの外付けHDDを中古で買ったので、とりあえず作ってみたのです。これがなければわたしは廃人に近い存在になっていたでしょう。とはいえ、一か月ほど進めたプログラムも3Dモデルも一か月分戻されました。よく、プログラムは一度作ったらそれを破棄すればもっといいコードが半分の時間でできるようなことを聞いたことがあります。わたしは無理です。そもそも、プログラミングは趣味ですし、上記のような苦境にぶつかり、奇跡的なタイミングでバックアップは取ってあったとして、わたしは理論的な人間ではなく気分と感覚で行動しますし、プログラムもインスピレーションで記述するような人間ですから、同じ時間をかければ同じものができるなんて保証はありません。それどころか、やる気がごっそりなくなりプログラムからも目を背けてしまうなんてことは、実にありそうなことです。実際わたしはそうでした。 そんなわけで今日まで更新をしなかったのでした。 とはいえ、今、やる気は十分です。やり直しの効果はあったようで、処理速度向上の方法をいくつか思い付き、試した結果、ノートPCでも随分とスムーズに動くようになりました。前回と木や草、小物の配置が違いますが、フィールド自体は同じですので、同じ場所に立って比較用の画像を用意したのが右になります。 前回は 昼間30m先まで描画でfps21 夜間15m先まで描画でfps34 今回は 昼間40m先まで描画でfps39 夜間20m先まで描画でfps60 ホラーゲームを作ろうとしているわけですから本番は夜間。昼間でもフォグを使って霧でもあることにすればfps60は余裕でしょう。というわけで冒頭にも書きましたが、とりあえずアップを目標に本編とは全く関係のないミニゲームあたりに取り掛かろうと思っております。 『5月30日』 次の更新でとりあえずプログラムをアップしようと思います。フィールドの移動しかできませんし、もちろん敵も出てきませんけど。こんな感じの物を作っているということを知ってもらえればと言うところです。 ところで、わたしはXbox360を持っていまして、そのコントローラーがusb接続であることを気付いていたのですが以前「これパソコンでも使えるよね?」と思い差し込んでみてもLEDが点灯するだけでうんともすんともならず、まあPS2コントローラーをusb接続できるハブも持ってましたし、わざわざドライバをダウンロードしようとも思わずじまいでハードごと押し入れに片してあったのでした。それを引っ張り出してきてドライバもダウンロードして使えるようにしました。なぜかといえば、風の噂で「パソコンのコントローラーはパラメータが統一されていないらしい」なんて聞いたからです。これは恐ろしいことです。たとえば、コントローラーで上ボタンを押したとして、プログラムでパラメータを取得したところ「下」のフラグがonになっているかもしれないわけです。まあ、実際は方向キーではそんなことはあり得ませんが――という訳で、Xbox360のコントローラーを差して自作3Dプログラムを実行させてみたところ、キャラがずっと上を向いていました。ボタンの配置も方向キーと左のアナログスティック以外はめちゃくちゃでした。いえ、microsoft製なのでこちらの値が正しいというべきでしょうか? まあ、ボタン配置は変わったところで特に問題はないのでこのままにしておいてもいいのですが、問題は右スティックが今のままでは使えないと言うことです。ということで一々デバッグモードで止めてパラメータの値をチェックしたところ、エレコム製では使われていなかったlRxとlRyの値に右スティックの反応値が入っているのですね。あと、常に上を向いているのはLトリガーとRトリガーがエレコム製で右のアナログスティックの値として使っていたZ値に反応値が入っているからですね。原因が判明したので、lRzが0かつlRxとlRyの値が0以外の場合はXbox360コントローラーなのでlRxとlRyの値をlZとlRzに代入するという処理で――ああ、うまく検出されるようになりました。ついでにボタン配置もPSコントローラーと同じになるようにしました。これでXbox360コントローラーとエレコム製(PSコントローラー変換器がエレコム製なので、そこから出されているコントローラーもきっとパラメータ配置は同じでしょう……おそらく)コントローラーは問題なく使えるはずです。他は手持ち豚さんなので試しようがありません。もちろんキーボードで操作できなくもないのですが、以前より操作コマンドが非常に多くなりましたのでコントローラーがないときついと思います。 『5月19日』 ついに来るとこまで来たな! という感じですかね――FPSの値が。確かに。 とはいえ動画はだいたいfps29くらいでエンコードされていて、それを見て「遅い」とか「カクカクしてる」なんて思うでしょうか? 中には滑らかな動画を追い求めてそれ以上でエンコードされる方もいらっしゃるかもしれませんが、ほとんどの方はそれほど気にならないのではないでしょうか?――もちろんfps21でエンコードされたもんなら話は別ですけども。ということは、FPSは30くらい出ていればそれほど不快にはならないはずなのです。ところがゲームをしていて50FPSを切ろうものならもうもっさもっさでイライラせずにはいられなくなるのはどうしてなのでしょう? それは移動量やアニメーション、回転角度の加算をフレーム毎に行っているせいです。とはいえそれも普通に考えてみればなにも間違ってはいませんし。実際わたしもそうしていました。しかしこうするとFPSの値が落ちるとパラメータの変更も遅くなります。連動して移動量やアニメーション、回転速度なども遅くなります。フレームごとに変えているわけですから当然といえば当然ですね。パソコンがユーザーが指定したFPSを守ってくれればこんな問題は起きないのですが、しかしユーザーが設定したFPSと実際にパソコンが処理して出されたFPSは同じになるとは限りません。そこで考えたのですが、ユーザーが設定したFPSの値で実際のFPSの値を割った値を「リアルカウンター」としてフレーム毎に計算して出しておきその「リアルカウンター」に処理落ちしてほしくない、たとえば移動量やアニメーション値を掛けてやればいいのではないでしょうか? ということでGetRealCounter( float ) という関数を作り、この関数に値を渡せばユーザーが指定したFPSのフレームで得られるはずだった本来の値が返されるようにプログラムミングしてみた結果。FPSが60から30に落ちたとしてもそれほど不快にはならなくなりました。そこで気を良くし、マップを大きくして木の数を増やして、ビルボードの描画領域を長くし、よりリアルな感じに――と調子に乗った結果が右です。夜になれば描画範囲はぐっと縮まるので若干早くなっています。けれども、FPS21って! pksks! 『5月7日』 杉の木をモデリングしたのでマップ上ランダムに配置してみました。ランダムに生成して配置する処理はビルボードで作ってありましたので簡単にできたのですが、あとは衝突判定。とはいえ、これも一番近い木を検索して一本だけ六角柱の衝突判定用ポリゴンを作り判定するだけでした。もしこれをメタセコで一本一本マップ上にはやしていくとしたら、すべての木の衝突判定をする羽目になり、その処理自体はメタセコデータから衝突判定を作るプログラムを作ってあるので簡単どころかメタセコのデータだけあればいいのですが、問題は木一本に最低限必要な衝突判定用ポリゴンは上下をくり抜いた六角柱――三角面換算で12面×マップに配置した分(今回は202本)ですから、木だけで2424回、それもフレームごとに判定することになります。当然処理スピードも馬鹿にはできません。それが、プログラム上で管理すれば衝突判定は12回で済みますし、木の配置はランダム、地面のマテリアルによって杉の木だけ、背の低い木だけ、などの指定も可能です。生えた場所が気に入らなければ木の近くまで行ってdeleteを押せば消せますし、プレーヤの位置に直接生やすこともボタン一つでできるようにしました。そのデータをビルボード同様保存して読み込めるようにもしましたのでマップ作りはだいぶ容易になった気がします。 まあ、問題はFPSですよね。杉の木はできる限りポリゴン数を抑えるため、葉の部分をすべて三角ポリゴンで作りました。で、大体100ポリゴン前後です。さらに、プレーヤから一定以上離れたものは10ポリゴンの超ローポリ(もうビルボードと言っても過言ではありませんね)に置き換え、ビルボード同様、常にこちらに表を見せるようにしています。カメラの向きとFOV角度から、カメラの視覚外なら描画しないようにもしました。草のビルボードはカメラから一定以上離れると下のポリゴンを一つ減らされ、上部分だけ描画、さらに離れると描画しないようにもしました――と、一応素人が思い付く限りのあらゆる高速化、最適化を行った結果が右という訳です。 スクリーンサイズ1360×768(SHARP AQUOS)でFPSが平均で52、一番遅いところで46でした。ノートパソコンでこれくらい出ればいいんじゃないでしょうか? と思ってレノボG500の性能を検索した結果、レノボG500はノートパソコンの性能としてはそこそこだそうです。そこそこってどうなのよ? とも思いまして、フリー3Dの厄村をダウンロードしてプレイしてみたのですが、最高設定だと激重。最低設定だとサクサク。比べてみると――わたしのプログラムはやや重です。まあ、わたしのは長年の改良を経たとはいえ、自作のゲームライブラリですからねぇ。そりゃあ仕方ありませんよ。かといって、今更新しい言語を覚える気にもなれませんし――なんといっても、せっかくゲームライブラリを作ったのだから使ってあげないと供養にもなりませんよ……わたしのね。 ところで、「そろそろこのプログラムをアップしましょうか。狭い範囲のマップ移動しかできないプログラムを! さてさてみなさんのお家のパソコンではどれくらいのスピードで動くのかしらん?」なんてことをそこはかとなく思っております、今日この頃でございました。 『4月23日』 一日二つのモデリング――もうやってません。だってだってだって! うちのパソコンじゃちょこっと3Dモデルを増やしただけで処理落ち激しいんですもの! 下の日記では威勢のいいことを書きましたが、どうやら間違っていたみたいです。ああ! もう! これじゃあ、これ以上小物を作っても配置なんてできませんし、配置したらしたで処理スピードが不快レベルまで落ちるでしょうよ! それなのに、モデリング? 作っても配置できないのに? Xファイルで草とかを豪勢に植え付ける? そんなことをしたら動きませんよ! というわけで、なんとか草の数を減らす方法を考えました結果、ビルボードという方法に行きつきました。ビルボードがなんなのかといえば、常にカメラ方向に向いているテクスチャです。これを使えばポリゴンの数は1/2〜1/3で済みます。常にカメラに向いているので配置の角度なんかを気にする必要もありません。例えば上空のランダムな位置に生成して、地面に垂直に伸ばした線分とマテリアルが草地指定のポリゴンが衝突していたらその位置に植え付ける――これだけでもきっといい感じになると思います。そこで苦労してプログラミングしてみた結果が右です。 ビルボードの数6000枚でFPS35……ま、いいんじゃないですか? Xファイルでの描画とは違い、カメラからの距離で一枚一枚描画するかしないか設定もできますし、ビルボードの数をもう少し減らせばFPS60は余裕で出せます(出ました)。 ところでみなさん気になっていたことでしょう、二枚目の画像です。ウインドウズエクスペリエンスを測れるフリーソフトを実行しましたところゲームグラフィクスの項目がすごいことになりました。 ええ、有り得ませんよね。でも、何度評価し直してもこの数値なので、もしかしたら……バグですね。 『4月4日』 お風呂場。家のお風呂場を忠実に再現しました(笑)。一番苦労したのはテクスチャです。モデリングにはもう慣れました。けれどテクスチャは、ただ写真で撮っただけではだめで、いろいろと加工しないとテクスチャとして使い物にならないのです。ああ、もういやだわ! いやだわ! ところで、この中で一番ポリゴンを使っているのは水道の蛇口です。三角面の数は約600。二つあるので1200。このお風呂場の合計三角面の数が約1500ですから、蛇口が占めている量は相当なもんです。とはいえ、これ以上少なくすると微妙な感じになってしまいます。で、思ったのです。 「わたしのパソコンだと、どれくらいのポリゴン数まで耐えられるのだろうか?」と。 わたしのパソコンはノートパソコンレノボG500、CPU1005M、1.9GHz、と3Dの描画能力はお世辞にも優れているとは言えません。いえ、とても低いです。 そこで、このお風呂場をXファイルにしてプレーヤ座標から-10〜10の間、0.1間隔で100個並べて描画してみたところ――FPSが30〜20前半くらいまでおちました。マップとプレーヤもそのまま描画してましたので、150000ポリゴン+マップの約30000ポリゴン+キャラクターの約5000ポリゴン=約185000ポリゴンも描画したことになります。正直これは驚きました。きっとFPSは一桁になるだろうと思っていたのですが……ノートパソコンでこれなら、ポリゴン数をそんなに気にせずモデリングができますね。 『3月30日』 Xファイルのテクスチャ描画の設定を間違えておりましたので直しました。アルファブレンドはpngファイルだけではなく、マテリアル色でアルファ値を設定されているものがあるんですよねぇ。二つを分けて処理しなければいけなかったのです。それを、ディフィーズのaの値が1未満の時アルファブレンドで、さらにレンダリングステートの値も弄っていたため、完全透明と完全不透明の場合しかアルファブレンドが有効になっていなかったようなのです。それを直しました。違いは前回の画像と今回、右画像のキャラクターのスカート部分を見てもらえれば分かると思います。実はずーとこの問題に気付いていたのですが、なぜこうなるのかわからなかったので直せずにいたのでした。でも今回治せて良かった! あと、3Dモデルもいろいろ作りました。バスも作り直しました。で、一日二つ以上のノルマは達成してます――よね? 18日からなので、24個以上出来てればいいわけですから……ちょっと数えてみますね。灯篭のパーツを抜かしても32個ですから余裕でノルマは達成していますね。この調子でいきましょう。 トンネル? トイレ? 風呂場? ああ、大物はやる気が起きない! これ、ちょっとやばい症状ですね。 『3月20日』 とりあえず部屋の中における小物を作っただけマップに配置し、Xファイルに変換してゲーム側で読み込んでみましたところ結果は―― FPS 53 と、すでに処理落ち! マップ自体は以前アップした本当に狭い範囲の物で、高低差のある地形と道、バス、二部屋とそれを繋ぐ廊下のみ。そこに今回小物を置けるだけおいてみたのですが……。 スクリーンサイズがフルスクリーン(1680×1050)とはいえ、この程度で処理落ちするようじゃ話にもなりませんから、速度アップを図れないものかいろいろと試してみたいと思っております、今日この頃でございます。 『3月18日』 怖い小物とビール、机、椅子、外の小物を作りました。今日で3Dの小物を作り始めて十日くらいですか? 結構作りましたね。これからは、小物も作りますが、大物にも取り掛かろうと思います。トンネルとか、トイレとか、風呂場とか。 『3月15日』 ガードレールと標識を作りました。 両方とも簡単に作れる――と思っていたのですが、標識は想像通りでもガードレールは三時間以上かかりました。これからそんなものが続々と出てくるのでしょうね。 『3月13日』 上のは面の数が66枚。 下のは五つの木の合計面数が568枚。 『3月9日』 二日でこれだけできました。 どうでしょう? 家具はほとんど四角形のポリゴンにテクスチャを張っただけ。マットや飾り物は四角形の平面をナイフでパパパと切って角を削除し、押し出して押し出した面をちょっと縮小―― テクスチャは自宅の汚らしい部分を画質の悪い携帯のカメラで撮り、GIMPで歪みを直したものです。この方がネットで落とした美しく整ったテクスチャよりも生活感が出て、結果よかったかもしれませんね。とはいえこんなものでは足りないどころの話ではありませんので、とりあえず一か月くらいは一日二個以上小物を作っていきましょう。そうしましょう。 『3月8日』 フリーの3Dモデルで何とかしようというのはあきらめました。なぜかといえば、下の日記の通り、プラグインがないと開けない形式のものしか今のところ出会えていないからです。なので、一日ひとつ以上、3Dの小物を作るように心がけましょう。ローポリなら基本図形をちょっと加工すればいいですし、UV操作も複雑な形でなければLEでもなんとかなるでしょう。あとテクスチャは自宅にあるものをパシャパシャ撮って――って、 ああ! もう、なんかね、心が折れそうです! 『3月4日』 3Dのマップ作るの無理! だって、フリーの3Dモデルは洋風の建物しかないんですもの。わたしの作りたいのは和風の廃屋をぐるぐる歩き回るものですもん。もっと言っちゃうと、新しいパソコンでメタセコイアを使おうと思ったら使えないじゃないですか! わたしは以前メタセコイアのIDを5000円で購入したのですが、それは古いパソコンの方でしか使えないらしいのです。となると、無料のメタセコイアLEで何とかするか、古いパソコンを引っ張り出してきてそれを使うか――ということになります。幸い古いパソコンはまだ押し入れにしまってありますから、できないこともないんですけど……けど! ああ、遅い! かといって無料のLEだとプラグインが使えない! UV操作なんてやろうと思ったらたぶん死んでしまいます。 ああ! どうしよう! 『2月20日』 ライト使えるようになったと喜んでおりましたが、実際ライトを使うとなると困ることがいくつかあるんですよね。 一つ目は、ライトを使うとなるとキャラクターに懐中電灯を持たせなければいけない。 二つ目は、懐中電灯を持たせることが出来たとして、キャラのアニメーションはどうするの? 腕だけ独立して動かすなんて芸当とてもじゃありやせんがあっしにはできませんぜ? ということです。キャラに懐中電灯を持たせるには、xファイルを作る段階でキャラの手のひら1ポリゴンだけマテリアルを変えて、そのマテリアルを読み込んでレンダリングする際、ポリゴンの三頂点から内積(三角形の重心)と外積(法線)を計算し、法線と直行する線分のベクトルを出してそのベクトルの角度を出せば、あとは内積の位置にベクトルの角度分だけ回転させた懐中電灯のxファイルをレンダリングすればいいような気がします。しかし二つ目は――考えただけで無理です。なので一つ目を実験的にやってみる気にもなりません。 ということで、アップする際にはキャラクターの正面から光が発生するという愉快な現象をお見せすることになるでしょう。 『2月13日』 また一つ、謎が解けました。 3Dはライトを設定しないと真っ暗で何も見えません。そして設定できるライトの種類は平行光源のディレクショナルライト、すべての方向に光を発するポイントライト、懐中電灯のような一定方向のみのスポットライトの三つがあります。で、今までディレクショナルは反映されるのですが、他の二つがどうやっても反映されなかったのです。なのでずっとディレクショナルだけ使ってきたのですが、ここにきて設定しても反映されない理由がはっきりわかりました。わたしの作ったxファイルのサイズが大きすぎたのです。ざっと見積もって、100倍くらい……。 わたしはプログラムする際わかりやすいように、というより2Dからの流れでといった方がいいかもしれませんが――1=1p。100=1メートルと仮定していました。それも2Dなら0.1の座標なんてありませんし、そもそも小数点以下の数字なんて無視されてどのみち同じ場所に画像が表示されます。位置情報は整数値。(100,100)の座標といえば丁度ゴミ箱のアイコンがある位置かな? と直感で分かります。これが普通です。そんな感覚のまま、3Dの座標もきりの良い整数値(型はfloat型ですが)で管理しておりましたから、もちろんメタセコイアで吐き出すxファイルも1倍で今までやってきていたのです。ところがそれがいけなかったのでした――orz とはいえ、今のわたしはもうスポットライトもポイントライトも使えます! どんどん使っていきましょう!――とも思いましたが、ああ! ローポリでそれらのライトを使うと一体どんなことが起こるか! まあ、そのうち皆さんにお見せしようと思います。 『2月10日』 最近、過去に作った3Dプログラムを眺めています。と言いますのも、ポリゴンと線分の衝突判定が出来そうだと思い始めたからです。ポリゴンと線分の衝突判定――これは実に頭が痛くなる問題で、せっかく3Dを表示できるようにできたのにポリゴンと線分の衝突判定で挫折して、すっかりやらなくなってしまっていたのです。もちろん当時もネットで調べましたが、記号の羅列で理解できず、ましてやそれをプログラミング言語に直すなんてことは想像だにできません。結果として、最終的にアップしたものは見た目はポリゴンとの衝突判定ができているように見えて、実はY軸方向から見下ろした2D座標での衝突判定でした。しかもそれも、衝突座標をメタセコイアを開きながら一つひとつメモ帳にメモし、プログラムで配列を用意するというなんとも残念な方法だったのです。これではすぐに投げ出したくもなります。そして皆さんもご存知か……存じ上げないかもしれませんが……わたしは一度投げ出すと長い期間ふたたびそれに触ることはほとんどありませんから、今までひっそりと寝かしてきたわけです。 ところが最近、フリー3Dゲームの「オトギリ」というゲームをゲーム実況で見つけ、「ああ、いいなぁ、自分もこういうの作りたいなぁ」という、昔のやる気がふつふつと湧き上がってきたため、さっそく昔挫折したポリゴンと線分の衝突判定の仕方をネットで調べてみたのです。それで参考にしたのが下の二つのページです。 Yahoo! 知恵袋 とあるデザイナーの秘密工場 補足ですが、Yahoo! 知恵袋 で質問をしたのはわたしではありません。皆さん同じ問題で悩んでいるのですね!――で、さっそくコンソールで実行してみると、どうやら上の回答ではうまくいかず、線分がポリゴンを通過していなくても線分のベクトル上にあると通過したことになってしまうようです。下の回答は、図解説明されていてとても分かりやすく、始めの回答を眺めていると答えが出てきました。 実際上手くいったのでテンションが上がった勢いでメタセコイアデータ型から頂点座標やマテリアル情報などを取得するプログラムも作り、これで衝突判定はxファイルに変換する前のメタセコイアデータを読み込むだけで完了します。もちろん衝突した後の反応処理がまた頭を抱える問題ではありますが、これは何とかなるでしょう。となると次に困るのは――3Dモデルによるマップ制作ですねぇ……。実は今も、それを製作しようとしていて――挫折しそうなんですよね……。フリーの3Dゲームを作っている人は、どうやってマップを用意しているんでしょう? さすがにすべて自作でなんてできませんし、フリーの3Dモデルを使ってもさすがに配置するだけと言うわけにもいきません。必ず自作しなければいけないところが大量に出てきて、その膨大な仕事量にただただ唖然とさせられ――ている今日この頃なのでした。 『1月1日』 改めまして、 新年あけましておめでとうございます。今年もどうぞよろしくお願い致します。 今年はやはり「さんたく」はないのですね。しかし、「新春つるべ大新年会」は復活したようなので楽しみです。 『1月1日(仮)』 新年、明けましたでしょうか? でしたら、おめでとうございます。わたしはまだ2016年におりますが、2017年が皆様にとって良い年になることを心からお祈りしております。 2016年を振り返ってみて、今年はほとんど更新しませんでしたね。もともとわたしはそれほど更新を小まめにしているというわけではありませんでしたが、それでも更新せずに一か月もすれば何かしらネタを探しては更新しようとするのでした。今回のようにほぼ半年近く更新をしないなんてことは今までありませんでした。実は、今年の9月1に愛犬を亡くしまして、それからずっと何もやる気が起きなかったのです。 愛犬は柴犬のメスで、16歳と11か月――9月22日で17歳でした。人間の歳に直すと100歳を超えるおばあちゃんでしたので大往生だったと思います。けれど、本当はもっと長生きできたはずなのです。わたしが二年ほど前、散歩終わりにジャーキーの塊をあげてしまったことで、それを喉に詰まらせ、その時は動物病院で命は助かりましたが喉を傷つけてしまい、入院し、戻ってきたときには喉の炎症を抑えるために毎日薬を飲まなければいけなかったし、もう前のように散歩することも出来なくなってしまったのです。老犬にジャーキーをあげてはいけないのです。わたしは茶々にジャーキーをあげてしまったことを後悔し、それまで以上に彼女を気にかけ、ゆっくりゆっくりと散歩させたり、離乳食のようなものを毎日口に押し込んだりして、それでも一年も経てば元気とよべるほどになったのです。まっすぐ歩くことはできなくなっていましたが、毎日庭でグルグル回りながら、芝生をバリバリ毟り取って憂さ晴らしをしているようでした。それからさらに一年、ガリガリどころかふっくらとしていましたし、ご飯もちゃんと食べていました。毎日のお仕事の芝生を毟ることも忘れていませんでしたし、すっかりきれいにしたそこに寝転んでは、一日中気持ちよさそうに寝ていました。亡くなる直前もそうでした。 心残りがあるとすれば最近の彼女の写真や動画を撮っておかなかったことです。普段からわたしは、よほどのことがなければ写真や、ましてや動画なんて撮る人間ではなかったですし、彼女がまだまだ元気で、もっともっと一緒にいてくれると疑ってすらいなかったのです。ですから一番最近の写真は二年前の時の病院から帰ってきた、一番げっそりとしていて一番元気のない写真だけでした。遺影にこんな写真は使えませんので、彼女が家に来た直後の写真を遺影にしました。 ![]() ちゃーさん、またいつか会いましょう。 |
