Tech ENABLE_RAYCAST_PICKING - Fixed build and warnings on Mac
This commit is contained in:
parent
f45711e7e5
commit
692aabd8e1
3 changed files with 11 additions and 7 deletions
|
@ -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 } };
|
||||
|
|
|
@ -5499,6 +5499,7 @@ void GLCanvas3D::_picking_pass()
|
|||
object_type = "Volume";
|
||||
break;
|
||||
}
|
||||
default: { break; }
|
||||
}
|
||||
char buf[1024];
|
||||
if (hit.type != SceneRaycaster::EType::None) {
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue