MCPcopy Create free account
hub / github.com/RenderKit/ospray / readParams

Method readParams

modules/cpu/common/MotionTransform.cpp:9–68  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7namespace ospray {
8
9void MotionTransform::readParams(ISPCDeviceObject &obj)
10{
11 transforms = obj.getParamDataT<affine3f>("motion.transform");
12 if (transforms) {
13 motionBlur = transforms->size() > 1;
14 quaternion = false;
15 transform = (*transforms)[0];
16 } else { // look for SRT
17 auto shift = obj.getParamDataT<vec3f>("motion.pivot");
18 auto scale = obj.getParamDataT<vec3f>("motion.scale");
19 auto rotation = obj.getParamDataT<quatf>("motion.rotation");
20 auto translation = obj.getParamDataT<vec3f>("motion.translation");
21 quaternion = shift || scale || rotation || translation;
22 if (quaternion) {
23 // determine (minimum) size
24 size_t size = std::numeric_limits<size_t>::max();
25 if (shift)
26 size = shift->size();
27 if (scale)
28 size = std::min(size, scale->size());
29 if (rotation)
30 size = std::min(size, rotation->size());
31 if (translation)
32 size = std::min(size, translation->size());
33 motionBlur = size > 1;
34 quaternions.resize(size);
35 for (size_t i = 0; i < size; i++) {
36 auto *qdecomp = &quaternions[i];
37 rtcInitQuaternionDecomposition(qdecomp);
38 if (shift) {
39 const vec3f &s = (*shift)[i];
40 rtcQuaternionDecompositionSetShift(qdecomp, s.x, s.y, s.z);
41 }
42 if (scale) {
43 const vec3f &s = (*scale)[i];
44 rtcQuaternionDecompositionSetScale(qdecomp, s.x, s.y, s.z);
45 }
46 if (rotation) {
47 const quatf &q = (*rotation)[i];
48 rtcQuaternionDecompositionSetQuaternion(qdecomp, q.r, q.i, q.j, q.k);
49 }
50 if (translation) {
51 const vec3f &t = (*translation)[i];
52 rtcQuaternionDecompositionSetTranslation(qdecomp, t.x, t.y, t.z);
53 }
54 }
55 } else { // add single transform
56 quaternions.clear();
57 motionBlur = false;
58 transform = obj.getParam<affine3f>(
59 "transform", obj.getParam<affine3f>("xfm", affine3f(one)));
60 }
61 }
62 time = range1f(0.0f, 1.0f);
63 if (motionBlur) {
64 time = obj.getParam<range1f>("time", range1f(0.0f, 1.0f));
65 if (time.upper < time.lower)
66 time.upper = time.lower;

Callers 2

commitMethod · 0.45
commitMethod · 0.45

Calls 2

sizeMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected