ネコと和解せよ

NyARToolKitCSで自作カメラパラメータが使えない問題について

ARToolkitで作ったカメラパラメータファイルが、NyARToolkitCSで使えない問題の解消方法がわかりました。

NyARToolkitCSUtilsプロジェクトの、NyARD3dUtil.csの下記箇所(91行目)を書き換えます。

修正前

 for (i = 0; i < 3; i++)
 {
   for (j = 0; j < 3; j++)
   {
     p[i, j] = icpara[i][j] / icpara[2][2];
   }
 }
 q[0, 0] = (2.0 * p[0, 0] / (width - 1));
 q[0, 1] = (2.0 * p[0, 1] / (width - 1));
 q[0, 2] = -((2.0 * p[0, 2] / (width - 1)) - 1.0);//ここが変
 q[0, 3] = 0.0;

修正後

 for (i = 0; i < 3; i++)
 {
   for (j = 0; j < 3; j++)
   {
     p[i, j] = icpara[i][j] / icpara[2][2];
   }
 }
 q[0, 0] = (2.0 * p[0, 0] / (width - 1));
 q[0, 1] = (2.0 * p[0, 1] / (width - 1));
 q[0, 2] = ((2.0 * p[0, 2] / (width - 1)) - 1.0);//マイナスを削除
 q[0, 3] = 0.0;

これでたぶん直ると思います。


この不具合は公開当時からずーっと存在したバグだったようです。
修正は時期リリースで取り込みますが、それまでは該当箇所を手書きで直してください。
なお、Subversionのリビジョン205にはコミットしてあります。

この辺の計算がちゃんとわかってないのがバレバレになってしまった。

調査には、hamさんから頂いた情報、及び、カメラパラメータファイルを使用しました。有難うございます。