#ifndef REMOTEAR3_SCENE_RENDER_H #define REMOTEAR3_SCENE_RENDER_H #include #include class scene_render { public: scene_render(); ~scene_render(); using actor_token_type = void *; actor_token_type create_actor(const char *model_path, actor_token_type bg_actor = nullptr); static void set_actor_visibility(actor_token_type actor, bool visible); static void set_actor_color(actor_token_type actor, const float color[3], float ambient_factor = 0.2f); static void set_actor_alpha_factor(actor_token_type actor, float alpha_factor = 0.25f); static void set_actor_transform(actor_token_type actor, glm::mat4 transform); void set_light_direction(glm::vec3 direction); void set_light_follow_camera(bool enable = true); void set_camera_fov(float fov); void set_camera_clip_range(float near = 0.1f, float far = 1000.0f); // transform: standard camera coordinate (Z points inside image), like VTK void set_camera_transform(glm::mat4 transform); void render(); private: struct impl; std::unique_ptr pimpl; }; #endif //REMOTEAR3_SCENE_RENDER_H