NodeID Contributing to Bounding Box But Not Visible in Viewer – How to Investigate?

Hi Team,

In Hoops Communicator, I’m encountering an issue where the overall model bounding box is unexpectedly large.

After investigation, I found a specific nodeId that is contributing to this large bounding box, but the node is:

  • Technically visible (not hidden or excluded).
  • Still not actually seen in the 3D viewer — even after zoom-to-fit or manually fitting to the node.

Here’s what I’ve tried:

  • Used model.getModelBounding() with various parameter combinations.
  • Confirmed the node is not excluded or set invisible.
  • Retrieved the bounding box of the node via model.getNodeBounding(nodeId) — it’s positioned far from the main model geometry.

Questions:

  1. What could cause a node to be “visible” but not actually render in the viewer?
  2. Could this be due to:
  • Geometry having extreme coordinates or zero scale?
  • Empty geometry or placeholder meshes?
  • Incorrect transformation matrix?
  1. How can I inspect the node’s content (geometry, transform, metadata) to determine why it’s not rendering?

Any tips or tools in the Communicator API to debug such nodes would be very helpful.

The node in question may be facing away from the camera and thus getting culled. As a quick test, you can call View.setBackfacesVisible(true).

i just added .view.setBackfacesVisible(true); on model structure ready not luck. still could not see the node

You mentioned that you were able to retrieve the bounding box of the node in question:

  • Retrieved the bounding box of the node via model.getNodeBounding(nodeId) — it’s positioned far from the main model geometry.

How does bounding box look like? Is it three-dimensional or more 2D?

Perhaps we can retrieve more information on the MeshData object. In the dev console, paste the following:

hwv.setCallbacks({
  selectionArray: async function (selections) {
    if (selections.length > 0) {
      for (const selectionEvent of selections) {
        const selection = selectionEvent.getSelection();
        const nodeid = selection.getNodeId();

        console.log("Selected Node: " + nodeid);
        const md = await hwv.model.getNodeMeshData(nodeid);

        console.log("MeshData: " + JSON.stringify(md));
      }
    }
  },
});

Either select the node via the browser or you can call:
hwv.selectionManager.selectNode(your_nodeid);

Screen Recording 2025-05-21 at 11.07.35 PM
yes it is selectable and far away. how do we handle or exclude such nodes?

If you have the original CAD source file, it might be worth confirming if this same geometry is there as well. This will confirm that it isn’t a Communicator issue necessarily.

At any rate, you can apply the InstanceModifier enum called ExcludeBounding to remove it from bounding calculations.