読者です 読者をやめる 読者になる 読者になる

元派遣プログラマの自称技術系ブログです。雑記とか自作のオープンソースプロジェクトの話とか。
Javaとか組込とかできます。お仕事ください。

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

NyARToolkit C#

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さんから頂いた情報、及び、カメラパラメータファイルを使用しました。有難うございます。