Skip to content
Snippets Groups Projects

Visualize rough interfaces in Img3D

Merged Mikhail Svechnikov requested to merge m.i57 into main
@@ -127,10 +127,18 @@ std::unique_ptr<Img3D::Layer> createLayer(const LayerItem& layerItem, const doub
// visual mesh will later be scaled, so we divide roughness by thickness factor in advance
std::unique_ptr<double2d_t> top;
if (topRoughMap)
top.reset(::scaledArray(*topRoughMap, 1. / thickness).release());
top = std::move(::scaledArray(*topRoughMap, 1. / thickness));
else {
// TODO rework
// try to generate it roughness map if is not provided (individual layer visualization)
int seed = 1; // TODO accept seed from SampleItem/LayerItem
auto new_top = ::layerRoughnessMap(layerItem, sceneGeometry, seed);
if (new_top.get())
top = std::move(::scaledArray(*new_top, 1. / thickness));
}
std::unique_ptr<double2d_t> bottom;
if (bottomRoughMap)
bottom.reset(::scaledArray(*bottomRoughMap, 1. / thickness).release());
bottom = std::move(::scaledArray(*bottomRoughMap, 1. / thickness));
std::unique_ptr<Img3D::Layer> result = std::make_unique<Img3D::Layer>(
Img3D::F3Range(Img3D::F3fromR3({-s2, -s2, ztop}), Img3D::F3fromR3({s2, s2, zbottom})),
@@ -163,11 +171,8 @@ void RealspaceBuilder::populate(Model* model, Item3D* item, const SceneGeometry&
if (const auto* p = dynamic_cast<SampleItem*>(item))
populateSample(model, *p, sceneGeometry, numParticles);
else if (const auto* p = dynamic_cast<LayerItem*>(item)) {
int seed = 1; // TODO accept seed from SampleItem/LayerItem
auto topRoughMap = ::layerRoughnessMap(*p, sceneGeometry, seed);
populateLayer(model, *p, sceneGeometry, numParticles, topRoughMap.get());
}
else if (const auto* p = dynamic_cast<LayerItem*>(item))
populateLayer(model, *p, sceneGeometry, numParticles);
else if (const auto* p = dynamic_cast<ParticleLayoutItem*>(item))
populateLayout(model, *p, sceneGeometry, numParticles);
Loading