diff --git a/graf3d/eve7/src/REveBoxSet.cxx b/graf3d/eve7/src/REveBoxSet.cxx index c1bbcdede60a7..938417089a716 100644 --- a/graf3d/eve7/src/REveBoxSet.cxx +++ b/graf3d/eve7/src/REveBoxSet.cxx @@ -381,6 +381,9 @@ Int_t REveBoxSet::WriteCoreJson(nlohmann::json &j, Int_t rnr_offset) void REveBoxSet::BuildRenderData() { + if (fPlex.Size() == 0) + return; + fRenderData = std::make_unique("makeBoxSet", fPlex.Size() * 24, 0, fPlex.Size()); REveChunkManager::iterator bi(fPlex); @@ -407,6 +410,14 @@ void REveBoxSet::BuildRenderData() // printf(" >>> resize render data %d \n", 4 * fTexX * fTexY); fRenderData->ResizeV(4 * fTexX * fTexY); } + + // save bbox in render data normals + ComputeBBox(); + float* bb = GetBBox(); + fRenderData->PushN(bb[0], bb[1], bb[2]); + fRenderData->PushN(bb[3], bb[4], bb[5]); + + REveElement::BuildRenderData(); } //////////////////////////////////////////////////////////////////////////////// diff --git a/graf3d/eve7/src/REvePointSet.cxx b/graf3d/eve7/src/REvePointSet.cxx index ce768cab3ec53..90896e7c24feb 100644 --- a/graf3d/eve7/src/REvePointSet.cxx +++ b/graf3d/eve7/src/REvePointSet.cxx @@ -239,16 +239,24 @@ void REvePointSet::BuildRenderData() if (fSize > 0) { if (gEve->IsRCore()) { - fRenderData = std::make_unique("makeHit", 4*fTexX*fTexY); + fRenderData = std::make_unique("makeHit", 4*fTexX*fTexY, 6); for (int i = 0; i < fSize; ++i) { fRenderData->PushV(&fPoints[i].fX, 3); fRenderData->PushV(0); } fRenderData->ResizeV(4*fTexX*fTexY); + + // save bbox in render data normals + ComputeBBox(); + float* bb = GetBBox(); + fRenderData->PushN(bb[0], bb[1], bb[2]); + fRenderData->PushN(bb[3], bb[4], bb[5]); } else { fRenderData = std::make_unique("makeHit", 3*fSize); fRenderData->PushV(&fPoints[0].fX, 3*fSize); } + + REveElement::BuildRenderData(); } } diff --git a/ui5/eve7/lib/EveElementsRCore.js b/ui5/eve7/lib/EveElementsRCore.js index 3565ae99c994e..3c73130d544f1 100644 --- a/ui5/eve7/lib/EveElementsRCore.js +++ b/ui5/eve7/lib/EveElementsRCore.js @@ -808,6 +808,10 @@ sap.ui.define(['rootui5/eve7/lib/EveManager'], function (EveManager) rnr_data.vtxBuff, hit.fTexX, hit.fTexY, txName); + // bounding box + let bb = rnr_data.nrmBuff; + s.geometry.setExternalBoundingBox(new RC.Box3(new RC.Vector3(bb[0], bb[2], bb[4]), new RC.Vector3(bb[1], bb[3], bb[5]))); + this.RcPickable(hit, s); return s; @@ -1174,10 +1178,17 @@ sap.ui.define(['rootui5/eve7/lib/EveManager'], function (EveManager) { if (this.TestRnr("boxset", boxset, rnr_data)) return null; // use instancing if texture coordinates + let mesh; if (boxset.instanced === true) - return this.makeBoxSetInstanced(boxset, rnr_data); + mesh = this.makeBoxSetInstanced(boxset, rnr_data); else - return this.makeFreeBoxSet(boxset, rnr_data); + mesh = this.makeFreeBoxSet(boxset, rnr_data); + + // bounding box + let bb = rnr_data.nrmBuff; + mesh.geometry.setExternalBoundingBox(new RC.Box3(new RC.Vector3(bb[0], bb[2], bb[4]), new RC.Vector3(bb[1], bb[3], bb[5]))); + + return mesh; } makeFreeBoxSet(boxset, rnr_data)