19 namespace visualization {
25 const std::string& details) {
26 if (!request.
path_.empty()) {
28 "Resource request for path {} failed:\n* Code: {}\n* "
30 request.
path_.data(), code, details.data());
33 "Resource request failed:\n* Code: {}\n * Error: {}",
34 code, details.data());
37 "Resource request failed: Malformed request");
43 data_size_(data_size),
57 data_size_(data_size),
59 error_callback_(
std::move(error_callback)) {}
66 error_callback_(
std::move(error_callback)) {}
71 std::function<
void(std::shared_ptr<geometry::Image>)> cb) {
75 view, scene, vp[2], vp[3], 3,
false,
79 auto image = std::make_shared<geometry::Image>();
82 image->num_of_channels_ = 3;
83 image->bytes_per_channel_ = 1;
84 image->data_ = std::vector<uint8_t>(buffer.
bytes,
98 std::function<
void(std::shared_ptr<geometry::Image>)> cb,
99 bool z_in_view_space ) {
104 view, scene, vp[2], vp[3], 1,
true,
107 [render, cb, z_in_view_space,
109 auto image = std::make_shared<geometry::Image>();
112 image->num_of_channels_ = 1;
113 image->bytes_per_channel_ = 4;
115 image->num_of_channels_ *
116 image->bytes_per_channel_);
124 float* pixels = (
float*)
image->data_.data();
125 int n_pixels =
image->width_ *
image->height_;
126 if (z_in_view_space) {
127 for (
int i = 0; i < n_pixels; ++i) {
128 if (pixels[i] == 0.f) {
131 pixels[i] = z_near / pixels[i];
135 for (
int i = 0; i < n_pixels; ++i) {
136 pixels[i] = 1.0f - pixels[i];
std::shared_ptr< core::Tensor > image
virtual double GetNear() const =0
void RenderToImage(View *view, Scene *scene, std::function< void(std::shared_ptr< geometry::Image >)> cb)
virtual std::shared_ptr< RenderToBuffer > CreateBufferRenderer()=0
void RenderToDepthImage(View *view, Scene *scene, std::function< void(std::shared_ptr< geometry::Image >)> cb, bool z_in_view_space=false)
std::function< void(const ResourceLoadRequest &, const uint8_t, const std::string &)> ErrorCallback
ResourceLoadRequest(const void *data, size_t data_size)
virtual Camera * GetCamera() const =0
virtual std::array< int, 4 > GetViewport() const =0
__device__ __forceinline__ float infinity()
static const std::string path
static const ResourceLoadRequest::ErrorCallback kDefaultErrorHandler
Generic file read and write utility for python interface.
const std::uint8_t * bytes