511 日目(晴れ)東京都港区港南の図書館
コードの残りを研究しつつ、途中で YouTube を観る。
- 【BPL 2021】セミファイナルステージ第1試合 APINA VRAMeS vs SUPER NOVA Tohoku - YouTube
- ゲームの後半が面白い。Y&Co. is dead or alive は魔法を見ているような感覚を味わった。
- ダブル解説が上手く機能している。
- 特殊勝利者宣言は「ニタテしたらやろうと思っていた」。
あのソフランは本当に何をやっているのだろう。 見返してもターンテーブルを空回ししているくらいしかわからない。未知の技術。素晴らしいな。
麻雀の練習。寝る。最近は寝ている時の夢を憶えていることがよくある。 若いときの学校のイベントか何かでどこかの施設のロビーで漫画雑誌を読んでいる。 少女漫画の雰囲気。一緒にいる二人くらいの生徒も女子。これは何を意味するのだろう。 こんな経験はなかったはずだが。
11:00 起床。納豆とコーンマヨパンを食す。マヨネーズで納豆のタレの塩味を抑える感じでいい。
PC を開く。Twitter を見たら wac 先生のほうが面白い夢を見ている。さすが。
- 【家ノス】おうちノスタルジア初体験配信【DOLCE. / NOSTALGIA / 音ゲー】 - YouTube: これ途中から視聴していない気がする。せっかく画面右に出てきたので再生。
- WebGL2 Load Obj
- Wavefront .obj ファイルはオンラインで見かける 3D ファイルの中でも最も一般的なフォーマットの一つ。 ここではその簡易な解析器を実装する。ここにあるように、シンプルなテキストで表現されている。
- JavaScript の非同期関数
fetchを利用するので、非同期処理について言及がある。Image.onloadのような感じで使えるから、ここまで来た読者なら混乱しない。 - OBJ は座標成分とインデックスを羅列するものらしい。
- 法線ベクトルがあるので、シェーダーで照光処理する。
- 初版コードまでは未知の描画コードはない。基本的にローダーの実装がメインか。
- OBJ は他ファイルへの参照をパスの形で含む。
- 今回は smoothing group を無視する。
- カメラの初期位置をいい感じに決めたい。モデルの境界箱を計算して視錐台を決める。
それには前回の
getExtentsを利用する。その一般形も実装する。 - 第二版は椅子の描画。色はランダムのまま。次は OBJ から色を取る。 テクスチャー座標があるのに色もあるのか。
- 第三版は本。次回表面材。
- A bunch of notes が部分的に重要。
- OBJ ファイルは利用しないほうがいい。使用したい OBJファイルがある場合は、 まず他の有力なフォーマットに変換して、それを使用する。
- Sketchfab - The best 3D viewer on the web: TODO
12:40 Load Obj のコードの仕込みを始める。椅子モデルがデカイ。
13:00 おやつ休憩。さっき食ったばかりだ。食べる量を調整する。 カップ麺と豆腐を食い、ドーナツは明日にする。
14:00 外出。夏が戻ってきたかのような暑さ。湿気はないか。 イトーヨーカドー曳舟店で体温チェック。スカイツリータウンに移動。トイレ。
地下鉄に降りて浅草線で三田駅まで移動。地上に出る。図書館逃避行開始。 まず第一京浜を南下して最初の交差点を左折。芝浜方面へ歩く。 この辺は不案内なので携帯電話の地図をちょくちょく確認する。ホームレスのときにはできなかったことだ。 川が入り組んで流れていて、適当に歩くわけには行かない。 バス通りに出る。田町駅から品川駅まで通っているようだ。これを使えば良かった。まあいい。 港南三丁目に向かう。一瞬寂しいところが続くが、すぐに住宅地になる。
15:30 港区港南図書館。記念撮影ののち入館。個人的に気になっていた二階の謎の小部屋を確認。 名目は PC 室なのだが、高々二席しかない不思議な空間だ。時節柄閉鎖されている。 三階で産経新聞、東京新聞、ファミ通を読む。学ぼう産経新聞、二人の会話イラストが使いまわしだな。
16:00 退館。来た道を戻る。バスは本数が少なくてつかまらない。徒歩だ。
三田駅。三田線で神保町駅へ。新宿線に乗り換えて小川町駅へ。
17:10 秋葉原 HEY 二階。イルベロ、ビートマニア、G ダライアス Ver. 2 をパラパラプレイ。 イルベロは 3 ゲーム目が絶好調だったのに、ボスラッシュのオシシを見逃して凡スコアと堕す。 これで退店を決意した。19:30 退店。
20:20 ビッグエー墨田業平店。449 円。
- 絹豆腐
- 豚カルビ&焼鳥重
- ちっちゃい板チョコデニッシュ (4)
- ふっくらジューシーいなり (3)
20:35 曳舟の部屋に戻る。シャワーを浴びる。晩飯を整えつつ PC を開く。 メシを食いながら麻雀の練習。
写真とビデオの整理。実写ビデオでやりたいことがあるので、その素材になると思う。 携帯電話からケーブルでファイルをインポートするのに分単位で時間がかかるのは環境が poor だから?
- 図書館の写真は 25% に縮小
- イルベロのスコアは 12.5% に縮小
- ビデオは放置
インターネットに行く。
- 橋本真也 入場曲 爆勝宣言 - YouTube: 今回はゲーム音楽のアレンジではない。橋本選手は存命だったら今頃何をしているか。
- 【BPL 2021】セミファイナルステージ第2試合 SUPER NOVA Tohoku vs ROUND1 - YouTube
- 超久しぶりの dj TAKA 先生。太った、いや、貫禄が増したな。
- 副将戦で EX カードの仕様を理解した。
- 大将 U*TAKA 選手のインタビューが印象的だ。
22:20 キューブのコードを動作確認する。
- JavaScript の正規表現リテラルを忘れていた。
const keywordRE = /(\w*)(?: )*(.*)/;のように書くのだ。 const [, keyword, unparsedArgs] = m;の文法を確認すること。twgl.setUniforms呼び出しを二度に分ける必要はあるか検証したい。 それも含めてrenderには最適化の余地が明らかにあるが、教材なのでそのへんには目をつぶる。
椅子のコードに取り掛かる。BPL が気になって作業が進まない。
let webglVertexDataの宣言は空の配列でいい。const parts = obj.geometries.map(({ data }) => ...のブロックは cube のコードからの面白いリファクタリングだ。twgl.setUniformsが二度に分かれているのが今回活きる。ループの内外で分けたのだ。gl.bindVertexArray(vao);はループの中である必要がある。partsというコレクションの各要素に対してvaoそれぞれが割り当てられている体で処理する。
最後にカメラ位置を椅子から遠ざけ、画面の中央に移動する処理を加えて椅子コードを終了する。 BPL の再生も終わる。ラストの DJ は何か隠れたテーマのようなものがありそうだ。
23:55 忘れないうちに Twitter の状態を更新しておこう。