FIX:need to clarify eigen data type in linux

jira: none

Change-Id: Ibb1d0015912641d1ba16355f5842f1693c72f391
This commit is contained in:
zhou.xu 2024-08-08 14:26:27 +08:00 committed by Lane.Wei
parent 75994cc765
commit b7ab08e65b
4 changed files with 38 additions and 6 deletions

View File

@ -23,7 +23,7 @@ public:
float distance(const Vec3f &pt) const { return normal_.dot(pt) + d_; }
inline const Vec3f &getNormal() const { return normal_; }
const Vec3f & getCenter() const { return center_; }
Plane::PlaneIntersects intersects(const BoundingBoxf3 &box) const;
//// check intersect with point (world space)
Plane::PlaneIntersects intersects(const Vec3f &p0) const;

View File

@ -10,7 +10,7 @@
#include "GLShader.hpp"
#include "GUI_App.hpp"
#include "GUI_Colors.hpp"
//#include "Camera.hpp"
#include "Plater.hpp"
#include "BitmapCache.hpp"

View File

@ -109,11 +109,43 @@ void Camera::select_view(const std::string& direction)
//how to use
//BoundingBox bbox = mesh.aabb.transform(transform);
//return camera_->getFrustum().intersects(bbox);
void Camera::debug_frustum()
{
ImGuiWrapper &imgui = *wxGetApp().imgui();
imgui.begin(std::string("Camera debug_frusm"), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse);
Vec3f frustum_min = m_frustum.bbox.min.cast<float>();
Vec3f frustum_max = m_frustum.bbox.max.cast<float>();
Vec3f _0_normal = m_frustum.planes[0].getNormal().cast<float>();
Vec3f _0_corner = m_frustum.corners[0].cast<float>();
Vec3f _1_corner = m_frustum.corners[1].cast<float>();
ImGui::InputFloat3("m_last_eye", m_last_eye.data(), "%.6f", ImGuiInputTextFlags_ReadOnly);
ImGui::InputFloat3("m_last_center", m_last_center.data(), "%.6f", ImGuiInputTextFlags_ReadOnly);
ImGui::InputFloat3("m_last_up", m_last_up.data(), "%.6f", ImGuiInputTextFlags_ReadOnly);
ImGui::InputFloat3("frustum_min", frustum_min.data(), "%.6f", ImGuiInputTextFlags_ReadOnly);
ImGui::InputFloat3("frustum_max", frustum_max.data(), "%.6f", ImGuiInputTextFlags_ReadOnly);
for (size_t i = 0; i < 8; i++) {
std::string name = "corner" + std::to_string(i);
ImGui::InputFloat3(name.c_str(), m_frustum.corners[i].data(), "%.6f", ImGuiInputTextFlags_ReadOnly);
}
for (size_t i = 0; i < 6; i++) {
std::string name = "plane_normal" + std::to_string(i);
Vec3f normal = m_frustum.planes[i].getNormal();
ImGui::InputFloat3(name.c_str(), normal.data(), "%.6f", ImGuiInputTextFlags_ReadOnly);
name = "plane_center" + std::to_string(i);
Vec3f center = m_frustum.planes[i].getCenter();
ImGui::InputFloat3(name.c_str(), center.data(), "%.6f", ImGuiInputTextFlags_ReadOnly);
}
imgui.end();
}
void Camera::update_frustum()
{
auto eye_ = get_position().cast<float>();
auto center_ = get_target().cast<float>();
auto up_ = get_dir_up().cast<float>();
Vec3f eye_ = get_position().cast<float>();
Vec3f center_ = get_target().cast<float>();
Vec3f up_ = get_dir_up().cast<float>();
float near_ = m_frustrum_zs.first;
float far_ = m_frustrum_zs.second;
float aspect_ = m_viewport[2] / (double)m_viewport[3];

View File

@ -121,7 +121,7 @@ public:
void zoom_to_box(const BoundingBoxf3& box, double margin_factor = DefaultZoomToBoxMarginFactor);
void zoom_to_volumes(const GLVolumePtrs& volumes, double margin_factor = DefaultZoomToVolumesMarginFactor);
void debug_frustum();
#if ENABLE_CAMERA_STATISTICS
void debug_render();
#endif // ENABLE_CAMERA_STATISTICS