Skip to content

Commit f7308dd

Browse files
author
Bruce Cherniak
committed
Geometry Group should track geometryNode rather than handle
- This allows for correct instancing/reuse of OSPRay geometry mesh data object within two separate geometry nodes. - Renamed BIT_node_info extension "instanceID" to "instanceUUID" as it is a string value and not true instanceID uint32_t
1 parent 27fcb2d commit f7308dd

File tree

3 files changed

+7
-5
lines changed

3 files changed

+7
-5
lines changed

sg/importer/glTF.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ void GLTFData::loadNodeInfo(const int nid, NodePtr sgNode)
302302
auto &nodeId = node.Get("id").Get<std::string>();
303303
if (!isValidUUIDv4(nodeId))
304304
std::cerr << nodeId << " is not a valid version 4 UUID\n";
305-
sgNode->createChild("instanceId", "string", nodeId);
305+
sgNode->createChild("instanceUUID", "string", nodeId);
306306
}
307307
}
308308

sg/visitors/PrintNodes.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ namespace ospray {
3838
inline bool PrintNodes::operator()(Node &node, TraversalContext &ctx)
3939
{
4040
std::cout << std::string(2 * ctx.level, ' ') << node.name() << " : "
41-
<< node.subType() << " : " << NodeTypeToString[node.type()];
41+
<< node.subType() << " : " << NodeTypeToString[node.type()]
42+
<< " : " << std::hex << &node;
43+
4244

4345
// A couple of usings to make subType strings match types
4446
using string = std::string;

sg/visitors/RenderScene.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ namespace ospray {
275275
inline void RenderScene::createGeometry(Node &node)
276276
{
277277
auto geomNode = node.nodeAs<Geometry>();
278-
void* geomHandle = reinterpret_cast<void *>(node.valueAs<cpp::Geometry>().handle());
278+
void *geomHandle = geomNode.get();
279279

280280
if (groups.find(geomHandle) != groups.end())
281281
return;
@@ -365,7 +365,7 @@ namespace ospray {
365365
}
366366
}
367367
// update handle
368-
geomHandle = reinterpret_cast<void *>(node.valueAs<cpp::Geometry>().handle());
368+
geomHandle = geomNode.get();
369369
if (geomNode->group)
370370
groups.emplace(std::make_pair(geomHandle, *geomNode->group));
371371

@@ -461,7 +461,7 @@ namespace ospray {
461461
#endif
462462

463463
for (auto &geom : geomChildren) {
464-
auto geomHandle = geom->valueAs<cpp::Geometry>().handle();
464+
auto geomHandle = geom.get();
465465
if (groups.find(geomHandle) != groups.end()) {
466466
auto &group = groups[geomHandle];
467467
setInstance(group);

0 commit comments

Comments
 (0)