122 ogt_vox_transform translate{1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2, 0, 1};
123 ogt_vox_transform scale{10, 0, 0, 0, 0, 10, 0, 0, 0, 0, 10, 0, 0, 0, 0, 1};
124 ogt_vox_transform translate2{1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2, 0, 1};
128 std::cout << v[0] <<
' ' << v[1] <<
' ' << v[2] <<
'\n';
136 auto acc = grid.getAccessor();
138 auto processModelFn = [&](
int modelIndex,
const ogt_vox_transform& xform) {
139 const auto* model = scene->models[modelIndex];
141 uint32_t voxel_index = 0;
142 for (uint32_t z = 0; z < model->size_z; ++z) {
143 for (uint32_t y = 0; y < model->size_y; ++y) {
144 for (uint32_t x = 0; x < model->size_x; ++x, ++voxel_index) {
145 if (uint8_t color_index = model->voxel_data[voxel_index]) {
146 ogt_vox_rgba rgba = scene->palette.color[color_index];
148 acc.setValue(nanovdb::Coord(ijk[0], ijk[2], -ijk[1]), *
reinterpret_cast<nanovdb::math::Rgba8*
>(&rgba));
155 if (scene->num_instances > 0) {
156 printf(
"scene processing begin... %d instances\n", scene->num_instances);
158 for (uint32_t instanceIndex = 0; instanceIndex < scene->num_instances; instanceIndex++) {
159 const auto& instance = scene->instances[instanceIndex];
160 uint32_t modelIndex = instance.model_index;
171 auto xform = instance.transform;
173 processModelFn(modelIndex, xform);
176 printf(
"scene processing begin... %d models\n", scene->num_models);
178 ogt_vox_transform xform{1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1};
180 for (uint32_t modelIndex = 0; modelIndex < scene->num_models; modelIndex++) {
181 processModelFn(modelIndex, xform);
186 printf(
"scene processing end.\n");
187 ogt_vox_destroy_scene(scene);
188 return nanovdb::tools::createNanoGrid(grid);
190 std::ostringstream ss;
191 ss <<
"Invalid file \"" << inFilename <<
"\"";
192 throw std::runtime_error(ss.str());
195 catch (
const std::exception& e) {
196 std::cerr <<
"An exception occurred: \"" << e.what() <<
"\"" << std::endl;