LoginSignup
0
0

More than 1 year has passed since last update.

GUI改造4 up変更

Last updated at Posted at 2022-12-07

「instantNeRFで遊ぶ Advent Calendar 2022」の8日目です。

今日はup directionについて調べてみました。

業務外の個人的な検討活動です。

警告
環境や入力内容によっては現在使用できている状況が壊れることがあります。
あなたの責任と判断で試してください。私は責任を取りません。

transform.json

upの名前で指定できます。
8-1.png

testbed.exe 従来

マウスの右ボタンを押しながらマウスを動かすとモデルの向きを変更できますが、upの設定内容によっては動かしにくい場合があります。

挙動を調べた結果です。
黄色の矢印がドラッグした方向、赤・緑・青色の矢印がそのときのモデルの動きです。
8-2.png
upを[0,1,0]にしたとき、左右と上下にドラッグしたときのモデルの回転軸が重なっていました。

nerf_loader.cu

transform.jsonのupが読み込まれる部分のコードを見ました。
8-3.png
yがx, zがy, そしてxがzに代入されていました。
したがって、[0,1,0]は[1,0,0]になりますので、マウスの上下のドラッグが左右のドラッグと重なってしまうようです。

testbed.cu

upはcolmap2nerf.pyの中で変更されます。
結果的に変換後の姿勢は出たとこ勝負になってしまうので、今回のようにモデルが横倒しになってしまうことがあります。

下記の部分を追加し、testbedの実行中にモデルの姿勢を変更できるようにしました(正確にはカメラの向きを変える座標かもしれません)。

8-4.png

			int up_dir;
			if (m_up_dir.x() == 1) up_dir = 0;
			if (m_up_dir.y() == 1) up_dir = 1;
			if (m_up_dir.z() == 1) up_dir = 2;

			ImGui::Text("mouse left-right: "); ImGui::SameLine();
			accum_reset |= ImGui::RadioButton("u1", &up_dir, 0);	ImGui::SameLine();  ImGui::TextColored({ 0.95f, 0.05f, 0.05f, 1.0 }, "x");		ImGui::SameLine();
			accum_reset |= ImGui::RadioButton("u2", &up_dir, 1);	ImGui::SameLine();  ImGui::TextColored({ 0.05f, 0.95f, 0.05f, 1.0 }, "y");		ImGui::SameLine();
			accum_reset |= ImGui::RadioButton("u3", &up_dir, 2);	ImGui::SameLine();  ImGui::TextColored({ 0.05f, 0.05f, 0.95f, 1.0 }, "z");
			ImGui::Text("mouse up-down: "); 						ImGui::SameLine();  ImGui::TextColored({ 0.95f, 0.05f, 0.05f, 1.0 }, "x");

			if (up_dir == 0) m_up_dir << 1, 0, 0;
			if (up_dir == 1) m_up_dir << 0, 1, 0;
			if (up_dir == 2) m_up_dir << 0, 0, 1;

testbed.exe 変更

赤枠で示した部分のラジオボタンが追加されました。
crop aabbを開いてGuizmoを表示していると、回す方向が見えやすくなってさらに便利です。
8-5.png

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0