基于PhysX物理引擎的布料仿真技术的研究与实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图 1 流程图
料上的质点进行受力 分析 , 大致可 分为内 力和外 力。内力 是 指质点之间的三种相互作用力 , 包括结构力、 剪切力、 弯曲力 ; 外力主要是布料在虚拟环境下受到的作用力的合力 。 布料上质点的运动规 律由牛 顿第二 定律来 决定 , 确定 了 物体的质量、 加速 度以 及作 用于 物体 上的 合力 之间 的 关系。 当在某时刻有多个作用 力作用 于物体 上时 , 物体所 受的合 力 等于所有力的向量和。 对于布料 上的每 个质点 而言 , 在时 刻 它所受到的力为内力与外力之和。因此 , 得到 : X = F in (X, t) + F en (X, t) ( 1) t2 其中 : X 表示质点的位移矢 量 , 是 求解目 标 ; m 表示质 点的 质 m 量 , F en 表示质点所受外力 , F in 表 示质点所受内力 , F en 和 F in 都 是关于和时间的函数 , 随 X 和 t 的变化而变化。 布料所受弹力、 阻尼力、 重力以及空气阻力的具体公式 此 处不再赘述。本文通过调用 PhysX 中模拟的相关函数来实 现 ( 代码 1) 。 StartPhy sics( ) 方 法是 实现运 动模 拟的 函数 , 该 函 数在 O penGL 的回调函 数中 实现。在 StartPhysics( ) 方 法中 ,
0 引言
近年来 , 布料仿真技术 已经越来 越成为 计算机 图形学 领 域研究的热点。布料仿真技术从布料建 模的角度可以分为三 类 : 基于几何的方法、 基于物 理的方 法、 混 合方法。 基于几 何 的方法不考虑布料的 物理特 性 , 而 是从布 料的外 观上进 行模 拟 , 如布料的扭曲、 褶皱等表面 特征。几 何方法也是最早提出 的布料仿真方 法 , 对 于用 户的 参与 性和 交互 性要 求较 高 [ 1] 。 基于物理的方法提供 了较高 的实时 性和简易 的建模 方法 , 该 方法主要考虑布料的质量、 拉伸、 摩擦系 数和弹性系数等物理 特性 , 把整块布料看作是厚度为 0 的空间曲面 , 将布料按 照经 向和纬向划分为若干单元 , 假定每个单元质量相同 , 并认为布 料的所有质量都浓缩到这些单 元上 , 称为质点 , 质点之间有一 根模拟的弹簧相连 , 这样便对布 料建立 起了弹簧 质 点模型。 通过根据 弹簧 质 点模 型 的受 力 情 况解 其 相应 的 运 动学 方 程 , 就得到每个时刻质点的速度和位移变化 , 从而实现对布料 的实时性模拟 [ 2- 4] 。混合方法是对几何方法和物理方法 的综 合应用 [ 5] 。 本文从项目需求出发 , 将布料仿真技术应用于印染行业 , 实现了产品 展示。 该系 统力 求对 印花 图案 进行 三维 仿真 模 拟 , 对布料建模后 , 运用 O penGL 中 的纹 理映 射函 数 , 将图 案 库中的印花图案映射上去 , 模拟布料的动态和静态效果 ; 同时 提供给用户交互手段 , 使用户能够多视角进行观察 ; 还提供给 用户拖拽布料的功能 , 使对 仿真产 品有身 临其境 体验设 计完 成之后的产品的感觉 。
苏新新, 李学庆, 祁
( h otsxx23@ h otm ai. l com )
斌
( 山东大学 计算机科学与技术学院 , 济南 250001 )
摘
要 : 运用布料仿真技术中的物理方法来实 现对布料印制效果的三维展示 。 首 先对布料建 立弹簧 质点 模型 ,
分析弹簧 质点模型的受力状况 , 以牛顿第二定律 作为理论 基础 , 用 PhysX 物理引 擎中的 模拟函 数模拟 布料的运 动 , 并解决了仿真中与刚体的碰撞问题与布料自身的碰撞问题 。 最后通 过生成多个 仿真效果 和加入多种 交互功能 , 构建 了适用于印花图案设计产品的虚拟展厅 。 关键词 : 布料仿真 ; 弹簧 质点模型 ; PhysX 物理引擎 ; 碰撞检测 中图分类号 : T P391 文献标志码 : A
使用 PhysX 物理引擎 , 对布料建模的过程如下 : 1) 创 建 场 景 ( Scene ): 首 先 创 建 一 个 场 景 的 描 述 器 ( NxSceneD esc) 对象 , PhysX SDK 利用这个场景 描述器来 创建 一个场景实例 , 在描述器中 可以调 整各种 参数来 表达不 同效 果。 2) 给场景添加物理 材质 ( M ater ia ls): 物 理材 质指 某一 具 体物体的表面属性和 碰撞属 性 , 这 些属性 可以确 定一个 物体 和另一个物体发生碰撞时 , 是如何在该物体上反弹、 滑动或者 滚动的。 3) 向场景 中 添加 角 色 ( 描 述 布料 的 A c to r) 并 创 建出 布 料 : 布料的属性通过布料描述器 N xC lothD esc指定。描述布料 属性的参数主要有厚 度、 密度、 弯曲柔软度、 拉伸柔软度、 震荡 衰减因子、 摩擦系数等。 4) 建立应用 类 M yC lo th, 对 上述 步骤 中建 立的 布 料模 型 进行渲染 : 由于弹 簧 质点模 型在 运动 中可 能会 出现 网格 上 的四个点不共面的情况 , 从而使计算变复杂 , 因此本文将正方 形网格采用 左上 右下 !与 右上 左下 ! 交替的 剖分形 式剖
2
3 布料仿真效果的生成
3. 1 建立布料的弹簧 质点模型 在基于物理方 法的 布料建 模中 , 布料 被假 象成 厚度 为 0 的空间曲面 , 布料被离散化为规则的四边形网格 , 整个布料的 质量被浓缩到这些 质量相 同的网 格上 , 称之为 质点。质点 和 质点之间一般有三类弹簧相连 , 即结构弹簧、 剪切弹簧和弯曲 弹簧 , 对应于不同的弹性系数和阻尼系数 , 用以模拟布料内部 的纤维之间的作用力 。图 2 为弹 簧 质点模型 的示意 图以 及三种弹簧 : 结构弹簧、 剪切弹 簧、 弯曲弹簧。
2
PhysX 物理引擎简介
所谓物理引擎 , 简单地说就是计算三维场景中 , 物体与 场
景之间 , 物体与角 色之间、 物体与物体之间的运动交互和力 学 特性。它将物理运动定 律引入到 虚拟场 景中 , 使得交 互性 和 互动性大大增强。 本文所研究的布料仿真 , 是基于物理方法的布料仿真 , 从 建模到模拟动态过程 , 从本质讲 , 都是一种物理现象。尤其 在 布料的运动模拟中 , 设计思想是假设布料是有质量的物体 , 受 环境中的作用力而呈现 出运动 的姿态 , 遵循 了物理 学中的 牛 顿第二定律。因此 , 在布料仿真中引入物理引擎 , 是符合算 法 的设计思想的。文本选用了 NV I DI A 公 司的 PhysX 物理引 擎 作为模拟算法的开发包 [ 6] 。 PhysX 开发中 , 首先定义各种不同的 角色 ( actor), 然后 指
[ 3]
图 2 弹簧 质点模型
首先获得从上一帧模拟 到目前 的时间 步长 , 然后开 启场中 的 模拟接口 ( gScene - > s i m u late ( de ltaT i m e) ) 进行运动 的模拟。 运动模拟的效果将在下面章节中的实例中体现。 代码 1 PhysX 中的运 动模拟
vo id S tartPhys ics( ) { N xR eal deltaT i m e = U pdateT i m e( ); gScene - > si m u late( deltaT i m e); gScene - > flushS tream ( ); }
收稿日期 : 2009- 07- 23 。
本文使用物理方法对 布料进 行建模 , 从而 实现布 料的 三 维仿真展示。
1 解决思路
本文首先对布 料建 立弹 簧 质点 模型 , 然后 设置 时间 步 长 , 并分析在每个 步长内所有质点的受力情况 , 根据牛顿第 二 定律运用 PhysX 中的相关 模拟函 数 , 在 每个步 长内更 新质 点 的位置和速度 , 模拟布料在 受力情 况下的 运动状 态。当布 料 与场景中的刚体发生 碰撞时 , 进行 碰撞检 测并做 出响应。 同 时使用 O penGL 中的纹理 映射 函数 , 把 已有 的图 案映 射到 弹 簧 质点模型上 , 从而实现仿真。图 1 为系统的流程图。
R esearch and i m plem entation of cloth si m ulation algorithm based on PhysX physics engine
SU X in x in , L I Xue q ing, Q I B in
( School of C ompu ter S cience and T echnology, Shand ong U niversity, Jinan S hand ong 250001 , China )
3446
计算机应用
第 29 卷
定每个角色的形状 ( shape) 属性和刚体 ( body ) 属性 , 最后 是把 这些角色都加入到场 景 ( scene) 空间中去 , 这 样就构造出 一个 完整的物理世界。
分成三角形网格 , 这样可以保 证每个 面上的 点总是 共面并 且 布料的形态比 较自 然。按照 上述 步骤 , 建 立 弹簧 质 点模 型 如图 3所示。
第 29 卷第 12 期 2009 年 12 月
文章编号 : 1001- 9081( 2009) 12- 3445- 04
计算机应用 Journa l o f Com puter App lications
V o. l 29 No . 12 Dec . 2009
基于 PhysX 物理引擎的布料仿真技术的研究与实现
基金项目 : 国家科Biblioteka Baidu支撑计划项目 ( 2006BA F01A 44 )。
作者简介 : 苏新新 ( 1982- ) , 女 , 山东济南人, 硕士研究生 , 主要研究方向 : 人机交互与虚拟现实 ; 李 学庆 ( 1964 - ), 男 , 山东德州人 , 教授 , 博士 , 主要研究方向 : 人机交互与虚拟现实 ; 祁斌 ( 1984 - ), 男 , 河北阜城人 , 硕士研究生 , 主要研究方向 : 人机交互与虚拟现实。
图 3 弹簧 质点模型的建立
图 3( a) 为一 幅窗帘的 弹簧 质点模型 , 此处 我们定义 了 55 ∀ 48= 2 640 个质点 , 54 ∀ 47= 2 538 个网格 , 并将 这些网 格 剖分成 54 ∀ 47 ∀ 2= 5076 个三角形。图 3( b) 为弹簧 质点模 型的细节放大图 , 可以看到对四边形网格的剖分方式。 3 . 2 布料的运动模拟 布料在我们模拟的物理环境中会受到各种作用力。对 布
Abstract : T his a rtic le descr ibed a phy sica lly based cloth si m u lation a lgo rithm to sho w the cloth pattern s 3D effect . F irst the m ass spring m ode lw as c reated and the fo rce on the model w as ana ly zed . T hen based on the N ew ton s Second Law, the c loth s m ov e m ent w as si m u la ted by PhysX SDK. F urther m ore , when the cloth co llided w ith the rig id bod ies in the env ironm ent and the cloth co llided w ith itsel, f the co llision techno logy in P hysX w as used . F inally , severa l si m u la tions w ere i m p lemented and so m e in terac tive functions w ere added to set up the v irtua l ha ll applicable to pattern des ign . K ey words : cloth si m ulation; m ass spring mode; l PhysX physics eng ine ; co llision de tection
料上的质点进行受力 分析 , 大致可 分为内 力和外 力。内力 是 指质点之间的三种相互作用力 , 包括结构力、 剪切力、 弯曲力 ; 外力主要是布料在虚拟环境下受到的作用力的合力 。 布料上质点的运动规 律由牛 顿第二 定律来 决定 , 确定 了 物体的质量、 加速 度以 及作 用于 物体 上的 合力 之间 的 关系。 当在某时刻有多个作用 力作用 于物体 上时 , 物体所 受的合 力 等于所有力的向量和。 对于布料 上的每 个质点 而言 , 在时 刻 它所受到的力为内力与外力之和。因此 , 得到 : X = F in (X, t) + F en (X, t) ( 1) t2 其中 : X 表示质点的位移矢 量 , 是 求解目 标 ; m 表示质 点的 质 m 量 , F en 表示质点所受外力 , F in 表 示质点所受内力 , F en 和 F in 都 是关于和时间的函数 , 随 X 和 t 的变化而变化。 布料所受弹力、 阻尼力、 重力以及空气阻力的具体公式 此 处不再赘述。本文通过调用 PhysX 中模拟的相关函数来实 现 ( 代码 1) 。 StartPhy sics( ) 方 法是 实现运 动模 拟的 函数 , 该 函 数在 O penGL 的回调函 数中 实现。在 StartPhysics( ) 方 法中 ,
0 引言
近年来 , 布料仿真技术 已经越来 越成为 计算机 图形学 领 域研究的热点。布料仿真技术从布料建 模的角度可以分为三 类 : 基于几何的方法、 基于物 理的方 法、 混 合方法。 基于几 何 的方法不考虑布料的 物理特 性 , 而 是从布 料的外 观上进 行模 拟 , 如布料的扭曲、 褶皱等表面 特征。几 何方法也是最早提出 的布料仿真方 法 , 对 于用 户的 参与 性和 交互 性要 求较 高 [ 1] 。 基于物理的方法提供 了较高 的实时 性和简易 的建模 方法 , 该 方法主要考虑布料的质量、 拉伸、 摩擦系 数和弹性系数等物理 特性 , 把整块布料看作是厚度为 0 的空间曲面 , 将布料按 照经 向和纬向划分为若干单元 , 假定每个单元质量相同 , 并认为布 料的所有质量都浓缩到这些单 元上 , 称为质点 , 质点之间有一 根模拟的弹簧相连 , 这样便对布 料建立 起了弹簧 质 点模型。 通过根据 弹簧 质 点模 型 的受 力 情 况解 其 相应 的 运 动学 方 程 , 就得到每个时刻质点的速度和位移变化 , 从而实现对布料 的实时性模拟 [ 2- 4] 。混合方法是对几何方法和物理方法 的综 合应用 [ 5] 。 本文从项目需求出发 , 将布料仿真技术应用于印染行业 , 实现了产品 展示。 该系 统力 求对 印花 图案 进行 三维 仿真 模 拟 , 对布料建模后 , 运用 O penGL 中 的纹 理映 射函 数 , 将图 案 库中的印花图案映射上去 , 模拟布料的动态和静态效果 ; 同时 提供给用户交互手段 , 使用户能够多视角进行观察 ; 还提供给 用户拖拽布料的功能 , 使对 仿真产 品有身 临其境 体验设 计完 成之后的产品的感觉 。
苏新新, 李学庆, 祁
( h otsxx23@ h otm ai. l com )
斌
( 山东大学 计算机科学与技术学院 , 济南 250001 )
摘
要 : 运用布料仿真技术中的物理方法来实 现对布料印制效果的三维展示 。 首 先对布料建 立弹簧 质点 模型 ,
分析弹簧 质点模型的受力状况 , 以牛顿第二定律 作为理论 基础 , 用 PhysX 物理引 擎中的 模拟函 数模拟 布料的运 动 , 并解决了仿真中与刚体的碰撞问题与布料自身的碰撞问题 。 最后通 过生成多个 仿真效果 和加入多种 交互功能 , 构建 了适用于印花图案设计产品的虚拟展厅 。 关键词 : 布料仿真 ; 弹簧 质点模型 ; PhysX 物理引擎 ; 碰撞检测 中图分类号 : T P391 文献标志码 : A
使用 PhysX 物理引擎 , 对布料建模的过程如下 : 1) 创 建 场 景 ( Scene ): 首 先 创 建 一 个 场 景 的 描 述 器 ( NxSceneD esc) 对象 , PhysX SDK 利用这个场景 描述器来 创建 一个场景实例 , 在描述器中 可以调 整各种 参数来 表达不 同效 果。 2) 给场景添加物理 材质 ( M ater ia ls): 物 理材 质指 某一 具 体物体的表面属性和 碰撞属 性 , 这 些属性 可以确 定一个 物体 和另一个物体发生碰撞时 , 是如何在该物体上反弹、 滑动或者 滚动的。 3) 向场景 中 添加 角 色 ( 描 述 布料 的 A c to r) 并 创 建出 布 料 : 布料的属性通过布料描述器 N xC lothD esc指定。描述布料 属性的参数主要有厚 度、 密度、 弯曲柔软度、 拉伸柔软度、 震荡 衰减因子、 摩擦系数等。 4) 建立应用 类 M yC lo th, 对 上述 步骤 中建 立的 布 料模 型 进行渲染 : 由于弹 簧 质点模 型在 运动 中可 能会 出现 网格 上 的四个点不共面的情况 , 从而使计算变复杂 , 因此本文将正方 形网格采用 左上 右下 !与 右上 左下 ! 交替的 剖分形 式剖
2
3 布料仿真效果的生成
3. 1 建立布料的弹簧 质点模型 在基于物理方 法的 布料建 模中 , 布料 被假 象成 厚度 为 0 的空间曲面 , 布料被离散化为规则的四边形网格 , 整个布料的 质量被浓缩到这些 质量相 同的网 格上 , 称之为 质点。质点 和 质点之间一般有三类弹簧相连 , 即结构弹簧、 剪切弹簧和弯曲 弹簧 , 对应于不同的弹性系数和阻尼系数 , 用以模拟布料内部 的纤维之间的作用力 。图 2 为弹 簧 质点模型 的示意 图以 及三种弹簧 : 结构弹簧、 剪切弹 簧、 弯曲弹簧。
2
PhysX 物理引擎简介
所谓物理引擎 , 简单地说就是计算三维场景中 , 物体与 场
景之间 , 物体与角 色之间、 物体与物体之间的运动交互和力 学 特性。它将物理运动定 律引入到 虚拟场 景中 , 使得交 互性 和 互动性大大增强。 本文所研究的布料仿真 , 是基于物理方法的布料仿真 , 从 建模到模拟动态过程 , 从本质讲 , 都是一种物理现象。尤其 在 布料的运动模拟中 , 设计思想是假设布料是有质量的物体 , 受 环境中的作用力而呈现 出运动 的姿态 , 遵循 了物理 学中的 牛 顿第二定律。因此 , 在布料仿真中引入物理引擎 , 是符合算 法 的设计思想的。文本选用了 NV I DI A 公 司的 PhysX 物理引 擎 作为模拟算法的开发包 [ 6] 。 PhysX 开发中 , 首先定义各种不同的 角色 ( actor), 然后 指
[ 3]
图 2 弹簧 质点模型
首先获得从上一帧模拟 到目前 的时间 步长 , 然后开 启场中 的 模拟接口 ( gScene - > s i m u late ( de ltaT i m e) ) 进行运动 的模拟。 运动模拟的效果将在下面章节中的实例中体现。 代码 1 PhysX 中的运 动模拟
vo id S tartPhys ics( ) { N xR eal deltaT i m e = U pdateT i m e( ); gScene - > si m u late( deltaT i m e); gScene - > flushS tream ( ); }
收稿日期 : 2009- 07- 23 。
本文使用物理方法对 布料进 行建模 , 从而 实现布 料的 三 维仿真展示。
1 解决思路
本文首先对布 料建 立弹 簧 质点 模型 , 然后 设置 时间 步 长 , 并分析在每个 步长内所有质点的受力情况 , 根据牛顿第 二 定律运用 PhysX 中的相关 模拟函 数 , 在 每个步 长内更 新质 点 的位置和速度 , 模拟布料在 受力情 况下的 运动状 态。当布 料 与场景中的刚体发生 碰撞时 , 进行 碰撞检 测并做 出响应。 同 时使用 O penGL 中的纹理 映射 函数 , 把 已有 的图 案映 射到 弹 簧 质点模型上 , 从而实现仿真。图 1 为系统的流程图。
R esearch and i m plem entation of cloth si m ulation algorithm based on PhysX physics engine
SU X in x in , L I Xue q ing, Q I B in
( School of C ompu ter S cience and T echnology, Shand ong U niversity, Jinan S hand ong 250001 , China )
3446
计算机应用
第 29 卷
定每个角色的形状 ( shape) 属性和刚体 ( body ) 属性 , 最后 是把 这些角色都加入到场 景 ( scene) 空间中去 , 这 样就构造出 一个 完整的物理世界。
分成三角形网格 , 这样可以保 证每个 面上的 点总是 共面并 且 布料的形态比 较自 然。按照 上述 步骤 , 建 立 弹簧 质 点模 型 如图 3所示。
第 29 卷第 12 期 2009 年 12 月
文章编号 : 1001- 9081( 2009) 12- 3445- 04
计算机应用 Journa l o f Com puter App lications
V o. l 29 No . 12 Dec . 2009
基于 PhysX 物理引擎的布料仿真技术的研究与实现
基金项目 : 国家科Biblioteka Baidu支撑计划项目 ( 2006BA F01A 44 )。
作者简介 : 苏新新 ( 1982- ) , 女 , 山东济南人, 硕士研究生 , 主要研究方向 : 人机交互与虚拟现实 ; 李 学庆 ( 1964 - ), 男 , 山东德州人 , 教授 , 博士 , 主要研究方向 : 人机交互与虚拟现实 ; 祁斌 ( 1984 - ), 男 , 河北阜城人 , 硕士研究生 , 主要研究方向 : 人机交互与虚拟现实。
图 3 弹簧 质点模型的建立
图 3( a) 为一 幅窗帘的 弹簧 质点模型 , 此处 我们定义 了 55 ∀ 48= 2 640 个质点 , 54 ∀ 47= 2 538 个网格 , 并将 这些网 格 剖分成 54 ∀ 47 ∀ 2= 5076 个三角形。图 3( b) 为弹簧 质点模 型的细节放大图 , 可以看到对四边形网格的剖分方式。 3 . 2 布料的运动模拟 布料在我们模拟的物理环境中会受到各种作用力。对 布
Abstract : T his a rtic le descr ibed a phy sica lly based cloth si m u lation a lgo rithm to sho w the cloth pattern s 3D effect . F irst the m ass spring m ode lw as c reated and the fo rce on the model w as ana ly zed . T hen based on the N ew ton s Second Law, the c loth s m ov e m ent w as si m u la ted by PhysX SDK. F urther m ore , when the cloth co llided w ith the rig id bod ies in the env ironm ent and the cloth co llided w ith itsel, f the co llision techno logy in P hysX w as used . F inally , severa l si m u la tions w ere i m p lemented and so m e in terac tive functions w ere added to set up the v irtua l ha ll applicable to pattern des ign . K ey words : cloth si m ulation; m ass spring mode; l PhysX physics eng ine ; co llision de tection