//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RivGridPartMgr::updateCellEdgeResultColor(size_t timeStepIndex, RimResultSlot* cellResultSlot, RimCellEdgeResultSlot* cellEdgeResultSlot) { if (m_surfaceFaces.notNull()) { cvf::DrawableGeo* dg = dynamic_cast<cvf::DrawableGeo*>(m_surfaceFaces->drawable()); if (dg) { RivCellEdgeGeometryGenerator::addCellEdgeResultsToDrawableGeo(timeStepIndex, cellResultSlot, cellEdgeResultSlot, &m_surfaceGenerator, dg); cvf::ScalarMapper* cellScalarMapper = NULL; if (cellResultSlot->hasResult()) cellScalarMapper = cellResultSlot->legendConfig()->scalarMapper(); CellEdgeEffectGenerator cellFaceEffectGen(cellEdgeResultSlot->legendConfig()->scalarMapper(), cellScalarMapper); cellFaceEffectGen.setOpacityLevel(m_opacityLevel); cellFaceEffectGen.setDefaultCellColor(m_defaultColor); cvf::ref<cvf::Effect> eff = cellFaceEffectGen.generateEffect(); m_surfaceFaces->setEffect(eff.p()); } } if (m_faultFaces.notNull()) { cvf::DrawableGeo* dg = dynamic_cast<cvf::DrawableGeo*>(m_faultFaces->drawable()); if (dg) { RivCellEdgeGeometryGenerator::addCellEdgeResultsToDrawableGeo(timeStepIndex, cellResultSlot, cellEdgeResultSlot, &m_faultGenerator, dg); cvf::ScalarMapper* cellScalarMapper = NULL; if (cellResultSlot->hasResult()) cellScalarMapper = cellResultSlot->legendConfig()->scalarMapper(); CellEdgeEffectGenerator cellFaceEffectGen(cellEdgeResultSlot->legendConfig()->scalarMapper(), cellScalarMapper); cellFaceEffectGen.setOpacityLevel(m_opacityLevel); cellFaceEffectGen.setDefaultCellColor(m_defaultColor); cvf::ref<cvf::Effect> eff = cellFaceEffectGen.generateEffect(); m_faultFaces->setEffect(eff.p()); } } }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- cvf::ref<cvf::Effect> RivScalarMapperUtils::createCellEdgeEffect(cvf::DrawableGeo* dg, const cvf::StructGridQuadToCellFaceMapper* quadToCellFaceMapper, size_t gridIndex, size_t timeStepIndex, RimEclipseCellColors* cellResultColors, RimCellEdgeColors* cellEdgeResultColors, float opacityLevel, cvf::Color3f defaultColor, caf::FaceCulling faceCulling, bool disableLighting) { CellEdgeEffectGenerator cellFaceEffectGen(cellEdgeResultColors->legendConfig()->scalarMapper()); if (cellResultColors->isTernarySaturationSelected()) { RivCellEdgeGeometryUtils::addTernaryCellEdgeResultsToDrawableGeo(timeStepIndex, cellResultColors, cellEdgeResultColors, quadToCellFaceMapper, dg, gridIndex, opacityLevel); RivTernaryScalarMapper* ternaryCellScalarMapper = cellResultColors->ternaryLegendConfig()->scalarMapper(); cellFaceEffectGen.setTernaryScalarMapper(ternaryCellScalarMapper); } else { bool useDefaultValueForHugeVals = false; if (!cellResultColors->hasResult()) { useDefaultValueForHugeVals = true; } RivCellEdgeGeometryUtils::addCellEdgeResultsToDrawableGeo(timeStepIndex, cellResultColors, cellEdgeResultColors, quadToCellFaceMapper, dg, gridIndex, useDefaultValueForHugeVals, opacityLevel); if (cellResultColors->hasResult()) { // If no scalar mapper is set for the effect, a default color is used to fill the texture // This is what we want when the fault colors should be visible in combination with cell edge cvf::ScalarMapper* cellScalarMapper = cellResultColors->legendConfig()->scalarMapper(); cellFaceEffectGen.setScalarMapper(cellScalarMapper); } } cellFaceEffectGen.setOpacityLevel(opacityLevel); cellFaceEffectGen.setDefaultCellColor(defaultColor); cellFaceEffectGen.setFaceCulling(faceCulling); cellFaceEffectGen.disableLighting(disableLighting); cvf::ref<cvf::Effect> eff = cellFaceEffectGen.generateCachedEffect(); return eff; }