求助(期待中!):OpenGL 人脸模型交互式变形,即对模型进行局部修改 如何实现

Margaret_加油 2010-11-12 05:39:33
如题,我用VC读入了obj的人脸模型,想对它进行交互式地变形修改操作,就是说,鼠标移动一段距离x,想要与鼠标对应的三维模型上的点(当然是在以鼠标点为圆心,以某个数值a为半径的控制范围之内),就是说如果模型上的点投影到屏幕坐标上在以我的鼠标点为圆心的这个圆的控制范围内,那么这个(这些点)就在x方向移动一段距离。

想让大家帮我提点一下思路!!

有没有人做过这方面研究的,多多指教下啊,感激不尽!!
...全文
163 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
具体实现上有些困难 ? 不是有点 而是非常大。具体实现,我不是太清楚。 但是 我知道 这个东西的难度跟三维重建的难度差不多。 三维实体如何表示? 修改? 曲线曲面的理论熟悉是做这个东西最难的地方。
Margaret_加油 2010-11-13
  • 打赏
  • 举报
回复
我也是那么想的 我用的一个模态对话框 准备用来输入需要的作用半径,我目前把它设置成为一个常数,移动的距离也是可以根据鼠标移动的距离来确定的,但在具体实现上有些困难

能不能给出一些具体的代码或函数?
luocw110 2010-11-13
  • 打赏
  • 举报
回复
如果不用拾取的话, 可以增加一个非模态对话框,在对话框中选择需要移动点的标号,以及作用半径,移动距离,这样就可实现了
Margaret_加油 2010-11-13
  • 打赏
  • 举报
回复
谢谢楼上的建议

我想实现的功能和EditMesh的功能有些不太一样,有没有什么办法不用拾取模型上的点就能根据鼠标点击得到的控制范围来改变模型中的点?
向立天 2010-11-13
  • 打赏
  • 举报
回复
你说的就是类似Max里的EditMesh功能吧
建议先看看OpenGL有关鼠标拾取的例子
然后把拾取对象变成你的模型上的点就好了
libralibra 2010-11-13
  • 打赏
  • 举报
回复
互相联系下,我也准备看类似的
ryfdizuo 2010-11-13
  • 打赏
  • 举报
回复
可以简化拾取:
1,通过gluProject函数将三维坐标系中的顶点映射到二维窗口坐标系中。
gluProject -- map object coordinates to window coordinates
2,在窗口坐标系中操作,鼠标的当前位置以及半径可以确定一个作用圆,获得位于圆内的顶点。
3,编辑这些点即可。
PS:移动距离的确定也是在窗口坐标系中。
向立天 2010-11-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 pengch987 的回复:]
谢谢楼上的提醒 我以为要实现这个功能只要弄明白我所读取的obj文件的数据结构,然后在响应消息函数的地方改变obj的顶点数据即可, 没有想过还需要运用曲线或曲面的一些理论

做到后面的话是一定要用到曲面的知识的,比如,如果想让鼠标作用范围的点朝着法向方向移动的话,就需要获得曲面的一些参数

只是我现在还只在考虑最简单的情况,就是让点朝X方向移动
就是这样 实现起来也很困难
[/Quote]
用不着知道曲线的知识
你这样处理只能做polygon的模型
NURBS,贝塞尔和b样条这些东西是不支持这种操作的
因为原理不一样
所到底就编辑点
不过你要代码我是没有
没做过这样东西
自己去网上找找吧
而且我已经说了
基本原理就是拾取
你不想通过鼠标拾取的话基本原理也是那样
只是实现方式不同罢了
Margaret_加油 2010-11-13
  • 打赏
  • 举报
回复
谢谢楼上的提醒 我以为要实现这个功能只要弄明白我所读取的obj文件的数据结构,然后在响应消息函数的地方改变obj的顶点数据即可, 没有想过还需要运用曲线或曲面的一些理论

做到后面的话是一定要用到曲面的知识的,比如,如果想让鼠标作用范围的点朝着法向方向移动的话,就需要获得曲面的一些参数

只是我现在还只在考虑最简单的情况,就是让点朝X方向移动
就是这样 实现起来也很困难
Margaret_加油 2010-11-12
  • 打赏
  • 举报
回复
先自己顶一个吧。。
期待高手的指点。。。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧