| 1153 | } |
| 1154 | |
| 1155 | void |
| 1156 | TrackerContext::solveTransformParams() |
| 1157 | { |
| 1158 | _imp->setTransformOutOfDate(false); |
| 1159 | |
| 1160 | std::vector<TrackMarkerPtr> markers; |
| 1161 | |
| 1162 | getAllMarkers(&markers); |
| 1163 | if ( markers.empty() ) { |
| 1164 | return; |
| 1165 | } |
| 1166 | |
| 1167 | _imp->resetTransformParamsAnimation(); |
| 1168 | |
| 1169 | KnobChoicePtr motionTypeKnob = _imp->motionType.lock(); |
| 1170 | int motionType_i = motionTypeKnob->getValue(); |
| 1171 | TrackerMotionTypeEnum type = (TrackerMotionTypeEnum)motionType_i; |
| 1172 | double refTime = (double)getTransformReferenceFrame(); |
| 1173 | int jitterPeriod = 0; |
| 1174 | bool jitterAdd = false; |
| 1175 | switch (type) { |
| 1176 | case eTrackerMotionTypeNone: |
| 1177 | |
| 1178 | return; |
| 1179 | case eTrackerMotionTypeMatchMove: |
| 1180 | case eTrackerMotionTypeStabilize: |
| 1181 | break; |
| 1182 | case eTrackerMotionTypeAddJitter: |
| 1183 | case eTrackerMotionTypeRemoveJitter: { |
| 1184 | jitterPeriod = _imp->jitterPeriod.lock()->getValue(); |
| 1185 | jitterAdd = type == eTrackerMotionTypeAddJitter; |
| 1186 | break; |
| 1187 | } |
| 1188 | } |
| 1189 | |
| 1190 | _imp->setSolverParamsEnabled(false); |
| 1191 | |
| 1192 | std::set<double> keyframes; |
| 1193 | { |
| 1194 | for (std::size_t i = 0; i < markers.size(); ++i) { |
| 1195 | std::set<double> keys; |
| 1196 | markers[i]->getCenterKeyframes(&keys); |
| 1197 | for (std::set<double>::iterator it = keys.begin(); it != keys.end(); ++it) { |
| 1198 | keyframes.insert(*it); |
| 1199 | } |
| 1200 | } |
| 1201 | } |
| 1202 | KnobChoicePtr transformTypeKnob = _imp->transformType.lock(); |
| 1203 | assert(transformTypeKnob); |
| 1204 | int transformType_i = transformTypeKnob->getValue(); |
| 1205 | TrackerTransformNodeEnum transformType = (TrackerTransformNodeEnum)transformType_i; |
| 1206 | NodePtr node = getNode(); |
| 1207 | node->getEffectInstance()->beginChanges(); |
| 1208 | |
| 1209 | |
| 1210 | if (type == eTrackerMotionTypeStabilize) { |
| 1211 | _imp->invertTransform.lock()->setValue(true); |
| 1212 | } else { |
no test coverage detected