40 for (
const auto& prop :
object.getProperties())
45 osphelper::set(ospObject, prop->name.c_str(),
static_cast<float>(prop->get<
double>()));
48 osphelper::set(ospObject, prop->name.c_str(), prop->get<int32_t>());
51 osphelper::set(ospObject, prop->name.c_str(),
static_cast<int32_t
>(prop->get<
bool>()));
54 osphelper::set(ospObject, prop->name.c_str(), prop->get<std::string>());
74 catch (
const std::exception& e)
76 CORE_ERROR(
"Failed to apply properties for ospObject");
85 template <
typename T, std::
size_t N>
88 std::array<T, N> array;
90 std::copy(&input[0], &input[N - 1], array.begin());
96 for (
const auto& prop :
object.getProperties())
101 prop->set(
double(ospObject.getParam1f(prop->name.c_str(), prop->get<
double>())));
104 prop->set(ospObject.getParam1i(prop->name.c_str(), prop->get<int32_t>()));
109 prop->set(
static_cast<bool>(ospObject.getParam(prop->name.c_str(),
static_cast<int>(prop->get<
bool>()))));
112 prop->set(ospObject.getParamString(prop->name.c_str(), prop->get<std::string>()));
115 prop->set(_toStdArray<double, 2>(
116 ospObject.getParam<::ospcommon::vec2f>(prop->name.c_str(), ::ospcommon::vec2f())));
119 prop->set(_toStdArray<int32_t, 2>(
120 ospObject.getParam<::ospcommon::vec2i>(prop->name.c_str(), ::ospcommon::vec2i())));
123 prop->set(_toStdArray<double, 3>(
124 ospObject.getParam<::ospcommon::vec3f>(prop->name.c_str(), ::ospcommon::vec3f())));
127 prop->set(_toStdArray<int32_t, 3>(
128 ospObject.getParam<::ospcommon::vec3i>(prop->name.c_str(), ::ospcommon::vec3i())));
131 prop->set(_toStdArray<double, 4>(
132 ospObject.getParam<::ospcommon::vec4f>(prop->name.c_str(), ::ospcommon::vec4f())));
142 const float x = atan2(2 * (quat.w * quat.x + quat.y * quat.z), 1 - 2 * (quat.x * quat.x + quat.y * quat.y));
143 const float y = asin(2 * (quat.w * quat.y - quat.z * quat.x));
144 const float z = atan2(2 * (quat.w * quat.z + quat.x * quat.y), 1 - 2 * (quat.y * quat.y + quat.z * quat.z));
146 ospcommon::affine3f rot{::ospcommon::one};
147 rot = ::ospcommon::affine3f::rotate({1, 0, 0}, x) * rot;
148 rot = ::ospcommon::affine3f::rotate({0, 1, 0}, y) * rot;
149 rot = ::ospcommon::affine3f::rotate({0, 0, 1}, z) * rot;
153 const auto& scale = transformation.
getScale();
155 return ::ospcommon::affine3f::scale({float(scale.x), float(scale.y), float(scale.z)}) *
156 ::ospcommon::affine3f::translate({float(translation.x), float(translation.y), float(translation.z)}) *
157 ::ospcommon::affine3f::translate(
158 {float(rotationCenter.x), float(rotationCenter.y), float(rotationCenter.z)}) *
160 ::ospcommon::affine3f::translate(
161 {float(-rotationCenter.x), float(-rotationCenter.y), float(-rotationCenter.z)});
167 OSPGeometry instance = ospNewInstance(modelToAdd, (osp::affine3f&)affine);
169 ospAddGeometry(rootModel, instance);
170 ospRelease(instance);
173 void addInstance(OSPModel rootModel, OSPModel modelToAdd, const ::ospcommon::affine3f& affine)
175 OSPGeometry instance = ospNewInstance(modelToAdd, (osp::affine3f&)affine);
177 ospAddGeometry(rootModel, instance);
178 ospRelease(instance);
183 void set(OSPObject obj,
const char*
id,
const char* s)
185 ospSetString(obj,
id, s);
187 void set(OSPObject obj,
const char*
id,
const std::string& s)
189 ospSetString(obj,
id, s.c_str());
191 void set(OSPObject obj,
const char*
id,
float v)
193 ospSet1f(obj,
id, v);
195 void set(OSPObject obj,
const char*
id,
bool v)
197 ospSet1b(obj,
id, v);
199 void set(OSPObject obj,
const char*
id, int32_t v)
201 ospSet1i(obj,
id, v);
205 ospSet2fv(obj,
id, glm::value_ptr(v));
209 ospSet2iv(obj,
id, glm::value_ptr(v));
213 ospSet3fv(obj,
id, glm::value_ptr(v));
217 ospSet3iv(obj,
id, glm::value_ptr(v));
221 ospSet4fv(obj,
id, glm::value_ptr(v));
void set(OSPObject obj, const char *id, const char *s)
void toOSPRayProperties(const PropertyMap &object, OSPObject ospObject)
void fromOSPRayProperties(PropertyMap &object, ::ospray::ManagedObject &ospObject)
void addInstance(OSPModel rootModel, OSPModel modelToAdd, const Transformation &transform)
::ospcommon::affine3f transformationToAffine3f(const Transformation &transformation)
auto _toStdArray(const ospcommon::vec_t< T, N > &input)
glm::vec< 2, int32_t > Vector2i
glm::vec< 3, int32_t > Vector3i
glm::vec< M, T > toGlmVec(const std::array< T, M > &input)