Tech ENABLE_RAYCAST_PICKING - Fixed build and warnings on Mac

This commit is contained in:
enricoturri1966 2022-06-15 14:58:04 +02:00
parent f45711e7e5
commit 692aabd8e1
3 changed files with 11 additions and 7 deletions

View file

@ -1055,9 +1055,12 @@ int GLVolumeCollection::load_wipe_tower_preview(
};
TriangleMesh tooth_mesh;
tooth_mesh.merge(TriangleMesh(std::move(generate_lateral(0.0f, 38.453f))));
tooth_mesh.merge(TriangleMesh(std::move(generate_central())));
tooth_mesh.merge(TriangleMesh(std::move(generate_lateral(61.547f, 100.0f))));
indexed_triangle_set its = generate_lateral(0.0f, 38.453f);
tooth_mesh.merge(TriangleMesh(std::move(its)));
its = generate_central();
tooth_mesh.merge(TriangleMesh(std::move(its)));
its = generate_lateral(61.547f, 100.0f);
tooth_mesh.merge(TriangleMesh(std::move(its)));
#else
float out_points_idx[][3] = { { 0, -depth, 0 }, { 0, 0, 0 }, { 38.453f, 0, 0 }, { 61.547f, 0, 0 }, { 100.0f, 0, 0 }, { 100.0f, -depth, 0 }, { 55.7735f, -10.0f, 0 }, { 44.2265f, 10.0f, 0 },
{ 38.453f, 0, 1 }, { 0, 0, 1 }, { 0, -depth, 1 }, { 100.0f, -depth, 1 }, { 100.0f, 0, 1 }, { 61.547f, 0, 1 }, { 55.7735f, -10.0f, 1 }, { 44.2265f, 10.0f, 1 } };

View file

@ -5499,6 +5499,7 @@ void GLCanvas3D::_picking_pass()
object_type = "Volume";
break;
}
default: { break; }
}
char buf[1024];
if (hit.type != SceneRaycaster::EType::None) {

View file

@ -117,7 +117,6 @@ SceneRaycaster::HitResult SceneRaycaster::hit(const Vec2d& mouse_pos, const Came
if (item->get_raycaster()->closest_hit(mouse_pos, trafo, camera, current_hit.position, current_hit.normal, clip_plane)) {
current_hit.position = (trafo * current_hit.position.cast<double>()).cast<float>();
if (is_closest(camera, current_hit.position)) {
const Transform3d matrix = camera.get_view_matrix() * trafo;
const Matrix3d normal_matrix = (Matrix3d)trafo.matrix().block(0, 0, 3, 3).inverse().transpose();
current_hit.normal = (normal_matrix * current_hit.normal.cast<double>()).normalized().cast<float>();
ret = current_hit;
@ -148,7 +147,7 @@ SceneRaycaster::HitResult SceneRaycaster::hit(const Vec2d& mouse_pos, const Came
#if ENABLE_RAYCAST_PICKING_DEBUG
void SceneRaycaster::render_hit(const Camera& camera)
{
if (!m_last_hit.has_value() || !m_last_hit.value().is_valid())
if (!m_last_hit.has_value() || !(*m_last_hit).is_valid())
return;
GLShaderProgram* shader = wxGetApp().get_shader("flat");
@ -156,14 +155,14 @@ void SceneRaycaster::render_hit(const Camera& camera)
shader->set_uniform("projection_matrix", camera.get_projection_matrix());
const Transform3d sphere_view_model_matrix = camera.get_view_matrix() * Geometry::translation_transform(m_last_hit.value().position.cast<double>()) *
const Transform3d sphere_view_model_matrix = camera.get_view_matrix() * Geometry::translation_transform((*m_last_hit).position.cast<double>()) *
Geometry::scale_transform(4.0 * camera.get_inv_zoom());
shader->set_uniform("view_model_matrix", sphere_view_model_matrix);
m_sphere.render();
Eigen::Quaterniond q;
Transform3d m = Transform3d::Identity();
m.matrix().block(0, 0, 3, 3) = q.setFromTwoVectors(Vec3d::UnitZ(), m_last_hit.value().normal.cast<double>()).toRotationMatrix();
m.matrix().block(0, 0, 3, 3) = q.setFromTwoVectors(Vec3d::UnitZ(), (*m_last_hit).normal.cast<double>()).toRotationMatrix();
const Transform3d line_view_model_matrix = sphere_view_model_matrix * m * Geometry::scale_transform(10.0);
shader->set_uniform("view_model_matrix", line_view_model_matrix);
@ -194,6 +193,7 @@ PickingId SceneRaycaster::base_id(EType type)
case EType::Bed: { return PickingId(EPickingIdBase::Bed); }
case EType::Volume: { return PickingId(EPickingIdBase::Volume); }
case EType::Gizmo: { return PickingId(EPickingIdBase::Gizmo); }
default: { break; }
};
assert(false);