Skip to content

Commit b9ecb06

Browse files
fix visibility function call
1 parent 736c0f0 commit b9ecb06

1 file changed

Lines changed: 17 additions & 16 deletions

File tree

src/OpenCOVER/plugins/hlrs/LamurePointCloud/LamureRenderer.cpp

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -641,7 +641,7 @@ struct BoundingBoxDrawCallback : public virtual osg::Drawable::DrawCallback
641641

642642
uint64_t rendered_bounding_boxes = 0;
643643
for (uint16_t m_id = 0; m_id < _plugin->getSettings().models.size(); ++m_id) {
644-
if (!_plugin->isModelVisible(m_id))
644+
if (!_renderer->isModelVisible(m_id))
645645
continue;
646646
const lamure::model_t model_id = controller->deduce_model_id(std::to_string(m_id));
647647
lamure::ren::cut& cut = cuts->get_cut(context_id, renderInfo.getState()->getContextID(), model_id);
@@ -759,7 +759,7 @@ struct PointsDrawCallback : public virtual osg::Drawable::DrawCallback
759759

760760
if (database->num_models() == 0) { _renderer->endFrame(); before.restore(); return; }
761761
for (lamure::model_t model_id = 0; model_id < settings.models.size(); ++model_id) {
762-
if (!_plugin->isModelVisible(static_cast<std::size_t>(model_id)))
762+
if (!_renderer->isModelVisible(static_cast<std::size_t>(model_id)))
763763
continue;
764764
lamure::model_t m_id = controller->deduce_model_id(std::to_string(model_id));
765765
const auto &trafo = _plugin->getModelInfo().model_transformations[m_id];
@@ -861,7 +861,7 @@ struct PointsDrawCallback : public virtual osg::Drawable::DrawCallback
861861
glBindTexture(GL_TEXTURE_2D, texture);
862862
};
863863

864-
// --- PASS 1: Depth pre-pass (depth-only, kreisförmiges discard im FS)
864+
// --- PASS 1: Depth pre-pass (depth-only, kreisfoermiges discard im FS)
865865
glBindFramebuffer(GL_FRAMEBUFFER, target.fbo);
866866
glViewport(0, 0, vpWidth, vpHeight);
867867
glDrawBuffer(GL_NONE);
@@ -890,7 +890,7 @@ struct PointsDrawCallback : public virtual osg::Drawable::DrawCallback
890890
if (_renderer->getSurfelPass1Shader().projection_matrix_loc >= 0) glUniformMatrix4fv(_renderer->getSurfelPass1Shader().projection_matrix_loc, 1, GL_FALSE, projection_matrix.data_array);
891891
if (_renderer->getSurfelPass1Shader().use_aniso_loc >= 0) glUniform1i(_renderer->getSurfelPass1Shader().use_aniso_loc, useAnisoThisPass ? 1 : 0);
892892
for (uint16_t m_id = 0; m_id < s.models.size(); ++m_id) {
893-
if (!_plugin->isModelVisible(m_id))
893+
if (!_renderer->isModelVisible(m_id))
894894
continue;
895895

896896
const lamure::model_t model_id = controller->deduce_model_id(std::to_string(m_id));
@@ -937,7 +937,7 @@ struct PointsDrawCallback : public virtual osg::Drawable::DrawCallback
937937
// Tiefe aus Pass 1
938938
bindTexture2DToUnit(0, target.depth_texture);
939939

940-
// Globale Uniforms für VS/GS/FS
940+
// Globale Uniforms fuer VS/GS/FS
941941
if (_renderer->getSurfelPass2Shader().viewport_loc >= 0) glUniform2f(_renderer->getSurfelPass2Shader().viewport_loc, viewport.x, viewport.y);
942942
if (_renderer->getSurfelPass2Shader().max_radius_loc >= 0) glUniform1f(_renderer->getSurfelPass2Shader().max_radius_loc, s.max_radius);
943943
if (_renderer->getSurfelPass2Shader().min_radius_loc >= 0) glUniform1f(_renderer->getSurfelPass2Shader().min_radius_loc, s.min_radius);
@@ -962,7 +962,7 @@ struct PointsDrawCallback : public virtual osg::Drawable::DrawCallback
962962
const bool needNodeUniforms = (showRadiusDeviationDebug || showAccuracyDebug);
963963

964964
for (uint16_t m_id = 0; m_id < s.models.size(); ++m_id) {
965-
if (!_plugin->isModelVisible(m_id))
965+
if (!_renderer->isModelVisible(m_id))
966966
continue;
967967
const lamure::model_t model_id = controller->deduce_model_id(std::to_string(m_id));
968968
lamure::ren::cut &cut = cuts->get_cut(context_id, renderInfo.getState()->getContextID(), model_id);
@@ -1042,7 +1042,7 @@ struct PointsDrawCallback : public virtual osg::Drawable::DrawCallback
10421042
// ================= SINGLE-PASS RENDER PATH =================
10431043
_renderer->setFrameUniforms(projection_matrix, viewport);
10441044
for (uint16_t model_id = 0; model_id < _plugin->getSettings().models.size(); ++model_id) {
1045-
if (!_plugin->isModelVisible(model_id))
1045+
if (!_renderer->isModelVisible(model_id))
10461046
continue;
10471047
const lamure::model_t m_id = controller->deduce_model_id(std::to_string(model_id));
10481048
lamure::ren::cut& cut = cuts->get_cut(context_id, renderInfo.getState()->getContextID(), m_id);
@@ -1665,18 +1665,19 @@ bool LamureRenderer::isModelVisible(std::size_t modelIndex) const
16651665
return false;
16661666

16671667
osg::Node* node = it_node->second.get();
1668-
if (!node || node->getNumParents() == 0)
1668+
if (!node || node->getNodeMask() == 0)
16691669
return false;
16701670

1671-
osg::Node* current = node;
1672-
while (current) {
1673-
if (current->getNodeMask() == 0)
1674-
return false;
1675-
if (current->getNumParents() == 0)
1676-
break;
1677-
current = current->getParent(0);
1671+
const unsigned int parentCount = node->getNumParents();
1672+
if (parentCount == 0)
1673+
return false;
1674+
1675+
for (unsigned int i = 0; i < parentCount; ++i) {
1676+
osg::Node* parent = node->getParent(i);
1677+
if (parent && parent->getNodeMask() != 0)
1678+
return true;
16781679
}
1679-
return true;
1680+
return false;
16801681
}
16811682

16821683
void LamureRenderer::setFrameUniforms(const scm::math::mat4& projection_matrix, const scm::math::vec2& viewport) {

0 commit comments

Comments
 (0)