我想将轮廓上的一组参考点转换为一组相应的目标点。每个轮廓总共有8个点。
为了计算旋转&翻译矢量,我使用Math.Net Numerics库来执行SVD计算 - 这个想法来自this URL(第3-7页):
但不知何故,我注意到使用SVD计算结果进行的转换似乎不准确。结果如下图所示:
变换应该尽可能接近地将参考点移动到目标点,但是如果突出显示,它会远离目标点。
此外,我还做了一个简单的测试,我计算了两个轮廓的质心并进行演绎:(TargetCentroid - RefCentroid =翻译矢量)。最终的转换结果与通过SVD相同。
我做错了吗?任何人都可以建议一个更好的解决方案来将ref点转换为目标点吗?
修改 1.从参考模型到各种目标模型的服装转换
答案 0 :(得分:0)
这似乎是一个过于复杂的问题解决方案。
如果你有目标点,你可以将给定点瞄准它们相应的目标点。
或者,如果目标是相同的网格但具有与图片中不同的比例和旋转,您可以只是相对地翻转变换值,缩放和旋转,而无需单独遍历所有点。
使用Vector3.Lerp
修改强> 此外,lerping将导致所有点同时到达目标,在大多数情况下,这是所需的行为。