今日は霧だった
なんか変だ。圧縮率を上げたデータをエンジンにかけると、ノイズが乗る。データにはフィルタがかかってるから、基本的にはスムーズ。全部のマトリクスをグローバルマトリクスに変換して、結果を見てもスムーズ。でも、クオタニオンに変換してみると、当然ノーマライズが中途半端。これがエンジンに悪影響を与えているように思える。もっとシンプルにクオタニオンからマトリクスに、さらにクオタニオンに変換し直すと結果がおかしい。エンジンと関係無いぞ。マトリクスからクオタニオン変換を重いけど精度の高い計算方法に変えても結果が同じ。となると、クオタニオンからマトリクスということで、マイケルから手助けを頼まれて、時間切れ。この問題放っておいて良いわけないけど。リアルタイム環境では、いったんマトリクスに変換したら、元のDOF(移動、スケール、クオタニオン)に戻すことは、しなかったから、誰も気が付かなかったんだな。今のエンジンはなんとかしのげても、物理エンジンにこのデータはかなり問題大きいです。マイケル、俺のプログラムのカットアンドペーストだけで自分のプログラムを作るなよ。しかも全部、関数が外にむき出しだぞそれは、せめて名前空間だけは別にしようね。
やっぱり今日も雨降らないんですけど
仕事は、昨日の午前中に実質完了しているので、今日もだらだらクリーンアップ。午後から会議だというデビットからベンチマークを求められたので、計算速度を測ってみる。ってベンチマークは、このプロジェクトが始まる3ヶ月前にデビット自身が測ったんじゃなかったっけ。それでGOがかかったんだけど、本人に聞いてみるとかなり懐疑的。で、測ってみるとエンジンがとんでもなく速い。速すぎて回りのインターフェースの遅さが目立って、かっこが付かないぐらい。千人分を一度にリアルタイムで処理できることになってしまっています。この数字は絶対に隠した方が良い!と言ったはしから、ディレクター達に正直に言ってしまっているデビット。あー、嫌な予感がする。デバッグ用のコードを切り離すとさらに大変なことになってしまいましたが、本体で動く時にはこうならないなきっと。でもまだベクトル演算にチューニングを入れてないから、エンジン自体、2倍速くなるけど、どうしよう。キャッシュメモリのチューニングもまだしてないぞ。ということは4倍分余裕があるから、今日はこれでよしということで、デビットの判断は結局正しかったということにして一件落着。雨にならなかった
ボスが来る5分前に、プログラムが動いた。しかも綺麗な結果が出てる。テストのためとはいえ、なんか喧嘩を売りながらプレーしているバスケットボール選手みたいな動きだ。先週末に入れ替わったプログラムインターフェースに対応できた3番目のプログラムになったようでそれなりにうれしい。サンプルデータでは、カバーできない部分があるので、おかしいと思って、デバッガーでライブラリの動きを追ってみたら、隠れた仕様発見!早速、コンバータプログラムに反映させると、しっかり動くじゃないか。なにがうれしくて自社のプログラムをハックしなきゃいけないのか、とは思うけど、半分趣味なのであまり辛くは無い。GUI付きの豪華なコンバータプログラムにしていたら、マイケルに見つかり、早速仕様追加を頼まれてしまった。