[原创]再谈实时演算布料的建模方式。

原创 2005年06月02日 12:01:00

以前做布料实验的时候,总是只能按顺序创建好了一块四四方方的布,然后运算,实用性非常低,毕竟很多地方的使用都是直接通过读取模型来建模,比如说一块三角型的旗子,或者说面片组成的头发。那么如何通过顶点数据和顶点索引这两个东西来建立布料所需要的Mass-Spring模型呢?

首先,我们可以假设每个顶点就是一个弹簧的节点,那么每个三角形索引就是弹簧,这里会出现一个问题,即三角形索引会出现很多重复的情况,那么我们就需要对索引的重复情况进行处理。至于处理方法,则是把一组索引0 1 2拆成三条线:0-1, 0-2, 1-2,然后加入到一个队列里,然后之后每次插入新的线的时候,就检查已经插入进去的数据,看是否有重复。

经过上一步的处理,我们得到的线的队列实际上就是我们的弹簧列表,然后根据模型的顶点数据和弹簧列表来生成我们需要的布料模型,用以下结构来描叙一个弹簧节点:

struct CMySpring
{
 D3DXVECTOR3 vMypos; // 弹簧节点的位置
 D3DXVECTOR3 vNormal; // 弹簧节点的法线(用来算风力)
 D3DXVECTOR3 vPower; // 当前该弹簧节点所受的合力(用来计算下一帧该节点的位置)
 D3DXVECTOR3 vAcceleration; // 当前该节点的加速度情况(配合 合力来运算位置)
 D3DXVECTOR3 vVelocity; // 当前节点的速度
 DWORD  dwNodeCount; // 当前节点连接到其他节点的数目
 float len[32]; // 连接到每个其他节点的弹簧的长度
 DWORD nodeIndex[32]; // 连接到每个其他节点的索引
};

之后的弹簧力的运算方式在我的另一篇文章中有详细叙说,以下是一组截图:

第一帧时原图:

第二帧模型被一个来自人物中心向四周吹的点风吹散时的样子:

风继续吹之后的模型:

由于模型的很多顶点并不是连在一起的,所以在算布料的时候会被算成是很多块小布。

再谈网游同步技术:实时动作游戏同步方式和传输协议选择

http://www.gameres.com/478430.html 6 天前 上传 下载附件 (88.33 KB)   GameRes游资网授权...
  • sgnyyy
  • sgnyyy
  • 2015年12月28日 10:05
  • 5248

再谈网游同步技术:实时动作游戏同步方式和传输协议选择

实时动作游戏在近年来得到迅猛的发展。而游戏同步问题,成为大家继续解决的核心问题之一。早在 2004年,国内游戏开发还处于慢节奏 RPG满天飞的情况下,我就开始实时动作游戏研究。分别在 2005-200...

再谈osg场景中的树(3dmax建模)

上次只是说了下osg场景中用怎样的树比较好,说到了一些解决方案也只是一笔带过,所以今天给补上。 如果您和我一样的苦逼,用的是3dmax建的场景,然后场景又比较大,树木又比较多。那就意味着树木和地形,...

『原创』统计建模与R软件-第四章 参数估计

摘要: 本文由digging4发表于:http://www.cnblogs.com/digging4/p/5054594.html 统计建模与R软件-第四章 参数估计 4.1设总体的分布密度为 ...

数学建模资料(原创)

  • 2009年08月07日 20:32
  • 541KB
  • 下载

实时系统建模与分析UML

建模/MDA/MDD的基本概念建模 建模是对现实世界的一个简化 因为不能完整地理解一个复杂的系统,所以要对它建模 建模是为了更好的理解我们正在开发的系统 UML(Unified Modeling La...

从3DS MAX建模到Ogre实时动画的制作过程

3DS MAX是一个强大通用的建模工具,能方便的制作骨骼动画。Ogre是一个开源的图形引擎,在骨骼动画方面支持Vertex blending,它也提供了对多种模型的导入,当然少不了3DS MAX模型。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[原创]再谈实时演算布料的建模方式。
举报原因:
原因补充:

(最多只允许输入30个字)