基于点约束的曲面变形算法的一点心得
来源:互联网 发布:linux sensor驱动 编辑:程序博客网 时间:2024/06/04 15:29
最近研究三维曲面的变形算法
主要参考“基于点约束的交互式曲面自由变形技术”这篇文章
理论上和二维图像的变形是一样的,只是扩展到了三维
几点心得记录如下:
1、目前不知道obj三维模型的坐标值是如何得到的,都是非常小的小数,有正有负。你说归一化了吧,还有大于1的值。
这就导致上面文章中提到的参数大小对变形的影响。文章中设置h=1,我采用的是CANDIDE-3标准模型,h设置为1时,变形及其严重,设置为0.1还可以。同样的,σ1是影响变形范围,设置大了,影响的点就多,比如眼角变形,σ1设置大了,头发上的点都会影响到。
只有知道三维模型的坐标是如何得到的,根据此,才能定死参数的值(2014-3-19)
2、上面文章中,指出求P点在Pc点切平面的投影点P*,如果|P*-Pc|>σ1/2的话,则点坐标不变。
σ1决定了Pc点切平面的圆形变形区域的大小。模型上所有点都可以投影到这个切平面,σ1设置大了,当然影响到的点就多。
需要注意空间中切平面的位置。切平面是垂直于Pc'和Pc两点连线的平面,所以切平面的位置和角度是与Pc'的坐标相关的。Pc'坐标不一样,切平面也不一样。P点到切平面投影点P*的坐标也不一样,P*到Pc距离也不一样。所以,如果将模型点的z坐标置为0(相当于拍扁成为2维图像坐标),会出现距离Pc点很远的点也会变形的效果。这就是因为很远点与Pc点的连线与切平面的角度很小的缘故,导致P*点与Pc的距离<σ1/2。要解决这个问题,还需要设置一个空间距离参数阈值,模型上点与Pc的空间距离小于这个阈值的,才会进行变形。或者变形只对某些子模块的点变形,比如Pc是眼睛上的点,需要变形的点只是眼睛这一模块上的点。
3、上面文章中,变形曲线的图是错误的!
文章里,为了保证变形区域边缘处保持不变,加入了一个由σ1和σ2确定的常量。但这么做,却保证不了Pc点变形不到Pc'点。处理Pc点的变形时,变形函数前一项为exp(0)=1,如果没加入常量的话,可以保证Pc变形后就是Pc',加入后反而不是Pc'了。
这么做,有些和我做的二维图像的瘦脸功能类似。不能保证当前点变形到指定点,但可以保证边缘平滑。
4、MD,越研究越发现上面这破文章纯粹是骗人的!!!!
- 基于点约束的曲面变形算法的一点心得
- 基于定位的一点心得
- 基于最小二乘法估计点云的曲面法向量
- 连接点问题的一点心得
- 基于图像的三维重建与基于三维点云数据的曲面拟合
- 基于顶点的图形图像任意变形算法
- 理解机器学习算法的一点心得
- 曲面映射的算法理论基础
- 推荐算法:基于约束的推荐
- 基于Householder变换的约束自适应算法
- 点云的曲面法向量估计
- 二分查找的一点变形
- 基于vc++的网络管理的一点心得
- 基于vc++的网络管理的一点心得
- 基于vc++的网络管理的一点心得
- 基于NVIDIA显卡的硬编解码的一点心得
- 开发基于Safari网站的一点心得(1)
- 我的一点心得
- Flex与java简单的交互
- 三大框架(struct、spring、hibernate)的优缺点
- linux下添加PATH环境变量
- Spring+Hibernate两种方法实现增删改查
- Flex离线地图和在线谷歌地图实现<完整版>
- 基于点约束的曲面变形算法的一点心得
- 多态基类的析构函数必须加上virtual
- R语言中的基本调试
- C语言读取配置文件例子
- HOG+PCA行人检测
- 《C#本质论(第4版)》
- 某种序列(nyoj 114)
- E9加速器叫你国内怎么注册facebook,twitter(推特)怎么看youtube.E9加速器
- ios学习临时笔记-UIImage拉伸