1 // Copyright 2009-2021 Intel Corporation 2 // SPDX-License-Identifier: Apache-2.0 3 4 #include "Importer.h" 5 // ospcommon 6 #include "rkcommon/os/FileName.h" 7 #include "sg/scene/volume/Vdb.h" 8 9 namespace ospray { 10 namespace sg { 11 12 struct VDBImporter : public Importer 13 { 14 VDBImporter() = default; 15 ~VDBImporter() override = default; 16 17 void importScene() override; 18 }; 19 20 OSP_REGISTER_SG_NODE_NAME(VDBImporter, importer_vdb); 21 22 // vdbImporter definitions ///////////////////////////////////////////// 23 importScene()24void VDBImporter::importScene() 25 { 26 #if USE_OPENVDB 27 // Create a root Transform/Instance off the Importer, under which to build 28 // the import hierarchy 29 auto rootName = fileName.name() + "_rootXfm"; 30 auto nodeName = fileName.name() + "_volume"; 31 32 auto rootNode = createNode(rootName, "transform"); 33 auto volumeImport = createNodeAs<VdbVolume>(nodeName, "volume_vdb"); 34 35 volumeImport->load(fileName); 36 37 auto tf = createNode("transferFunction", "transfer_function_turbo"); 38 auto valueRange = volumeImport->child("valueRange").valueAs<range1f>(); 39 tf->child("valueRange") = valueRange.toVec2(); 40 volumeImport->add(tf); 41 42 rootNode->add(volumeImport); 43 44 // Finally, add node hierarchy to importer parent 45 add(rootNode); 46 47 std::cout << "...finished import!\n"; 48 #else 49 std::cout << "OpenVDB not enabled in build. Rebuild Studio, selecting " 50 "ENABLE_OPENVDB in cmake." 51 << std::endl; 52 #endif 53 } 54 55 } // namespace sg 56 } // namespace ospray 57