NVIDIA Index example code nvidia_logo_transpbg.gif Up
xac_compute_scenes.cpp
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright 2023 NVIDIA Corporation. All rights reserved.
3 *****************************************************************************/
5
10
11namespace xac_compute {
12
14{
15public:
16 bool is_valid() const { return false; }
17 const char* name() const { return "null_scene"; }
18 const char* get_roi_string() const { return "0 0 0 1 1 1"; }
19
21 Nvindex_access& nvindex_accessor,
22 Scene_info& scene_info,
23 const Bbox3f& roi_bbox,
24 mi::neuraylib::Tag session_tag,
25 const Option_map& opt_map,
26 mi::neuraylib::IDice_transaction* transaction) const {return false;}
27
28 void setup_camera(mi::neuraylib::Tag camera_tag, const Option_map&, mi::neuraylib::IDice_transaction*) const {};
29};
30
32static const int num_scenes = 3;
33
35 return num_scenes;
36}
37
38
40{
41 static const sparse_volume::Sparse_volume_setup svol_setup;
42 static const heightfield::Tiled_heightfield_setup hfield_setup;
43 static const trianglemesh::Trianglemesh_setup trimesh_setup;
44
46
47 switch (i) {
48 case 0: scene_setup = &svol_setup; break;
49 case 1: scene_setup = &hfield_setup; break;
50 case 2: scene_setup = &trimesh_setup; break;
51 };
52 return scene_setup;
53}
54
55
56void dump_text(const std::string& filename, const std::string& text)
57{
58 if (filename.empty()) return;
59 std::ofstream fs(filename.c_str());
60 if (fs) {
61 fs << text;
62 }
63 fs.close();
64}
65
66void load_text(const std::string& filename, std::string& text)
67{
68 if (filename.empty()) return;
69 std::ifstream fs(filename.c_str(), std::ios_base::binary);
70 if (fs) {
71 fs.seekg(0, std::ios_base::end);
72 const size_t text_size = static_cast<size_t>(fs.tellg());
73 fs.seekg(0);
74 std::vector<char> buf(text_size + 1, '\0');
75 fs.read(buf.data(), text_size);
76 text = buf.data();
77 }
78 fs.close();
79}
80
81const char* scene_name(int i)
82{
83 return get_scene_setup(i)->name();
84}
85
86}//xac_compute
87
88
virtual const char * name() const =0
void setup_camera(mi::neuraylib::Tag camera_tag, const Option_map &, mi::neuraylib::IDice_transaction *) const
bool create_scene(Nvindex_access &nvindex_accessor, Scene_info &scene_info, const Bbox3f &roi_bbox, mi::neuraylib::Tag session_tag, const Option_map &opt_map, mi::neuraylib::IDice_transaction *transaction) const
const char * get_roi_string() const
XAC compute example scenes.
Definition: xac_compute.cpp:27
void dump_text(const std::string &filename, const std::string &text)
static const int num_scenes
mi::math::Bbox< mi::Float32, 3 > Bbox3f
Definition: xac_compute.h:29
static const Null_scene_setup null_scene_setup
const char * scene_name(int i)
void load_text(const std::string &filename, std::string &text)
const IXac_compute_scene_setup * get_scene_setup(int i)
Scene setup interface for xac compute example.
Sparse volume setup for xac compute example.