| 1134 | } |
| 1135 | |
| 1136 | void |
| 1137 | TrackerContext::solveTransformParams() |
| 1138 | { |
| 1139 | _imp->setTransformOutOfDate(false); |
| 1140 | |
| 1141 | std::vector<TrackMarkerPtr> markers; |
| 1142 | |
| 1143 | getAllMarkers(&markers); |
| 1144 | if ( markers.empty() ) { |
| 1145 | return; |
| 1146 | } |
| 1147 | |
| 1148 | _imp->resetTransformParamsAnimation(); |
| 1149 | |
| 1150 | boost::shared_ptr<KnobChoice> motionTypeKnob = _imp->motionType.lock(); |
| 1151 | int motionType_i = motionTypeKnob->getValue(); |
| 1152 | TrackerMotionTypeEnum type = (TrackerMotionTypeEnum)motionType_i; |
| 1153 | double refTime = (double)getTransformReferenceFrame(); |
| 1154 | int jitterPeriod = 0; |
| 1155 | bool jitterAdd = false; |
| 1156 | switch (type) { |
| 1157 | case eTrackerMotionTypeNone: |
| 1158 | |
| 1159 | return; |
| 1160 | case eTrackerMotionTypeMatchMove: |
| 1161 | case eTrackerMotionTypeStabilize: |
| 1162 | break; |
| 1163 | case eTrackerMotionTypeAddJitter: |
| 1164 | case eTrackerMotionTypeRemoveJitter: { |
| 1165 | jitterPeriod = _imp->jitterPeriod.lock()->getValue(); |
| 1166 | jitterAdd = type == eTrackerMotionTypeAddJitter; |
| 1167 | break; |
| 1168 | } |
| 1169 | } |
| 1170 | |
| 1171 | _imp->setSolverParamsEnabled(false); |
| 1172 | |
| 1173 | std::set<double> keyframes; |
| 1174 | { |
| 1175 | for (std::size_t i = 0; i < markers.size(); ++i) { |
| 1176 | std::set<double> keys; |
| 1177 | markers[i]->getCenterKeyframes(&keys); |
| 1178 | for (std::set<double>::iterator it = keys.begin(); it != keys.end(); ++it) { |
| 1179 | keyframes.insert(*it); |
| 1180 | } |
| 1181 | } |
| 1182 | } |
| 1183 | boost::shared_ptr<KnobChoice> transformTypeKnob = _imp->transformType.lock(); |
| 1184 | assert(transformTypeKnob); |
| 1185 | int transformType_i = transformTypeKnob->getValue(); |
| 1186 | TrackerTransformNodeEnum transformType = (TrackerTransformNodeEnum)transformType_i; |
| 1187 | NodePtr node = getNode(); |
| 1188 | node->getEffectInstance()->beginChanges(); |
| 1189 | |
| 1190 | |
| 1191 | if (type == eTrackerMotionTypeStabilize) { |
| 1192 | _imp->invertTransform.lock()->setValue(true); |
| 1193 | } else { |
no test coverage detected