WebGL Fundamentals の続きを読んで寝よう。

  • 3D
    • 3D Cameras
      • この章は少し解りにくい。突然出てくる逆行列。 リアルタイム描画プログラムで逆行列を計算するのはたいへんコストがかかるので心配だ。
      • 逆行列が出る理由は本章の gluLookAt 風の関数の設計方針が既存のものと異なるからだ。 著者がコラムで主張していることは正しいのかもしれない。
      • コメント欄で著者に数学の理解について質問している人がいるのがいい。私も同じことを訊きたい。 著者は理解していなくても応用できればいいンだという立場だが、 それだと単位ベクトルのベクトル積を明示的に正規化するようなコードを書いても気付かなくなりがちだ。

1:35 消灯するか。

10:00 起床。月曜の朝に限ってやる気がゼロになる。納豆とミニおにぎりを食う。

10:20 とりあえず PC を見る。WebGL Fundamentals を読んで時間をつぶす。

  • Lighting
    • Directional Lighting
      • ページ中のインタラクティブ要素が相変わらず強い。
      • すっかり忘れていたが、照光を有効にするときには頂点色を無効にする。
      • シェーダーでは法線は varying 要素。原理を考えれば理解できる。
      • シェーダーでは法線ベクトルを normalize することは普通。コメントの言うとおり。
      • 法線に適用する行列はモデル(ワールド)に適用する行列そのものではない。
      • 昔の OpenGL にあったそれ系の関数はすべて一掃されたらしい。
    • Point Lighting
      • 点光源の場合、法線計算はモデルポリゴンが十分細かいことが期待されるようだ。
      • 頂点シェーダーではなくフラグメントシェーダーで法線の正規化をするのが基本。これも varying からくる線形補間の回避が理由。
      • 鏡面反射は対象における光源方向とカメラの方向の「半分の」方向を考慮する。
      • 照光処理を本格的にやると、シェーダーのコードが増えるようだ。
      • 鏡面反射に指数関数的係数をつけてまぶしさをやわらげる。
      • GLSL の pow は負のベースを受け付けない。
    • Spot Lighting
      • 局部照光は点光源のそれの発展形。
      • 著者は可能な限りはシェーダー中で条件式を使わないと言っている。
      • GLSL の stepsmoothstep はあとで調べる。と思ったら後者はページ末端のコラムに説明がある。
  • Structure and Organization
    • Less Code, More Fun
      • 純粋にコードを扱いやすくする方法論。ボイラープレートのページを参照。
    • Drawing Multiple Things
      • 今まで一つしかなかったものが複数になるので、この記事から理解が難しい。
    • Scene Graphs
      • シーングラフの簡単な定義。木構造をしていて、節が行列を持っていて……。
      • ノード調整方法は面白い。

14:15 空腹になるようなことは何もしていないが、おやつ休憩。

15:00 外出。押上バス停から錦糸町駅へバスで移動。

ハローワーク墨田。求人検索。応募可能な求人がいよいよもって消えていっている。 具体的な数字を出すと、一週間分で 2 件あればいいほうだ。いちおうめぼしい求人票を紙に打ち出して引き取る。 あまった時間は二階休憩室で携帯電話をチェック。

17:15 アルカキット錦糸町へ移動。トイレと書店。

17:55 タイトー F ステーションオリナス錦糸町店。MJ プロ卓東風戦 5 クレ。 成績はトントンだが、ラスを引かなかったのは評価したい。 使いづらいドラを大事にしていいことがあった局がままあったので、これは習慣づけよう。

【SCORE】
合計SCORE:+11.3

【最終段位】
四人打ち段位:覇王 幻球:16

【7/5の最新8試合の履歴】
1st|-*------
2nd|*-*-*---
3rd|---*-***
4th|--------
old         new

【順位】
1位回数:1(12.50%)
2位回数:3(37.50%)
3位回数:4(50.00%)
4位回数:0(0.00%)
平均順位:2.38

プレイ局数:39局

【打ち筋】
アガリ率:17.95%(7/39)
平均アガリ翻:3.57翻
平均アガリ巡目:10.14巡
振込み率:7.69%(3/39)

【7/5の最高役】
最高役のデータがありません。最高役は、跳満以上のアガリが対象となります。

気分転換にビートマニア STANDARD をワンゲーム。レベル 9 の簡単なやつとレベル 10 の未プレイを一つ。

20:00 カスミオリナス錦糸町店。369 円。

  • オクラ茄子丼
  • 国産鶏ささみのアスパラチーズカツ (2)
  • ブラックチョコ

20:20 ビッグエー墨田業平店。314 円。

  • 絹豆腐 (2)
  • おにぎりセット(鮭・ゆかり)
  • ハムマヨパン
  • ツイストドーナツ (3)

20:30 曳舟の部屋に戻る。そういえば夕方から蒸し暑かった。シャワーを浴びる。そろそろ散髪か?

風呂から出て勤務用の携帯電話の充電をセット。PC を開いていつものルーチンへ入る。

21:40 オンラインに切り替える。ニュースをチェックしてから WebGL Fundamentals を読む。

  • Geometry
    • Geometry - Lathe
      • まさかの Bezier 曲線の解説。私がこれまで見てきた中で最も優秀なプレゼン。
      • 折れ線で近似する理論も面白く記述されている。
      • ただし、この曲線はまともなモデリングでは採用しないのだ。区分的に合成するときに扱いづらい。
    • Loading .obj files
      • 遠い昔に obj フォーマットの parser を書いた記憶がかすかにある。
      • テキストファイルを読み込むのに fetch を使うのはやはり普通のことのようだ。
      • インターネットのどこかに CC-BY 4.0 なデータが存在する。
      • カメラ位置の自動計算アルゴリズムあり。
      • もっとも、obj ファイルはたいしたデータを持っていないので進んで使うものではない。
    • Loading .obj w .mtl files
      • mtl フォーマットは知らない。
      • Promise.all の使い方が上手い。
      • 環境光と発光の実装例アリ。
      • 繰り返しになるが、シェーダー中で条件式を使うな。GPU やドライバーによっては性能が落ちる。