NVIDIA Index example code nvidia_logo_transpbg.gif Up
attribute_point_set.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright 2023 NVIDIA Corporation. All rights reserved.
3 *****************************************************************************/
6
7#ifndef NVIDIA_INDEX_EXAMPLE_ATTRIBUTE_POINT_SET_H
8#define NVIDIA_INDEX_EXAMPLE_ATTRIBUTE_POINT_SET_H
9
10#include <mi/dice.h>
11#include <mi/base/interface_implement.h>
12#include <mi/base/handle.h>
13#include <mi/base/uuid.h>
14#include <mi/math/vector.h>
15
16#include <nv/index/ipoint_set.h>
17
18#include <vector>
19
20
32 public mi::neuraylib::Element<0x37d4157e,0x7ac0,0x4812,0xb8,0xe2,0x7a,0x45,0x26,0x4b,0xa3,0x4c,
33 nv::index::IPoint_set>
34{
35public:
42 const std::vector< mi::math::Vector_struct< mi::Float32, 3 > >& vertex_vec,
43 const std::vector< mi::Float32 > & attribute_vec,
44 nv::index::IPoint_set::Point_style point_style);
45
48 :
49 m_vertex_vec(),
50 m_per_vertex_color_values(),
51 m_per_vertex_radii(),
52 m_point_style(nv::index::IPoint_set::FLAT_CIRCLE),
53 m_rendering_enabled(true),
54 m_pickable(true)
55 {
56 // empty
57 }
58
61
64 void set_attribute(std::vector< mi::Float32 > const & attribute_vec);
65
69 mi::math::Vector_struct<mi::Float32, 3> * peek_vertices();
70
71
72public:
78 virtual mi::Size get_nb_vertices() const { return m_vertex_vec.size(); }
79
84 virtual const mi::math::Vector_struct<mi::Float32, 3>* get_vertices() const;
85
89 virtual mi::Size get_nb_colors() const { return m_per_vertex_color_values.size(); }
90
95 virtual const mi::math::Color_struct* get_colors() const;
96
100 virtual mi::Size get_nb_radii() const { return m_per_vertex_radii.size(); }
101
106 virtual const mi::Float32* get_radii() const;
107
113 virtual Point_style get_point_style() const { return m_point_style; }
114 virtual void set_point_style(Point_style style) { m_point_style = style; }
115
118 virtual void set_enabled(bool enable) { m_rendering_enabled = enable;}
121 virtual bool get_enabled() const { return m_rendering_enabled;}
122
132 virtual void set_meta_data(mi::neuraylib::Tag_struct tag) { m_meta_data = tag; }
133
139 virtual mi::neuraylib::Tag_struct get_meta_data() const { return m_meta_data; }
140
141public:
142 // Implemented IShape
143
144 virtual bool get_pickable() const { return m_pickable; }
145 virtual void set_pickable(bool pickable) { m_pickable = pickable; }
146
147public:
148 // Implemented IElement
149
150 virtual mi::neuraylib::IElement* copy() const;
151 virtual const char* get_class_name() const;
152 virtual void serialize(
153 mi::neuraylib::ISerializer *serializer) const;
154 virtual void deserialize(
155 mi::neuraylib::IDeserializer* deserializer);
156 virtual void get_references(mi::neuraylib::ITag_set* result) const
157 {
158 if(m_meta_data.is_valid())
159 result->add_tag(m_meta_data);
160 }
161
162protected:
166 mi::math::Color_struct get_color_from_attribute(mi::Float32 attrib);
167
171 mi::Float32 get_radius_from_attribute(mi::Float32 attrib);
172
173private:
174 virtual void set_vertices(mi::math::Vector_struct<mi::Float32, 3>* vertices, mi::Size nb_vertices) { }
175 virtual void set_radii(mi::Float32* radii, mi::Size nb_radii) { }
176 virtual void set_colors(mi::math::Color_struct* colors, mi::Size nb_colors) { }
177
178 // vertices coordinates
179 std::vector<mi::math::Vector_struct<mi::Float32, 3> > m_vertex_vec;
180 // vertices colors
181 std::vector<mi::math::Color_struct> m_per_vertex_color_values;
182 // vertices radii
183 std::vector<mi::Float32> m_per_vertex_radii;
184 // style of the point set
185 nv::index::IPoint_set::Point_style m_point_style;
186 // rendering enable/disable status
187 bool m_rendering_enabled;
188 // status of enabled pick-ability
189 bool m_pickable;
190 // Meta data
191 mi::neuraylib::Tag m_meta_data;
192};
193
194#endif // NVIDIA_INDEX_EXAMPLE_ATTRIBUTE_POINT_SET_H
An example simple point set shape implementation of IPoint_set.
virtual bool get_enabled() const
Get enable/disable rendering state of this shape.
virtual void get_references(mi::neuraylib::ITag_set *result) const
void set_attribute(std::vector< mi::Float32 > const &attribute_vec)
set point attribute
virtual Point_style get_point_style() const
The rasterizer enabling stylized points supports different point styles such as flat disks or shaded ...
virtual void serialize(mi::neuraylib::ISerializer *serializer) const
mi::Float32 get_radius_from_attribute(mi::Float32 attrib)
attribute to radius map example
virtual mi::Size get_nb_colors() const
Get the size of color buffer.
virtual const mi::math::Vector_struct< mi::Float32, 3 > * get_vertices() const
Get the pointer to the array of vertices (points).
virtual void set_pickable(bool pickable)
virtual const char * get_class_name() const
mi::math::Color_struct get_color_from_attribute(mi::Float32 attrib)
attribute to color map example
virtual mi::neuraylib::IElement * copy() const
virtual mi::Size get_nb_vertices() const
virtual mi::Size get_nb_radii() const
Get the size of radius buffer.
Attribute_point_set()
Constructing the point set shape for serialization.
virtual mi::neuraylib::Tag_struct get_meta_data() const
Retrieve the scene element's reference to the user-defined meta data.
virtual bool get_pickable() const
virtual void set_enabled(bool enable)
Set enable/disable rendering state of this shape.
virtual void set_point_style(Point_style style)
mi::math::Vector_struct< mi::Float32, 3 > * peek_vertices()
peek the vertex position for change.
virtual void deserialize(mi::neuraylib::IDeserializer *deserializer)
virtual void set_meta_data(mi::neuraylib::Tag_struct tag)
Each scene element can store additional user-defined meta data.
virtual ~Attribute_point_set()
Destructing the point set shape.
virtual const mi::Float32 * get_radii() const
Get the pointer to the array of per-vertex radii.
virtual const mi::math::Color_struct * get_colors() const
Get the pointer to the array of per-vertex color values.