10#include "utility/example_shared.h"
12#include <nv/index/icamera.h>
13#include <nv/index/iindex.h>
14#include <nv/index/ilight.h>
15#include <nv/index/imaterial.h>
16#include <nv/index/ipoint_set.h>
17#include <nv/index/iscene.h>
18#include <nv/index/isession.h>
23#include "utility/frame_command.h"
25#include <nv/index/app/index_connect.h>
26#include <nv/index/app/string_dict.h>
27#include <nv/index/app/time_functions.h>
31 public nv::index::app::Index_connect
44 m_is_save_all_frame(false),
45 m_is_animation_on(false)
60 virtual bool evaluate_options(nv::index::app::String_dict& sdict) CPP11_OVERRIDE;
63 mi::neuraylib::INetwork_configuration* network_configuration,
64 nv::index::app::String_dict& options) CPP11_OVERRIDE
69 const bool is_unittest = nv::index::app::get_bool(options.get(
"unittest"));
72 info_cout(
"NETWORK: disabled networking mode.", options);
73 network_configuration->set_mode(mi::neuraylib::INetwork_configuration:
:MODE_OFF);
77 return initialize_networking_as_default_udp(network_configuration, options);
84 mi::math::Color_struct get_color_st_from_attribute(mi::Sint32 attrib)
const;
88 mi::Float32 get_radius_from_attribute(mi::Sint32 attrib)
const;
92 void create_point_set(
93 const mi::neuraylib::Tag& session_tag,
94 mi::neuraylib::IDice_transaction* dice_transaction);
101 void translate_point_set(
102 const mi::neuraylib::Tag& point_set_tag,
103 const mi::math::Vector< mi::Float32, 3 >& trans_delta_vec,
104 mi::neuraylib::IDice_transaction* dice_transaction)
const;
109 void delete_scene_element(
110 const mi::neuraylib::Tag& scene_element_tag,
111 const mi::neuraylib::Tag& transform_tag,
112 mi::neuraylib::IDice_transaction* dice_transaction)
const;
127 void get_top_view_param(
const mi::math::Bbox<mi::Float32, 3>& vbbox,
128 const mi::Float32 aspect,
129 const mi::Float32 fovy_2,
130 mi::math::Vector< mi::Float32, 3 >& from,
131 mi::math::Vector< mi::Float32, 3 >& to,
132 mi::math::Vector< mi::Float32, 3 >& up,
133 mi::Float32 & clip_min,
134 mi::Float32 & clip_max)
const;
137 mi::math::Vector<mi::Uint32, 2> get_resolution()
const;
144 nv::index::IPerspective_camera* cam,
145 const mi::math::Vector<mi::Uint32, 3>& roi_max,
146 mi::neuraylib::IDice_transaction* dice_transaction)
const;
150 bool setup_main_host();
157 const mi::neuraylib::Tag& session_tag,
158 mi::Sint32 frame_idx,
159 mi::neuraylib::IDice_transaction* dice_transaction);
164 nv::index::IFrame_results* render_frame(
const std::string& output_fname)
const;
169 bool update_scene_and_render_frame(mi::Sint32 frame_idx);
173 bool mainhost_rendering_loop();
176 void setup_animation();
179 mi::neuraylib::Tag m_session_tag;
181 mi::base::Handle<nv::index::ICluster_configuration> m_cluster_configuration;
183 mi::base::Handle<nv::index::app::canvas_infrastructure::IIndex_image_file_canvas> m_image_file_canvas;
185 std::string m_outfname;
188 mi::Sint32 m_max_iter;
189 mi::Uint32 m_resolution_x;
190 mi::Uint32 m_resolution_y;
194 bool m_is_save_all_frame;
195 bool m_is_animation_on;
197 mi::neuraylib::Tag m_point_set_group_tag;
199 mi::neuraylib::Tag m_point_set_tag;
201 std::vector<Frame_command> m_frame_command_vec;
208 nv::index::app::util::time::sleep(0.1f);
217 mainhost_rendering_loop();
225 const std::string com_name = sdict.get(
"command:",
"<unknown_command>");
226 m_is_unittest = nv::index::app::get_bool(sdict.get(
"unittest",
"false"));
230 if (nv::index::app::get_bool(sdict.get(
"is_call_from_test",
"false")))
232 sdict.insert(
"is_dump_comparison_image_when_failed",
"0");
234 sdict.insert(
"max_iter",
"20");
235 sdict.insert(
"outfname",
"");
236 sdict.insert(
"dice::verbose",
"2");
239 m_outfname = sdict.get(
"outfname");
240 m_max_iter = nv::index::app::get_sint32(sdict.get(
"max_iter"));
241 m_resolution_x = nv::index::app::get_uint32(sdict.get(
"resolution_x"));
242 m_resolution_y = nv::index::app::get_uint32(sdict.get(
"resolution_y"));
243 m_roi_x = nv::index::app::get_sint32(sdict.get(
"roi_x"));
244 m_roi_y = nv::index::app::get_sint32(sdict.get(
"roi_y"));
245 m_roi_z = nv::index::app::get_sint32(sdict.get(
"roi_z"));
246 m_is_save_all_frame = nv::index::app::get_bool(sdict.get(
"is_save_all_frame"));
247 m_is_animation_on = nv::index::app::get_bool(sdict.get(
"is_animation_on"));
249 info_cout(std::string(
"running ") + com_name, sdict);
250 info_cout(std::string(
"outfname = [") + m_outfname +
251 "], dice::verbose = " + sdict.get(
"dice::verbose"), sdict);
254 if(sdict.is_defined(
"h"))
257 <<
"info: Usage: " << com_name <<
" [option]\n"
259 <<
" printout this message\n"
260 <<
" [-dice::verbose severity_level]\n"
261 <<
" verbose severity level (3 is info.). (default: " + sdict.get(
"dice::verbose")
264 <<
" [-dice::network::multicast_address address]\n"
265 <<
" set multicast address. (default: "
266 << sdict.get(
"dice::network::multicast_address") +
")\n"
268 <<
" [-max_iter number_of_iteration]\n"
269 <<
" set rendering loop iterations. default: " << m_max_iter
272 <<
" [-resolution_x int] [-resolution_y int]\n"
273 <<
" screen resolution x and y. (default " << m_resolution_x
274 <<
" " << m_resolution_y<<
")\n"
276 <<
" [-roi_x int] [-roi_y int] [-roi_z int]\n"
277 <<
" region of interest max position.\n"
278 <<
" (The min position is set to (0,0,0).)\n"
279 <<
" (default: " << m_roi_x <<
" " << m_roi_y <<
" " << m_roi_z <<
")\n"
281 <<
" [-outfname string]\n"
282 <<
" output ppm file base name. When "", no output.\n"
283 <<
" The frame number and extension(.ppm) will be added.\n"
284 <<
" (default: " << m_outfname <<
")\n"
286 <<
" [-is_save_all_frame bool]\n"
287 <<
" when 1, save only the last frame. (default: "
288 << m_is_save_all_frame <<
")\n"
290 <<
" [-is_animation_on bool]\n"
291 <<
" when 1, points are animated in every frame. (default: "
292 << m_is_animation_on <<
")\n"
294 <<
" [-unittest bool]\n"
295 <<
" when true, unit test mode (create smaller volume). "
296 <<
"(default: " << m_is_unittest <<
")"
304mi::math::Color_struct Dynamic_point_set::get_color_st_from_attribute(mi::Sint32 attrib)
const
306 const mi::Sint32 intval = abs(attrib);
307 mi::math::Color_struct col;
308 const mi::Float32 coef = 1.0f / 15.0f;
309 col.r = coef *
static_cast< mi::Float32
>(intval & 15);
310 col.g = coef *
static_cast< mi::Float32
>((intval >> 4) & 15);
311 col.b = coef *
static_cast< mi::Float32
>((intval >> 8) & 15);
318mi::Float32 Dynamic_point_set::get_radius_from_attribute(mi::Sint32 attrib)
const
320 const mi::Float32 rad =
static_cast< mi::Float32
>(abs(attrib) % 12);
325void Dynamic_point_set::create_point_set(
326 const mi::neuraylib::Tag& session_tag,
327 mi::neuraylib::IDice_transaction* dice_transaction)
332 mi::base::Handle<nv::index::ISession const> session(
333 dice_transaction->access<nv::index::ISession
const>(
337 mi::base::Handle<nv::index::IScene> scene_edit(
338 dice_transaction->edit<nv::index::IScene>(
339 session->get_scene()));
342 mi::base::Handle<nv::index::ITransformed_scene_group> group_node(
343 scene_edit->create_scene_group<nv::index::ITransformed_scene_group>());
349 mi::base::Handle<nv::index::IDirectional_headlight> headlight(
350 scene_edit->create_attribute<nv::index::IDirectional_headlight>());
352 const mi::math::Color_struct color_intensity = { 1.0f, 1.0f, 1.0f, 1.0f, };
353 headlight->set_intensity(color_intensity);
354 headlight->set_direction(mi::math::Vector<mi::Float32, 3>(1.0f, -1.0f, -1.0f));
355 const mi::neuraylib::Tag headlight_tag = dice_transaction->store_for_reference_counting(headlight.get());
357 group_node->append(headlight_tag, dice_transaction);
360 mi::base::Handle<nv::index::IPhong_gl> phong_1(scene_edit->create_attribute<nv::index::IPhong_gl>());
362 phong_1->set_ambient(mi::math::Color(0.3f, 0.3f, 0.3f, 1.0f));
363 phong_1->set_diffuse(mi::math::Color(0.4f, 0.4f, 0.4f, 1.0f));
364 phong_1->set_specular(mi::math::Color(0.4f));
365 phong_1->set_shininess(100.f);
366 const mi::neuraylib::Tag phong_1_tag = dice_transaction->store_for_reference_counting(phong_1.get());
368 group_node->append(phong_1_tag, dice_transaction);
374 std::vector< mi::math::Vector_struct< mi::Float32, 3> > point_pos_vec;
375 std::vector< mi::math::Color_struct > color_vec;
376 std::vector< mi::Float32 > radii_vec;
379 const mi::Sint32 column_count= 20;
380 const mi::Sint32 point_count = 200;
381 const mi::Float32 x_mag = 25.0;
382 const mi::Float32 y_mag = 25.0;
383 const mi::Float32 z = 30.0;
384 const mi::Float32 y_offset = 0.0f;
385 for(mi::Sint32 i = 0; i < point_count; ++i){
386 mi::math::Vector_struct< mi::Float32, 3> pos;
387 pos.x =
static_cast< mi::Float32
>(i % column_count) * x_mag;
388 pos.y =
static_cast< mi::Float32
>(i / column_count) * y_mag + y_offset;
390 point_pos_vec.push_back(pos);
391 color_vec.push_back(get_color_st_from_attribute(i));
392 radii_vec.push_back(get_radius_from_attribute(i));
396 mi::base::Handle< nv::index::IPoint_set > point_set(scene_edit->create_shape<nv::index::IPoint_set>());
399 nv::index::IPoint_set::Point_style style =nv::index::IPoint_set:
:SHADED_CIRCLE;
400 point_set->set_point_style(style);
401 point_set->set_vertices(&point_pos_vec[0], point_pos_vec.size());
402 point_set->set_colors( &color_vec[0], color_vec.size());
403 point_set->set_radii( &radii_vec[0], radii_vec.size());
406 m_point_set_tag = dice_transaction->store_for_reference_counting(point_set.get());
411 group_node->append(m_point_set_tag, dice_transaction);
412 INFO_LOG <<
"Added point_set (size: " << point_count <<
") to the scene (tag id: "
413 << m_point_set_tag.id <<
").";
415 m_point_set_group_tag = dice_transaction->store_for_reference_counting(group_node.get());
417 scene_edit->append(m_point_set_group_tag, dice_transaction);
421void Dynamic_point_set::translate_point_set(
422 const mi::neuraylib::Tag& point_set_tag,
423 const mi::math::Vector< mi::Float32, 3 >& trans_delta_vec,
424 mi::neuraylib::IDice_transaction* dice_transaction)
const
429 mi::base::Handle< nv::index::IPoint_set > point_set(
430 dice_transaction->edit< nv::index::IPoint_set >(point_set_tag));
433 mi::Size
const vertex_count = point_set->get_nb_vertices();
434 if(vertex_count == 0)
440 mi::math::Vector_struct<mi::Float32, 3>
const *
const p_vtx = point_set->get_vertices();
443 std::vector< mi::math::Vector_struct<mi::Float32, 3> > vcopy;
444 vcopy.reserve(vertex_count);
446 for(mi::Uint32 i = 0; i < vertex_count; ++i)
448 mi::math::Vector_struct<mi::Float32, 3> vpos = p_vtx[i];
449 vpos.x += trans_delta_vec.x;
450 vpos.y += trans_delta_vec.y;
451 vpos.z += trans_delta_vec.z;
452 vcopy.push_back(vpos);
456 point_set->set_vertices(&(vcopy[0]), vcopy.size());
460void Dynamic_point_set::delete_scene_element(
461 const mi::neuraylib::Tag& scene_element_tag,
462 const mi::neuraylib::Tag& transform_tag,
463 mi::neuraylib::IDice_transaction* dice_transaction)
const
469 mi::base::Handle<nv::index::ITransformed_scene_group> group_node(
470 dice_transaction->edit<nv::index::ITransformed_scene_group>(transform_tag));
473 group_node->remove(scene_element_tag, dice_transaction);
475 std::stringstream sstr;
476 sstr <<
"scene element: " << scene_element_tag.id;
477 DEBUG_LOG << sstr.str() <<
" was removed from the scene.";
481void Dynamic_point_set::get_top_view_param(
const mi::math::Bbox<mi::Float32, 3>& vbbox,
482 const mi::Float32 aspect,
483 const mi::Float32 fovy_2,
484 mi::math::Vector< mi::Float32, 3 >& from,
485 mi::math::Vector< mi::Float32, 3 >& to,
486 mi::math::Vector< mi::Float32, 3 >& up,
487 mi::Float32 & clip_min,
488 mi::Float32 & clip_max)
const
491 const mi::Float32 dist =
static_cast<mi::Float32
>((0.6 * mi::math::euclidean_distance(vbbox.max, vbbox.min)) /
492 (sqrt(2.0) * tan(fovy_2)));
493 from = -(dist * mi::math::Vector< mi::Float32, 3 >(0.0f, 0.0f, -1.0f)) + vbbox.center();
495 up = mi::math::Vector< mi::Float32, 3 >(0.0f, 1.0f, 0.0f);
496 clip_min = 0.1f * dist;
497 clip_max = 10.0f * dist;
501mi::math::Vector<mi::Uint32, 2> Dynamic_point_set::get_resolution()
const
503 mi::math::Vector<mi::Uint32, 2> res(m_resolution_x, m_resolution_y);
504 if((res.x == 0) || (res.y == 0))
506 ERROR_LOG <<
"illegal_resolution setting: [" << res.x <<
"x" << res.y <<
"], use 1024x1024.";
514void Dynamic_point_set::setup_camera(
515 nv::index::IPerspective_camera* cam,
516 const mi::math::Vector<mi::Uint32, 3>& roi_max,
517 mi::neuraylib::IDice_transaction* dice_transaction)
const
521 cam->set_aperture(0.033f);
522 cam->set_focal(0.03f);
524 const mi::math::Vector<mi::Uint32, 2> res = get_resolution();
525 const mi::Float32 pix_aspect_ratio_1x1 = 1.0f;
528 cam->set_aspect(pix_aspect_ratio_1x1);
531 mi::math::Bbox< mi::Float32, 3 >
const
532 vbbox(0.0f, 0.0f, 0.0f,
533 static_cast< mi::Float32
>(roi_max.x),
static_cast< mi::Float32
>(roi_max.y),
534 static_cast< mi::Float32
>(roi_max.z));
535 mi::math::Vector< mi::Float32, 3 > from(0.0f, 0.0f, 0.0f);
536 mi::math::Vector< mi::Float32, 3 > to (0.0f, 0.0f, 0.0f);
537 mi::math::Vector< mi::Float32, 3 > up (0.0f, 0.0f, 0.0f);
538 mi::Float32 clip_min = 0.1f;
539 mi::Float32 clip_max = 10.0f;
540 get_top_view_param(vbbox,
541 static_cast<mi::Float32
>(cam->get_aspect()),
542 static_cast<mi::Float32
>((cam->get_fov_y_rad() / 2.0)),
543 from, to, up, clip_min, clip_max);
545 INFO_LOG <<
"set camera resolution [" << res.x <<
" " << res.y
546 <<
"], aspect_ratio: " << pix_aspect_ratio_1x1;
548 mi::math::Vector<mi::Float32, 3> viewdir = to - from;
551 cam->set(from, viewdir, up);
552 cam->set_clip_min(clip_min);
553 cam->set_clip_max(clip_max);
557bool Dynamic_point_set::setup_main_host()
560 mi::math::Vector< mi::Uint32, 3 > roi_max(m_roi_x, m_roi_y, m_roi_z);
561 for(mi::Sint32 i = 0; i < 3; ++i)
565 ERROR_LOG <<
"illegal roi setting: [" << i <<
"] = " << roi_max[i] <<
", use 1024.";
571 m_cluster_configuration =
572 get_index_interface()->get_api_component<nv::index::ICluster_configuration>();
576 m_image_file_canvas = create_image_file_canvas(get_application_layer_interface());
581 check_success(is_local_host_joined(m_cluster_configuration.get()));
584 mi::base::Handle<mi::neuraylib::IDice_transaction> dice_transaction(
585 m_global_scope->create_transaction<mi::neuraylib::IDice_transaction>());
590 m_index_session->create_session(dice_transaction.get());
600 mi::base::Handle< nv::index::ISession const > session(
601 dice_transaction->access< nv::index::ISession
const >(
605 mi::base::Handle< nv::index::IScene > scene_edit(
606 dice_transaction->edit<nv::index::IScene>(session->get_scene()));
609 mi::base::Handle< nv::index::IPerspective_camera > cam(
610 scene_edit->create_camera<nv::index::IPerspective_camera>());
612 setup_camera(cam.get(), roi_max, dice_transaction.get());
613 const mi::neuraylib::Tag camera_tag = dice_transaction->store(cam.get());
616 const mi::math::Vector<mi::Uint32, 2> buffer_resolution = get_resolution();
617 m_image_file_canvas->set_resolution(buffer_resolution);
620 mi::math::Bbox_struct< mi::Float32, 3 >
const xyz_roi_st = {
621 { 0.0f, 0.0f, 0.0f, },
622 {
static_cast< mi::Float32
>(roi_max.x),
623 static_cast< mi::Float32
>(roi_max.y),
624 static_cast< mi::Float32
>(roi_max.z), },
628 const mi::math::Bbox< mi::Float32, 3 > xyz_roi(xyz_roi_st);
630 scene_edit->set_clipped_bounding_box(xyz_roi_st);
634 mi::math::Matrix<mi::Float32, 4, 4> transform_mat(
635 1.0f, 0.0f, 0.0f, 0.0f,
636 0.0f, 1.0f, 0.0f, 0.0f,
637 0.0f, 0.0f, -1.0f, 0.0f,
638 0.0f, 0.0f, 0.0f, 1.0f
640 scene_edit->set_transform_matrix(transform_mat);
644 scene_edit->set_camera(camera_tag);
646 INFO_LOG <<
"ROI set to [0, 0, 0]-[" << roi_max.x <<
", " << roi_max.y <<
", " << roi_max.z <<
"]";
648 dice_transaction->commit();
650 INFO_LOG <<
"Initialization complete.";
656void Dynamic_point_set::animate_point(
657 const mi::neuraylib::Tag& session_tag,
658 mi::Sint32 frame_idx,
659 mi::neuraylib::IDice_transaction* dice_transaction)
661 if(m_frame_command_vec.empty())
667 if(m_frame_command_vec.back().get_frame() != frame_idx)
672 Frame_command fc = m_frame_command_vec.back();
674 m_frame_command_vec.pop_back();
676 INFO_LOG <<
"execute command: " << fc.to_string();
677 const std::string & com = fc.get_command();
680 if(m_point_set_tag.is_valid())
682 ERROR_LOG <<
"create: Point set has been already created. ignored.";
685 create_point_set(session_tag, dice_transaction);
687 else if(com ==
"delete")
689 if(!(m_point_set_tag.is_valid()))
691 ERROR_LOG << (
"delete: Point set doesn't exist. ignored.");
694 delete_scene_element(m_point_set_tag,
695 m_point_set_group_tag,
697 m_point_set_tag = mi::neuraylib:
:NULL_TAG;
699 else if(com ==
"translate_delta")
701 if(!(m_point_set_tag.is_valid()))
703 ERROR_LOG << (
"translate_delta: Point set doesn't exist. ignored.");
706 std::vector< std::string > args = fc.get_argument();
708 mi::math::Vector< mi::Float32, 3 > trans_delta_vec(nv::index::app::get_float32(args[1]),
709 nv::index::app::get_float32(args[2]),
710 nv::index::app::get_float32(args[3]));
711 translate_point_set(m_point_set_tag,
717 ERROR_LOG << (
"unknown command [" + com +
"]. ignored.");
722nv::index::IFrame_results* Dynamic_point_set::render_frame(
const std::string& output_fname)
const
727 m_image_file_canvas->set_rgba_file_name(output_fname.c_str());
731 mi::base::Handle<mi::neuraylib::IDice_transaction> dice_transaction(
732 m_global_scope->create_transaction<mi::neuraylib::IDice_transaction>());
735 m_index_session->update(m_session_tag, dice_transaction.get());
737 mi::base::Handle<nv::index::IFrame_results> frame_results(
738 m_index_rendering->render(
740 m_image_file_canvas.get(),
741 dice_transaction.get()));
744 dice_transaction->commit();
746 frame_results->retain();
747 return frame_results.get();
751bool Dynamic_point_set::update_scene_and_render_frame(mi::Sint32 frame_idx)
755 mi::base::Handle<mi::neuraylib::IDice_transaction> dice_transaction(create_transaction());
761 animate_point(m_session_tag, frame_idx, dice_transaction.get());
763 dice_transaction->commit();
768 std::string fname =
"";
769 if (m_is_save_all_frame)
771 fname = get_output_file_name(m_outfname, frame_idx);
774 mi::base::Handle<nv::index::IFrame_results> frame_results(render_frame(fname));
775 const mi::base::Handle<nv::index::IError_set> err_set(frame_results->get_error_set());
776 if (err_set->any_errors())
778 std::ostringstream os;
780 const mi::base::Handle<nv::index::IError_set> err_set(frame_results->get_error_set());
781 const mi::Uint32 nb_err = err_set->get_nb_errors();
782 for (mi::Uint32 e = 0; e < nb_err; ++e)
784 if (e != 0) os <<
'\n';
785 const mi::base::Handle<nv::index::IError> err(err_set->get_error(e));
786 os << err->get_error_string();
789 ERROR_LOG <<
"IIndex_rendering rendering call failed with the following error(s): " <<
'\n'
798bool Dynamic_point_set::mainhost_rendering_loop()
801 const mi::Sint32 max_frame_count = m_max_iter - 1;
802 INFO_LOG <<
"set max iteration: " << m_max_iter;
803 INFO_LOG <<
"set is_save_all_frame: " << (m_is_save_all_frame ?
"true" :
"false");
807 for(mi::Sint32 i = 0; i < m_max_iter; ++i)
809 if((!m_is_save_all_frame) && (i != max_frame_count))
811 m_is_save_all_frame =
true;
814 is_ok = update_scene_and_render_frame(i);
821 INFO_LOG <<
"Finished main host rendering loop.";
827void Dynamic_point_set::setup_animation()
830 std::vector< std::string > com_create;
831 com_create.push_back(
"create");
832 std::vector< std::string > com_translate;
833 com_translate.push_back(
"translate_delta");
834 com_translate.push_back(
"20.0");
835 com_translate.push_back(
"20.0");
836 com_translate.push_back(
"20.0");
838 std::vector< std::string > com_delete;
839 com_delete.push_back(
"delete");
841 m_frame_command_vec.push_back(Frame_command(5, com_create));
843 for(mi::Sint32 i = 10; i < 20; ++i)
845 m_frame_command_vec.push_back(Frame_command(i, com_translate));
847 m_frame_command_vec.push_back(Frame_command(22, com_delete));
853 mi::Sint32
const base_frame = 30;
854 mi::Sint32
const interval = 5;
855 mi::Sint32
const iter = 3;
856 for(mi::Sint32 i = 0; i < iter; ++i)
858 mi::Sint32 iter_base = base_frame + (i * interval);
859 mi::Sint32 offset = 0;
860 m_frame_command_vec.push_back(Frame_command(iter_base + offset, com_create));
862 m_frame_command_vec.push_back(Frame_command(iter_base + offset, com_translate));
864 m_frame_command_vec.push_back(Frame_command(iter_base + offset, com_delete));
870 std::sort(m_frame_command_vec.begin(), m_frame_command_vec.end(), Frame_command_sorter());
873 assert(!(m_frame_command_vec.empty()));
874 for(mi::Sint32 i =
static_cast<mi::Sint32
>(m_frame_command_vec.size() - 1); i >=0 ; --i)
877 DEBUG_LOG << m_frame_command_vec.at(i).to_string();
883int main(
int argc,
const char* argv[])
885 nv::index::app::String_dict sdict;
886 sdict.insert(
"dice::verbose",
"3");
887 sdict.insert(
"dice::network::multicast_address",
"224.1.3.2");
888 sdict.insert(
"max_iter",
"40");
889 sdict.insert(
"resolution_x",
"1024");
890 sdict.insert(
"resolution_y",
"1024");
891 sdict.insert(
"roi_x",
"512");
892 sdict.insert(
"roi_y",
"512");
893 sdict.insert(
"roi_z",
"512");
894 sdict.insert(
"outfname",
"frame_dynamic_point");
895 sdict.insert(
"is_save_all_frame",
"0");
896 sdict.insert(
"is_animation_on",
"1");
897 sdict.insert(
"point_rendering_mode",
"raytracing");
898 sdict.insert(
"point_radius_mode",
"object_space");
899 sdict.insert(
"unittest",
"0");
900 sdict.insert(
"is_dump_comparison_image_when_failed",
"1");
901 sdict.insert(
"is_call_from_test",
"0");
904 sdict.insert(
"dice::network::mode",
"OFF");
907 sdict.insert(
"index::config::set_monitor_performance_values",
"true");
908 sdict.insert(
"index::service",
"rendering_and_compositing");
909 sdict.insert(
"index::cuda_debug_checks",
"false");
912 sdict.insert(
"index::app::components::application_layer::component_name_list",
913 "canvas_infrastructure image io");
917 dynamic_point_set.initialize(argc, argv, sdict);
921 const mi::Sint32 exit_code = dynamic_point_set.
launch();
922 INFO_LOG <<
"Shutting down ...";
virtual bool initialize_networking(mi::neuraylib::INetwork_configuration *network_configuration, nv::index::app::String_dict &options) CPP11_OVERRIDE
virtual ~Dynamic_point_set()
virtual bool evaluate_options(nv::index::app::String_dict &sdict) CPP11_OVERRIDE
int main(int argc, const char *argv[])
#define check_success(expr)