「instantNeRFで遊ぶ Advent Calendar 2022」の4日目です。
testbedのメニューを自分が使いやすい様に改造していきます。
今回は領域を指定するcrop aabbの入力メニューを改造してみました。
業務外の個人的な検討活動です。
警告
環境や入力内容によっては現在使用できている状況が壊れることがあります。
あなたの責任と判断で試してください。私は責任を取りません。
現状
改造前はこちらのように各軸の最小最大が上下に分かれていて視点移動が増えたり、各軸がどの方向に対応しているか分かりにくかったりしました。
testbed.cuの変更
1日目と同様にVisualStudio2019でinstant-ngpのフォルダを開き、testbed.cuの内容を変更します。
追加した部分のコード
float aabbx[2] = { (float)m_render_aabb.min[0], (float)m_render_aabb.max[0] };
accum_reset |= ImGui::SliderFloat2("aabb_x", aabbx, (float)m_aabb.min.x(), (float)m_aabb.max.x()); ImGui::SameLine();
ImGui::TextColored({ 0.95f, 0.05f, 0.05f, 1.0 }, "right");
m_render_aabb.min[0] = aabbx[0];
m_render_aabb.max[0] = aabbx[1];
float aabby[2] = { (float)m_render_aabb.min[1], (float)m_render_aabb.max[1] };
accum_reset |= ImGui::SliderFloat2("aabb_y", aabby, (float)m_aabb.min.y(), (float)m_aabb.max.y()); ImGui::SameLine();
ImGui::TextColored({ 0.05f, 0.95f, 0.05f, 1.0 }, "up");
m_render_aabb.min[1] = aabby[0];
m_render_aabb.max[1] = aabby[1];
float aabbz[2] = { (float)m_render_aabb.min[2], (float)m_render_aabb.max[2] };
accum_reset |= ImGui::SliderFloat2("aabb_z", aabbz, (float)m_aabb.min.z(), (float)m_aabb.max.z()); ImGui::SameLine();
ImGui::TextColored({ 0.05f, 0.05f, 0.95f, 1.0 }, "back");
m_render_aabb.min[2] = aabbz[0];
m_render_aabb.max[2] = aabbz[1];
ImGui::Separator();
Vector3f diag = m_render_aabb.diag();
bool edit_diag = false;
float max_diag = m_aabb.diag().maxCoeff();
結果
個人の趣向に合わせてGUIを変更できるのがうれしいですね。
参考
instantNeRFの座標はこちらを参考にしました。