Rendering of camera target (for debug) and modified camera target behavior

This commit is contained in:
Enrico Turri 2018-10-26 09:50:28 +02:00
parent cbb62142de
commit f651182101
4 changed files with 84 additions and 2 deletions

View File

@ -1,7 +1,16 @@
#ifndef _technologies_h_
#define _technologies_h_
//==============
// debug techs
//==============
// Shows camera target in the 3D scene
#define ENABLE_SHOW_CAMERA_TARGET 1
//==============
// 1.42.0 techs
//==============
#define ENABLE_1_42_0 1
// Add double click on gizmo grabbers to reset transformation components to their default value
@ -12,6 +21,8 @@
#define ENABLE_EXTENDED_SELECTION (1 && ENABLE_1_42_0)
// Add mirror components along the three axes in ModelInstance and GLVolume
#define ENABLE_MIRROR (1 && ENABLE_1_42_0)
// Modified camera target behavior
#define ENABLE_MODIFIED_CAMERA_TARGET (1 && ENABLE_1_42_0)
#endif // _technologies_h_

View File

@ -3209,6 +3209,16 @@ void GLCanvas3D::zoom_to_volumes()
m_apply_zoom_to_volumes_filter = false;
}
#if ENABLE_MODIFIED_CAMERA_TARGET
#if ENABLE_EXTENDED_SELECTION
void GLCanvas3D::zoom_to_selection()
{
if (!m_selection.is_empty())
_zoom_to_bounding_box(m_selection.get_bounding_box());
}
#endif // ENABLE_EXTENDED_SELECTION
#endif // ENABLE_MODIFIED_CAMERA_TARGET
void GLCanvas3D::select_view(const std::string& direction)
{
const float* dir_vec = nullptr;
@ -3365,6 +3375,9 @@ void GLCanvas3D::render()
_render_current_gizmo();
_render_cutting_plane();
#if ENABLE_SHOW_CAMERA_TARGET
_render_camera_target();
#endif // ENABLE_SHOW_CAMERA_TARGET
// draw overlays
_render_gizmos_overlay();
@ -3744,9 +3757,29 @@ void GLCanvas3D::on_char(wxKeyEvent& evt)
case 83:
case 115: { post_event(SimpleEvent(EVT_GLCANVAS_SCALE_UNIFORMLY)); break; }
#endif // !ENABLE_EXTENDED_SELECTION
#if ENABLE_MODIFIED_CAMERA_TARGET
#if ENABLE_EXTENDED_SELECTION
// key Z/z
case 90:
case 122:
{
if (m_selection.is_empty())
zoom_to_volumes();
else
zoom_to_selection();
break;
}
#else
// key Z/z
case 90:
case 122: { zoom_to_volumes(); break; }
#endif // ENABLE_EXTENDED_SELECTION
#else
// key Z/z
case 90:
case 122: { zoom_to_volumes(); break; }
#endif // ENABLE_MODIFIED_CAMERA_TARGET
default:
{
evt.Skip();
@ -4931,8 +4964,7 @@ void GLCanvas3D::_camera_tranform() const
::glRotatef(-m_camera.get_theta(), 1.0f, 0.0f, 0.0f); // pitch
::glRotatef(m_camera.phi, 0.0f, 0.0f, 1.0f); // yaw
Vec3d neg_target = - m_camera.target;
::glTranslated(neg_target(0), neg_target(1), neg_target(2));
::glTranslated(-m_camera.target(0), -m_camera.target(1), -m_camera.target(2));
}
void GLCanvas3D::_picking_pass() const
@ -5251,6 +5283,33 @@ void GLCanvas3D::_render_toolbar() const
m_toolbar.render();
}
#if ENABLE_SHOW_CAMERA_TARGET
void GLCanvas3D::_render_camera_target() const
{
double half_length = 5.0;
::glDisable(GL_DEPTH_TEST);
::glLineWidth(2.0f);
::glBegin(GL_LINES);
// draw line for x axis
::glColor3f(1.0f, 0.0f, 0.0f);
::glVertex3d(m_camera.target(0) - half_length, m_camera.target(1), m_camera.target(2));
::glVertex3d(m_camera.target(0) + half_length, m_camera.target(1), m_camera.target(2));
// draw line for y axis
::glColor3f(0.0f, 1.0f, 0.0f);
::glVertex3d(m_camera.target(0), m_camera.target(1) - half_length, m_camera.target(2));
::glVertex3d(m_camera.target(0), m_camera.target(1) + half_length, m_camera.target(2));
::glEnd();
::glBegin(GL_LINES);
::glColor3f(0.0f, 0.0f, 1.0f);
::glVertex3d(m_camera.target(0), m_camera.target(1), m_camera.target(2) - half_length);
::glVertex3d(m_camera.target(0), m_camera.target(1), m_camera.target(2) + half_length);
::glEnd();
}
#endif // ENABLE_SHOW_CAMERA_TARGET
#if ENABLE_EXTENDED_SELECTION
void GLCanvas3D::_update_volumes_hover_state() const
{

View File

@ -823,6 +823,11 @@ public:
void zoom_to_bed();
void zoom_to_volumes();
#if ENABLE_MODIFIED_CAMERA_TARGET
#if ENABLE_EXTENDED_SELECTION
void zoom_to_selection();
#endif // ENABLE_EXTENDED_SELECTION
#endif // ENABLE_MODIFIED_CAMERA_TARGET
void select_view(const std::string& direction);
void set_viewport_from_scene(const GLCanvas3D& other);
@ -909,6 +914,9 @@ private:
void _render_current_gizmo() const;
void _render_gizmos_overlay() const;
void _render_toolbar() const;
#if ENABLE_SHOW_CAMERA_TARGET
void _render_camera_target() const;
#endif // ENABLE_SHOW_CAMERA_TARGET
#if ENABLE_EXTENDED_SELECTION
void _update_volumes_hover_state() const;

View File

@ -1259,7 +1259,9 @@ std::vector<size_t> Plater::priv::load_model_objects(const ModelObjectPtrs &mode
}
update();
#if !ENABLE_MODIFIED_CAMERA_TARGET
_3DScene::zoom_to_volumes(canvas3D);
#endif // !ENABLE_MODIFIED_CAMERA_TARGET
object_list_changed();
this->schedule_background_process();
@ -2561,7 +2563,9 @@ void Plater::changed_object_settings(int obj_idx)
_3DScene::set_objects_selections(p->canvas3D, selections);
#endif // !ENABLE_EXTENDED_SELECTION
_3DScene::reload_scene(p->canvas3D, false);
#if !ENABLE_MODIFIED_CAMERA_TARGET
_3DScene::zoom_to_volumes(p->canvas3D);
#endif // !ENABLE_MODIFIED_CAMERA_TARGET
}
else {
this->p->schedule_background_process();