查看: 1992|回复: 10

osg怎样实现变形?

[复制链接]

该用户从未签到

发表于 2013-5-15 13:38:39 | 显示全部楼层 |阅读模式
不是变形动画。
就是静态的变形。
比如给一个圆柱,弯曲90度,弯曲45度。
通过什么方法能实现这样的变形。
比如有两种管道,夹角可能变化无穷。
我需要根据夹角放一个弯头在那里。
这个弯头是圆柱体变形来的。

该用户从未签到

发表于 2013-5-15 14:57:20 来自手机 | 显示全部楼层
比较规则的模型,用程序写,更灵活一些

该用户从未签到

发表于 2013-5-16 00:53:09 | 显示全部楼层
本帖最后由 VR_user_happy 于 2013-5-16 00:57 编辑

变形矩阵相乘
(如同放大矩阵)实际也是变形的一种,不同的形变效果需要有不同的矩阵相乘!

该用户从未签到

发表于 2013-5-16 07:55:08 | 显示全部楼层
更新顶点位置

该用户从未签到

发表于 2013-5-16 09:30:11 | 显示全部楼层
楼主所说的变形是不能通过单纯的矩阵变换解决的,这倒是更像可以用角色蒙皮的类似手段来实现的东西。
不过,如果这个圆柱体是采用角色蒙皮的方式去变形的话,因为表面积不变的原理,会产生褶皱;而管道显然不存在这种东西,所以您这个需求实质上不仅仅是变形而是一种重新生成了,请重新审视这一点

该用户从未签到

 楼主| 发表于 2013-5-16 19:09:07 | 显示全部楼层
array 发表于 2013-5-16 09:30
楼主所说的变形是不能通过单纯的矩阵变换解决的,这倒是更像可以用角色蒙皮的类似手段来实现的东西。
不过 ...

呵呵,太专业了。
我要实现的目标是这样:
让美工给我做一个圆柱体,形状是弯头那样。
我读进来这个ive模型,在需要的地方放置。
同时设置弯曲角度与管道相连。

该用户从未签到

 楼主| 发表于 2013-5-16 19:09:37 | 显示全部楼层
liuzhiyu123 发表于 2013-5-16 07:55
更新顶点位置

顶点算起来不容易吧。

该用户从未签到

 楼主| 发表于 2013-5-16 19:10:40 | 显示全部楼层
VR_user_happy 发表于 2013-5-16 00:53
变形矩阵相乘
(如同放大矩阵)实际也是变形的一种,不同的形变效果需要有不同的矩阵相乘!

放大平移,这些矩阵变换都相对容易。
弯曲就复杂了。

该用户从未签到

 楼主| 发表于 2013-5-16 19:11:38 | 显示全部楼层
ago 发表于 2013-5-15 14:57
比较规则的模型,用程序写,更灵活一些

生成弯曲多少度的弯头形状,程序好写吗?

该用户从未签到

发表于 2013-5-16 19:45:10 | 显示全部楼层
本帖最后由 VR_user_happy 于 2013-5-16 20:04 编辑

1.生成法变形(整体变形法)
  中心线函数f(x,y,z) =FUN();
   a. 中心线采样点,放到一个Vector中(你的圆柱体中轴)
   b.以采样点为中心,以R为半径生成连续的管道(tube),连续的对中心点生成管道,外加两个底面
   c.在需要变形时,只需要改变中心线的函数,重新生成采样点,更新 ,在回调后会自动重新生成。
2. 非规则中心线
   以上面的为参照,只是生成中性线采样点是的变化
a.
    中轴线为源参考线,变形后的曲线为目标,做点的transform,生成中心线采样点
  b. 再作于上面相同的工作

3.顶点变形(局部变形法)
  取得遍历所有的顶点(按层,绘图的间隔dz),做transform。
   中轴为源参考线,变形后的曲线为目标参考点,
             ----对每一层的点做对应的平移(相当于取出每一节的头或尾巴圆片做平移旋转,计算点的偏移量)

该用户从未签到

发表于 2013-5-16 19:55:32 | 显示全部楼层
本帖最后由 VR_user_happy 于 2013-5-16 19:58 编辑

这是用中心线采样点生成的曲线

如果不是太特殊,第一种方法,中心线采样法,最容易实现,也容易控制
tube_1.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表