




已阅读5页,还剩65页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计 论文 烟雾骏马形态的计算机模拟 杨青青 燕山大学里仁学院 2014 年 6 月 毕业设计 论文 烟雾骏马形态的计算机模拟 学 院 里仁学院 专 业 计算机科学与技术 学生 姓名 杨青青 学 号 101304011180 指导 教师 唐勇 答辩 日期 2014 年 6 月 21 日 燕山大学里仁学院毕业设计 论文 任务书 学院 里仁学院 系级教学单位 电子工程系 学 号 101304011180 学生 姓名 杨青青 专 业 班 级 计算机科学与技 术 10 7 题目名称烟雾骏马形态的计算机模拟 题目性质 1 理工类 工程设计 工程技术实验研究型 理论研究型 计算机软件型 综合型 2 文管理类 3 外语类 4 艺术类 题目类型1 毕业设计 2 论文 题 目 题目来源科研课题 生产实际 自选题目 主 要 内 容 实现烟雾的控制操作和保持烟雾的自然流动状态 从控制烟雾目标变形这一方 面对烟雾进行模拟 1 为实现烟雾的控制模拟 建立烟雾物理模型 控制烟雾的运动状态 边界 通过吸引力将烟雾吸引到指定的对象中 通过驱动力使烟雾在对象内部运动 2 计算吸引力和驱动力将烟雾吸引到目标处 使烟雾依据指定目标进行变形 基 本 要 求 1 必须在尊重事实的基础上将理论研究与实际应用密切结合 使本课题的研 究成果既有理论高度又有实际应用价值 2 在深入学习模拟不规则物体的理论知识 总结和借鉴别人的优秀研究成果 的基础上 添加自己想法和设计思路 在保持烟雾自然流动的前提下 通过高 效简洁的操作实现对烟雾模拟的控制 3 使烟雾更好的保持细节 在应用时能使之表现更真实 利用 Visual C 和 OpenGL 来实现一个烟雾控制模拟系统 参 考 资 料 1 孙家广 计算机图形学 清华大学出版社 2000 2 张茂军 虚拟现实系统 科学出版社 2001 3 石教英 虚拟现实基础及实用算法 科学出版社 2002 4 Dave Shreiner 著 李军 译 Open GL 编程指南 机械工业出版社 2010 周 次 第 1 4 周第 5 8 周 第 9 12 周 第 13 16 周 第 17 周 应 完 成 的 内 容 可行性研究 查阅相关资料 了解烟雾变形 的发展与研究 现状 掌握 C 与 OpenGL 总体设计 熟悉 算法 建立烟雾 物理模型 确立 每个模块的功能 以及联系 详细设计 确立每个模 块的具体实 现细节 编码 测试 进行整个项 目的代码编 写与测试 论文的总结与验 收 最终完成一 篇完整且优秀的 论文 进行最后 的答辩准备工作 指导教师 唐勇 职称 教授 2014 年 3 月 12 日 系级教学单位审批 年 月 日 摘要 I 摘要 在人们的生活和生产活动中随时随地都可遇到流体 所以对流体的研 究是与人类日常生活和生产事业密切相关的 设计者常常希望通过简单高 效的操作即可快速获得理想的流体模拟效果 因而 烟雾的控制模拟在游 戏 影视特效等方面都具有广泛的应用 本文采用基于外力的物理方法 从目标驱动烟雾变形这一方面对运动规律复杂的烟雾进行研究 首先 为实现烟雾的控制模拟 采用非粘性不可压缩 Navier Stokes 方 程组建立烟雾物理模型 针对目标驱动烟雾运动的设计需求 通过对三维 模型进行体素化的预处理 标识出目标的内部网格和边界网格 计算出目 标外网格对应的吸引力系数 并通过在外力项中引入吸引力和驱动力控制 烟雾的运动状态 保持烟雾的细节 其次 进行场景渲染 利用 RGBA 模式对烟雾进行颜色绘制 最后 利用 VC 语言和开放性图形接口 OpenGL 在 Windows 平台下 进行烟雾的形变控制模拟 对改进后的方法进行实验验证 实验证明 利 用本文的方法可根据设计者的意愿对保持自然流动状态的烟雾进行有效控 制 关键词关键词 烟雾控制模拟 烟雾变形 Navier Stokes 方程组 场景渲染 燕山大学里仁学院毕业设计 论文 II Abstract Anytime and anywhere in people s life and production activities can meet fluid so the study of fluid is closely related to human daily life and production business Designers often hope that through a simple and efficient operation can quickly obtain ideal fluid simulation results Therefore the controllable smoke simulation has a wide range of applications in the game the film television special effects and so on The paper based on the external force physical method and focus on controlling the target driven smoke deformation Firstly in order to achieve the control of smoke simulation the non viscous incompressible Nervier Stokes equations is adopted to establish the physical model of smoke In order to satisfy the designing needs of target driven smoke simulation Through the pretreatment such as the novelizations of 3d model to mark out the internal grids and boundary grids of targets Then to calculate the target grid corresponding to the appeal of the coefficient and through introducing appeal and driving force on control of smoke motion to keep the details of the smoke Secondly carry on the scene to render Use the RGBA pattern paint the color of smoke Finally use VC language and open interface OpenGL graphics on a Windows platform for deformation control of smoke simulation then verify the improved method Experimental results show using the method of this paper according to the will of the designer can keep the natural flow of smoke under effective control Keywords controllable smoke simulation smoke deformation Navier Stokes equations scene rendering III 目 录 摘要 I Abstract II 第 1 章绪论 1 1 1课题的背景 目的和意义 1 1 1 1课题背景 1 1 1 2课题目的和意义 1 1 2国内外研究现状 2 1 3本文研究内容 4 第 2 章相关技术介绍 5 2 1烟雾形变模拟原理 5 2 1 1拉格朗日法 5 2 1 2欧拉法 6 2 1 3半拉格朗日法 6 2 2开放图形库 7 2 3VS2010 实验平台 7 2 4本章小结 7 第 3 章烟雾运动方法分析 9 3 1影响烟雾运动因素的分析 9 3 2物理模型的构建 9 3 3N S 方程的求解 11 3 3 1计算区域的网格划分 12 3 3 2计算外力项 12 3 3 3求解对流项 15 3 3 4计算在压力梯度影响后的速度场 15 3 3 5计算密度 16 3 4本章小结 16 第 4 章烟雾骏马模拟的具体设计 17 IV 4 1力的描述 17 4 2模型体素化 17 4 3悬浮控制菜单 18 4 4本章小结 18 第 5 章烟雾骏马模拟的具体实现 19 5 1实验平台的搭建 19 5 2模块功能的具体实现 19 5 2 1力的描述 20 5 2 2模型体素化 21 5 2 3悬浮控制菜单 22 5 3本章小结 23 结论 24 参考文献 25 致谢 27 附录 1 开题报告 28 附录 2 文献综述 33 附录 3 中期报告 38 附录 4 外文原文 42 附录 5 外文翻译 50 第 1 章 绪论 1 第 1 章 绪论 1 1 课题的背景 目的和意义 1 1 1 课题背景 在我们的生活中流体几乎随处可见 烟雾 云等的自然现象总能赋予 人们丰富的遐想空间 当人们看到烟雾形成具有一定特征的烟团 或是天 空中的云形成动物的形状时总是惊讶而又兴奋的 正是此类具有某种特征 状态的流体在日常生活中的稀有更增添了人们对流体控制的兴趣和向往 对如烟雾 云 火焰等不规则物体的真实感模拟一直是计算机图形学 中最具有挑战性的研究方向之一 虽然真实性是流体模拟中非常重要的一 方面 但在流体模拟已取得巨大成就的今天 如何根据设计者的意愿高效 地控制流体动画的模拟亦是当前研究的热点之一 由于在很多情况下 流 体自然无规则的运动状态并不是人们所期望得到的理想状态 故设计者常 常更希望可以调整流体的大致运动 或控制其流动速率等 1 1 2 课题目的和意义 在烟雾受控模拟的研究中 人们希望能够快速方便地对烟雾形态和运 动形式进行控制 作为计算机图形学中颇具挑战性的研究方向之一 烟雾变形的研究不 仅可以在计算机动画上展示一个唯美的画面 更重要的是此类变形有着广 泛的应用 可以被应用到影视 游戏 军事等广泛的领域中 之所以研究 烟雾变形模拟的原因在于 1 烟雾变形应用的普遍性 烟雾形变的控制及其实时绘制问题在自 然界和工程应用中到处可见 比如 自然界中从工厂烟囱中冒出的滚滚浓 烟 影视中的烟雾动画等都需要对烟雾进行控制模拟 2 逼真的运动物理特性 烟雾本身很不规则 变化也很多 所以对 其运动变形的模拟需要实时并且逼真的完成 这样的话 就必须得到较多 的参数信息用来控制烟雾的变形细节 其变形就需要对多个点的信息进行 燕山大学里仁学院毕业设计 论文 2 控制 计算量较大 容易失真 3 碰撞的实时形变控制模拟 烟雾因自身的重量以及风的作用 其 运动具有随意性 形变中的烟雾遇到流体或刚体的碰撞也是研究的难点之 一 在流体的变形模拟方面 烟雾的变形模拟是计算机图形学中一项重要 的并且具有挑战性的研究课题 1 2 国内外研究现状 1983 年 Reeves 首次系统的提出了一种不规则物体建模的方法 1 1999 年 Stam 引入了无条件稳定的方法来近似求解流体物理方程 2 求解方法结合了半拉格朗日方法和隐式求解方法 取得了对流项无条件的 稳定解 获得了稳定实时的模拟结果 另外使用投射方法来保证质量守恒 但半拉格朗日法会带来大量数值耗散 从而导致一些典型的小尺度漩涡消 失太快 Stam 的这篇论文为用 N S 方程进行流体模拟奠定了基本框架 引发了学术界研究基于物理方程模拟流体的热潮 2001 年 Foster 和 Fedkiw 使用在指定网格点上人为的强迫速度方向趋 向空间曲线方向的方法来控制流体流动 2002 年 Lamorlette 通过参数曲线控制火焰的模拟 这些空间曲线和 曲面根据手工定义的风而发生变化 继而控制流体的运动和结构 其中曲 线的切线方向或表面的法线方向显示了烟雾运动的方向 3 但如上方法均 不能允许用户直接指定高层次的目标 例如匹配一定目标对象的密度或形 状 2003 年 Truille 提出了一个基于梯度的迭代优化方法用于控制特定关 键帧的烟雾模拟 4 通过一个目标函数来衡量密度关键帧 速度关键帧与 当前烟雾密度和速度场之间的差异 并进行匹配 这个方法最大的优点是 能够在模拟自身速度场的框架中动态模拟速度场的导数 然而因速度场对 应的每个控制参数的导数都需在整个模拟过程中计算 且在整个模拟过程 中都要最小化风力和目标函数 使该方法非常耗时且复杂 2004 年 Pighin 等人使用基于径向基函数的控制粒子来引导它周围的 第 1 章 绪论 3 粒子沿着用户定义的方向运动 5 流体能够用此方法建模和编辑 但这个 方法依赖并受限于适合的有限粒子数和固定的半径 2004 年 McNamara 为了加速计算 在关键帧技术的基础上采用了伴 随矩阵的方法 大大提高了非线性优化过程中每步迭代的导数求解效率 但增大了存贮量的要求 6 Fattal 等人提出了一种更有效的方法来匹配用户 指定的密度关键帧 即在普通 N S 方程组上加入一个驱动力 动量衰减项 和一个聚合力 以较快的计算速度完成了烟雾的形状控制模拟 但驱动力 要求全局网格的非均匀密度分布的梯度估计 同时动量衰减项减慢了流体 流动 增加了计算时间 Jeong mo Hong 和 Chang hun Kim 则使用一个基 于几何形状的势能场体保持流体目标形状 势能作为模拟中额外的一项来 驱使流体向目标形状变形 2005 年 LinShi 提出了使用速度限制的方法 8 使用水平集的方法隐 式表示烟雾变形过程中的一系列中间形状和指定形状 通过在烟雾边界上 的速度限制使烟雾逐渐匹配目标形状 最后即可得到烟雾形成目标形状的 连续动画 该方法的优点是既可以对烟雾的变形实现控制又展示了真实的 烟雾形态 但该方法对烟雾运动采用可压缩的 N S 方程表示 要多求一个 扩散方程 增加了计算时间 同时基于目标轮廓的技术使烟雾在变形时只 能到达目标模型的表面 可能导致精细部分的烟雾不够明显 2006 年 Kim 等人提出了一种基于物理方法的控制烟雾模拟方法 该 方法可使烟雾沿着用户设定的三维空间曲线运动 但由于路径控制是通过 在线性回馈循环中不断地将当前烟雾速度场和目标速度场相匹配得到的 故在模拟过程一直在当前烟雾速度场和目标速度场之间进行匹配 9 同年 Angelidis 等人提出了一种基于漩涡的方法以实现三维烟雾沿路径运动的模 拟 方法中通过调和分析和主要成分分析的方法有效的描述了流体的流动 同年 浙江大学博士周永霞等通过量纲分析简化了 N S 方程 在求解对流 项时采用半拉格朗日方法 为弥补半拉格朗日方法带来的数值耗散 引入 了高阶精度的格式 在较粗的网格上亦可得到较高精度的导数值 2007 年 Arisara 和 Pizzanu 等人提出了一种基于耦合的 Reeb 图和径 向基函数的可控流体模拟技术 并使用 SPH 近似描述流体的动态 用于骨 燕山大学里仁学院毕业设计 论文 4 架粒子实现控制 10 然而 为使流体粒子和骨架粒子之间的速度均衡会造 成一定的虚假效果 这个方法的另一个问题是它不能自动地选择骨架粒子 的数量和其运动的终点 2009 年 Yang Qing 提出基于 N S 方程的三维烟雾实时模拟 通过基 于 GPU 数值化求解 N S 方程实现实时烟雾模拟 11 2010 年 唐勇提出用 MacCormack 方法求解 N S 方程对流项 简化了 进退误差补偿修正方法求解对流项的求解步骤 减少了计算时间 生成的 烟雾效果也具有相当高的真实感 12 1 3 本文研究内容 实现烟雾的控制操作和保持烟雾的自然流动状态 从控制烟雾目标变 形这一方面对烟雾进行模拟 1 为实现烟雾的控制模拟 建立烟雾物理模型 控制烟雾的运动状 态 边界通过吸引力将烟雾吸引到指定的对象中 通过驱动力使烟雾在对 象内部运动 2 计算出吸引力和驱动力 将烟雾吸引到目标处 使烟雾依据指定 目标进行变形 3 进行场景渲染 引入光照使整个场景更具立体感与真实感 利用 RGBA 模式对烟雾进行颜色绘制 为更好的展现烟雾变形的控制 加入悬 浮菜单对烟雾进行直接控制 4 设计一个烟雾控制模拟系统 采用 VC OpenGL 图形编程库建 立控制模拟系统 并对目标对象驱动烟雾形变的模拟进行验证 第 2 章 相关技术介绍 5 第 2 章 相关技术介绍 2 1 烟雾形变模拟原理 要进行烟雾的形变控制的模拟 就必须建立控制烟雾形变的方程来控 制烟雾整体的运动的状态 将每一个时刻烟雾的运动形态进行数学描述 以此确定烟雾粒子的速度 质量 温度 颜色等等属性 然后依据这些属 性对每一时刻的烟雾进行绘制 在流体力学中 描述烟雾粒子运动的方法 有三种 一种是基于粒子的拉格朗日法 一种是基于欧拉网格法 第三种 是前两者的结合即半拉格朗日法 下面就依次介绍这三种方法 2 1 1 拉格朗日法 拉格朗日法又叫做随体法 是以研究单个质点运动过程为基础 综合 所有质点的运动 建立起整个流体的运动 1 其基本特点是追踪流体质点 的运动 拉格朗日法假设流场中充满了大量的微小的粒子 粒子作为对流 体的采样点携带了速度 密度 温度等物理量 粒子随着流场运动 记录 每一个时间段这些粒子的各个物理参数的变化 从而得到整个流场随时间 变化的情况 假如某一时刻每个质点的坐标是 a b c 则任意时刻质 点在空间中的位置就是 a b c 和 t 的函数 使用拉格朗日法首先要根据烟雾形态定义粒子的初始属性 再分析物 体的运动规律 建立粒子属性变化的动态特性 赋予每一个新粒子各自不 同的属性 并将其加入模拟系统中 然后根据处在生命周期中粒子的动态 属性对粒子进行位置的移动和属性的变换 若粒子超出生命周期则删除 最后对有生命的粒子进行绘制 就模拟出了不规则动态变化的烟雾 拉格朗日法的优点是描述流体的运动非常简单明了 随流场运动正向 追踪粒子 保证了计算在任意时间步长上的稳定性和计算的精确性 但这 种方法也有缺陷 在粒子系统产生的近三十年的时间里 其本身并没有发 生太大的变化 运算量和存储量都比较大 当处于生存期的粒子数超过一 定的数量时 系统的性能会受到很大的影响 大量粒子的增加 必然导致 运算量和存储量的增加 所以实时性方面受到限制 而为了获得真实感 燕山大学里仁学院毕业设计 论文 6 高细节的烟雾效果 只能通过增加模拟烟雾的粒子数量获得 2 1 2 欧拉法 欧拉法又叫做流场法 是以流场作为描述对象研究流动的方法 它不 直接看质点的运动过程 而是以流场为对象 研究各时刻质点在流场中的 变化规律 5 其采用固定的坐标系 将整个流场空间用网格进行离散化 并在网格上选定固定采样点 记录和分析每一采样点上的流体的速度 密 度和温度等物理量随时间的变化 然后观察在流动空间中的每一个采样点 上运动要素随时间的变化 当流体流经这些采样点时 采样点上的物理量 状态会更新 但是采样点不会随着流场运动 最后把足够多的空间点综合 起来而得出的整个流体的运动情况 欧拉法的优点是描述流场具有很好的规则性 它在每一个时间步长上 对固定的采样点进行流体物理量状态的更新 计算相对简单 但这种方法 不能保证在任意时间步长上计算的稳定性 并且当时间步长过大会导致烟 雾模拟的失真 过小时导致计算量的加大 影响烟雾模拟的实时性 2 1 3 半拉格朗日法 拉格朗日法和欧拉法描述流体运动各有优缺点 所以 Stam 提出一种 半拉格朗日法 这种方法结合了拉格朗日法的稳定性和欧拉法的规则性优 点 保证了求解过程任意时间步长的稳定性和计算的简单有效 2 半拉格 朗日法的核心思想是将每个网格单元看作是一个粒子 使用速度场回流的 方法追溯速度场被更新前的粒子 并对其周围的采样点进行插值计算 在 保证求解过程计算简单的前提下又保持了任意时间步长上的稳定性 三维的目标对象是有规则边界的 并且需要使大量的烟雾快速充满模 型目标 故使用具有规则网格单元的半拉格朗日法来描述烟雾的运动更有 益于高效快速地实现基于目标的烟雾控制模拟 综合以上分析 为同时实现基于路径和基于目标的烟雾控制模拟 本 文选用欧拉网格的方法来描述烟雾的运动 第 2 章 相关技术介绍 7 2 2 开放图形库 近年来 三维图形技术得到了快速发展 OpenGL 是其中性能最优异 的一款 在多家研究计算机方面的公司的推荐下 如世界计算机技术顶尖 的 SGI 公司 OpenGL 制定了在三维图形数据库下的一种标准 该标准具 有通用性 共享性和开放性 OpenGL 特点及功能 14 OpenGL 独立于操作系统及窗口系统 作为开 放的图形软件包 在此基础上 OpenGL 应用程序可以在不同的软硬件平 台上方便的进行移植操作 为有效的保证算法的可靠性和准确性 它与 Visual C 的紧密结合 并极大程度上提高了在图形和计算方面算法的效 率 同时使用 OpenGL 既简单又便捷 从而提高了效率 2 3 VS2010 实验平台 VS2010 的全称是 Visual Studio 2010 微软发言人在 Visual Studio 2010 的揭幕仪式中说 毫无疑问 软件将驱动整个世界 看看你的周围所 有的事物 我们所使用的设备以及与之交流的系统就知道了 所有的东西 都由软件驱动 开发者仅仅是使得这一切发生的人而已 软件驱动这个世 界 意味着开发者就是驱动这个世界的引擎 Visual Studio 2010 新功能主 要包括 动态编程 应用程序生命周期 ALM C 4 0 动态类型 并支持多 显示器 TDD Office 开发 Quick Search 特性 C 0 x 新特性 NET 平 台的语言 F 等 OpenGL 同时对下述功能进行了增强和改进 进一步完善了 Visual Studio IDE WPF 和 Silverlight 应用程序的开发 进一步弥补了 C 和 Visual Basic 语言的不足 并依据开发人员的需求选择一种合适的语言 简 化了基于 MVC 的 Web 开发 从而提高了代码编写速度 其中最为主要的 改进是极大的丰富和完善了 Visual C 的功能 本文主要用到的语言就是 C 在 VS2010 的平台上使用方便 2 4 本章小结 本章主要介绍了关于烟雾形变控制模拟理论的论述和 OpenGL 开放图 形库和 VS2010 实验平台 首先主要介绍的三个理论是拉格朗日法 欧拉 燕山大学里仁学院毕业设计 论文 8 法和半拉格朗日法 它们分别有优缺点 最后根据需要选择了其中一个合 适的方法即半拉格朗日法进行研究 然后介绍了 OpenGL 开放图形库 它 可以与 Visual C 紧密接口 便于实现机械手的有关计算和图形算法 可 保证算法的正确性和可靠性并且使用简便 效率高 最后介绍了 VS2010 的实验平台 并用 C 语言在此平台上进行操作 第 3 章 烟雾运动方法分析 9 第 3 章 烟雾运动方法分析 3 1 影响烟雾运动因素的分析 能够影响烟雾运动的因素有多种 如外力的作用 压力项的改变 粘 性系数大小的调整以及对烟雾速度的直接限制 下面将对能够改变烟雾运 动的不同影响因素进行分析 1 力的作用 烟雾在受到外力的作用时 会引起流体速度场的变化 速度场驱动密度场继而改变它原有的运动形态 例如缓缓飘升的烟雾被吹 过的风改变其原有的运动方向 以及烟雾的运动形态 外力的作用能够明 显的改变烟雾的运动形态 2 压力的作用 压力即在流体内各微团上单位质量流体的压强合力 在流体运动时 各粒子被相邻的粒子挤压和碰撞 流体的属性因此而变化 另外 流体中各粒子间的距离非常近 当流体受到作用力时 离外力比较 近的粒子传递一个作用力到较远的粒子上 如此逐步的传导过程产生压强 这样的压强梯度逐渐作用到整个流体 进而影响流体运动状态 3 粘性项系数 粘性特征较明显的流体 如蜂蜜 使流体在运动受 到一定的运动阻力 这种阻力导致了动力的扩散 同时也以抵抗着流体的 流动 使流体运动速度及形态有所变化 但对于烟雾等气体的粘性很小 所以此项是可以忽略不计的 4 烟雾速度的直接限制 对烟雾的运动速度直接限制可以很快的改 变烟雾的运动状态 即这样的方法能够快速有效的约束烟雾的运动速度 从而实现烟雾的形变控制模拟 但烟雾的真实性会随之发生变化 可见欲 通过基于外力的方法实现具有较高真实度的烟雾控制模拟 就要最大程度 地将设计者的理念通过简单高效的操作转化为相应的外力对烟雾进行控制 来相对提高基于外力方法的可控性 3 2 物理模型的构建 在计算机图形学领域 人们一直追求用计算机再现周围的真实世界 然而看似简单的现实世界 实质却极其复杂 其中一些自然现象 人们可 燕山大学里仁学院毕业设计 论文 10 以采用过程描述的方式模拟出某种特定的效果 但是对于烟雾 云等不规 则物体的自然现象人们却无法找到一个简单的模型来描述它 这就需要去 追溯自然现象本身的物理根源 只有借助其本身较为精确的物理描述才能 再现出具有真实感的外在视觉效果 随着计算机硬件的飞速发展和计算能 力的不断增强 计算机能够完成的算法复杂度不断上升 使得基于物理的 动画模拟成为当前和未来计算机图形学发展的一个重点研究方向 纳维 斯托克斯方程是用来计算流体力学的经典模型描述方程 简称 N S 方程 该方程是由法国力学家 Claude Louis Navier 和英国的物理学家 George Gabriel Stokes 在 18 世纪分别导出而得名 在流体模拟时 依赖微 分方程来描述流体的运动规律 10 虽然 N S 方程组是最为常用的流体物理 模型 但完整的 N S 方程组需要考虑流体内粒子动量的改变率即加速度 流体内部压力的变化 抵制流体流动的粘性阻力以及外力之间的关系 导 致计算量很大 通常在为不同的流体建立物理模型时 需要根据流体的特 性对 N S 方程进行简化 本文只研究烟雾的运动 而流体的粘性效果在如 烟雾等气体模拟时可忽略 并当流体的速度远远低于声速时 流体的压缩 效果也可忽略不计 因此 可将简化的 N S 方程即欧拉方程 表示如下 3 1 0 u 3 2 式中 p 压力 密度 f 外力 u 速度矢量 zyx uuuu 矢量点积 散度算子 微分算子 也是梯度算子 拉普拉斯算子 2 方程 3 1 是在流体是不可压缩流体且密度 是常数的条件下 由质量守 恒定律推导而得到的流体的质量方程 又称质量守恒方程和连续方程 fpuu t u 1 第 3 章 烟雾运动方法分析 11 方程 3 2 为以动量守恒定理为基础 在连续流体力学中由牛顿第二定 理推导而得到的流体的动量方程 描述了流体在一定加速度和不同作用力 的影响下发生了怎样的运动变化情况 为对烟雾运动及其形变进行有效的控制模拟 使烟雾按照设计者的意 愿进行运动 本文使用基于力的方法对烟雾进行变形控制 首先定义外力 f 由边界吸引力 内部驱动力和热浮力三项构成 其中边界吸引力是通过解析路径或是目标对象的几何特征 使路径或 对象的边界对外面的烟雾产生吸引力 吸引力不仅可以把烟雾吸引到用户 指定的路径或对象里 还可确保烟雾达到设计者的理想效果后仍保持其形 态 抵消烟雾的扩散现象 而内部驱动力使到达边界的烟雾继续向路径或 对象内部运动 即使烟雾在指定的路径范围或对象内从烟雾密度高的区域 运动到烟雾密度低的区域 从而控制着烟雾在路径或对象内的运动快慢及 方向 所以将流体动量方程中的风力 f 为 3 3 attractdrivebuoy ffff 式中 fattract 边界吸引力 fdrive 路径内部驱动力 fbouy 垂直向上的浮力 方向是垂直向上的 大小也可以由设计者 指定 对于烟雾的密度 一般认为密度 只是随流体速度场水平输送 即 3 4 综合方程 3 1 方程 3 2 方程 3 3 和方程 3 4 即构成了本文中可控 烟雾的基本物理方程组 3 3 N S 方程的求解 N S 方程求解得过程就是逐步求解外力 对流项 再求解压力项 最 后利用变化的速度场计算密度场 分别用 u0 u1 u2 u3 来表示在不同计 算阶段的烟雾的速度场 U t 燕山大学里仁学院毕业设计 论文 12 3 3 1 计算区域的网格划分 想要精确的求解 N S 方程组是非常困难的 首先利用有限差分法对连 续的计算区域进行离散 得到有限的网格结点 然后用离散的变量值近似 的表示连续的变量值 再将微分方程转化成代数方程近似求解 因为有限 差分法是将计算区域划分为很多的规则网格 规则网格的特点是求解简单 且快速 所以本文用有限差分法求解 N S 方程 来达到烟雾形变模拟的效 果 将计算区域离散后 就要进行数据的记录 目前常用的方法有两种 一个是交错网格 另一个是非交错网格 两种网格的记录方式不同 交错 网格是把数据分开记录的 流体的压强与密度是记录在网格中心而速度分 量是记录在网格表面的 非交错网格将所有数据都记录在网格中心 所以 用非交错网格处理数据相对简单快速 固本文中使用规则的非交错网格来 离散计算区域 三维计算区域被划分成网格精度为 M N O 的三维网格空间 图 3 1 中所示的三维网格 图 3 1 三维空间网格的划分 3 3 2 计算外力项 为了完成烟雾的形变控制模拟 本文引入外力 f 边界吸引力 内部驱 动力和热浮力的和 对烟雾进行控制 边界吸引力的作用就是防止烟雾的 随意扩散 因为烟雾的运动是复杂且随机的 所以要加如边界吸引力来将 N 1 z x 0 O 1 第 3 章 烟雾运动方法分析 13 扩散的烟雾吸引到目标对象内 以此达到理想的形变效果 并且在之后的 时间里维持形变效果 抵消烟雾的扩散 内部驱动力的作用就是使模型的 内部快速的 按照一定规则的充满烟雾 这个规则就是是烟雾由高密度区 流向低密度区 热浮力是方向垂直向上的 大小可自定义的力 所以将流 体动量方程中的风力 f 为 3 3 式 3 3 中 fattract 代表边界吸引力 fdrive 代表路径内部驱动力 fbouy 代表 垂直向上的浮力 方向是垂直向上的 1 边界吸引力的计算 基于目标对象的烟雾形变控制模拟 x 处受到的边界吸引力 如式 3 5 3 6 3 7 3 8 式中 x 表示外部网格点 x 处的密度 xAe 表示所有模型边界网格点 在 x 处的吸引力系数矢量之和 M 是边界网格点的总数 xai 表示边界 网格点 Pi 对当前网格点 x 处所施加吸引力的吸引力系数矢量 表示吸引 力影响因子 用于调整吸引力的大小 xDi 表示从网格点 x 到 Pi 的距离 R 是吸引力作用半径 Pi 是球心 为线性光滑函数 作用是使吸引力的 大小平滑的从远到近进行变化 2 内部驱动力的计算 因为烟雾总是从高密度区流向低密度区 所以在模型内部定义的内部 驱动力所产生的理想速度方向应该与烟雾的密度梯度相反 且大小与粒子 当前的速度大小相同 因此烟雾可以在模型内部按照一定的速度和规则将 模型逐渐填充 buoydriveattract ffff xAxf eattract M i ie xaxA 1 1 RxDxH ii xHxa ii 燕山大学里仁学院毕业设计 论文 14 如图 3 2 显示了内部驱动力改变速度的过程 图 3 2 内部驱动力对速度方向的改变 unew x ud ui u 开 始 外力计算及对速度的影响 对流项的求解 压力项的计算 求解密度对流方程 n n 1 n 1 n endtime 结 束 N Y 第 3 章 烟雾运动方法分析 15 图 3 3 N S 方程求解过程 图 3 3 中 u 为当前网格点 x 处的速度 ui 为大小与当前速度 u 相同 方向与密度梯度方向相反的理想速度 ud 为内部驱动力产生的速度 unew 为加入内部驱动力后的新速度 即 3 9 3 10 3 11 其中 驱动力系数 可用于控制烟雾在内部网格从高密度处向低密度处 的运动速度 其值越大 内部网格的速度方向改变的就越大 当等于 1 时 当前速度即是理想速度 方向刚好与密度梯度的方向相反 当等于 0 时 表明内部驱动力不起任何作用 当前速度没有变化 3 3 3 求解对流项 流体的对流是指流体的各物理量随流体运动速度的方向进行传输 而 流体速度也会携带流体本身运动 称为速度场的对流 在本文的求解中 采用 MacCormack 方法求解对流项 提高了模拟速度的同时也保留了烟雾 细节的真实感 第一步 利用前向对流算子 A 计算得到中间量 1nn A 其中 n 表示对流前的量 第二步 用逆向对流算子 R A 获得另一个中间量 1 nRn A 即可 获得最后用来调整对流初始条件的评估对流步误差 2 nn e 如果前向对流算子 A 是线性的 则默认为能够及时对方程和前向误差 进行求解 可得 1 eAAeA nnn 因为不可证明 e 是关于时间 n 的函数得 eeA nnn 11 最终求得对流后的量 2 u 1 n dnew uuu uuu id 1 0 uui 燕山大学里仁学院毕业设计 论文 16 3 3 4 计算在压力梯度影响后的速度场 当外力作用在流体上时 会由离外力较近的粒子逐渐作用到较远的粒 子上而产生压力 压力的不均匀会产生压力的梯度力 用一阶导数中心差 分格式展开泊松方程 的左边 用二阶导数中心差分格式展开泊松方程的右 边 对方程进行整理之后利用压力对速度场进行修正 即得到受压力梯度影 响后的新速度场 3 12 3 3 5 计算密度 速度场驱动密度场以使密度场发生平移 3 13 至此 已完成模拟中一个时间步长内的所有计算 从 n 0 开始 循环 执行上述步骤进行迭代计算 直到 n endtime 结束 则通过目标对象或指 定路径计算外力项的 N S 方程求解过程如图 3 3 所示 3 4 本章小结 本章主要对烟雾运动及其形变的控制模拟方法进行了分析和研究 首 先 结合烟雾的物理特性对影响烟雾运动的因素加以分析 然后 鉴于烟 雾的压缩性和粘性效果不明显的情况 采用不可压缩非粘性的 N S 方程组 建立烟雾物理模型以减少模型的复杂度 其次 在 N S 方程的外力项中加 入边界吸引力和内部驱动力 使得烟雾能够按照设计者的意愿进行运动 最后 用有限差分法求解烟雾的物理 N S 方程 并通过引入 MacCormack 方法求解对流项 以减少 N S 方程求解过程中的数值耗散 提高真实度 3 u t ptuu 23 第 4 章 烟雾骏马模拟的具体设计 17 第 4 章 烟雾骏马模拟的具体设计 4 1 力的描述 力的描述一共包括三个方面 边界吸引力 内部驱动力以及旋涡力的 实现 1 边界吸引力 在进行烟雾形变模拟时 由于烟雾的运动是随机且 复杂的 若不受外力的约束 它的边界是不断向外扩散的 无法形成设计 者想要的固定形状 所以加入边界吸引力的作用就是使烟雾能按照设计者 的思想聚拢 减少向外扩散的程度 达到形变的效果 2 内部驱动力 内部驱动力是使烟雾向目标模型聚拢的力 在模型 内部根据烟雾密度的不同进行驱动 使烟雾由高密度区向低密度区这样一 个有序的路径进行运动 进而充满整个模型 并且 这样的描绘使烟雾的 运动更加自然 提高了烟雾的真实性 3 旋涡力的实现 烟雾的密度和周围的空气相仿 在运动的过程中 很容易产生大量的漩涡 所以漩涡力就是使烟雾产生漩涡的力 漩涡的添 加提高了烟雾运动的真实感 4 2 模型体素化 体素化 Voxelization 是把三维模型用体素来表示 通过体素将最接 近三维模型的几何形式表示出来 体素化操作后产生的体素数据集 这个 数据集包含了模型的表面信息 以及模型的内部信息 13 在体素化前可通 过设置模型的最小包围盒沿其最长轴方向上的体素个数 即立方体单元个 数 来设置模型体素化的分辨率 由于体素是各向同性的 故在确定模型 最小包围盒沿其最长轴方向上体素的个数后 其它两个轴方向上的体素个 数也随之确定 随着模型最小包围盒的分辨率的增大 模型被体素化后的 网格也就变得越精细 就越能准确的表达出模型的几何信息 但随着分辨 率的增大 计算量也随之增大 故需根据需要进行权衡 燕山大学里仁学院毕业设计 论文 18 4 3 悬浮控制菜单 悬浮控制菜单的设计能使用户更方便的了解烟雾目标的运动状态 做 到实时交互 对于悬浮菜单的设计 我主要是针对于烟雾颜色属性设计的 由于我 能力的限制 其他的功能没有添加 对颜色属性的控制 可以让用户方便 的在窗口中改变目标的颜色 而不需要直接修改程序代码 大大提高了方 便性 我最初的想法是在菜单中加入控制烟雾远近和移动的属性 但是 能力有限没有做出来 于是我选择了用键盘代替菜单来完成这个操作 用 左右键来控制烟雾左右移动 用 0 9 键来控制烟雾目标的收缩 4 4 本章小结 本章主要介绍了烟雾形变控制模拟系统的设计 首先描述了吸引力 驱动力以及漩涡力的添加提高了烟雾细节的真实性和实时性 然后讲述了 为实现烟雾形变就必须进行模型体素化 使烟雾基于目标进行形变 最后 讲解了悬浮菜单的功能 以悬浮菜单实现用户与系统的交互 第 5 章 烟雾骏马模拟的具体实现 19 第 5 章 烟雾骏马模拟的具体实现 5 1 实验平台的搭建 本实验是以开放图形库 OpenGL 与 VS2010 为平台进行模拟的 本文使用 C 语言来完成整个系统的实现 用高级语言编写的程序称 为 源程序 source program C 的源程序是以 cpp 作为后缀的 cpp 是 c plus plus 的缩写 C 语言是一种优秀的面向对象程序设计语言 它在 C 语言的基础上发展而来 但它比 C 语言更容易为人们学习和掌握 C 以 其独特的语言机制在计算机科学的各个领域中得到了广泛的应用 C 有 很多的优点 它设计成静态类型 和 C 同样高效且可移植的多用途程序设 计语言 设计成直接广泛的支持多种程序设计风格 程序化程序设计 资 料抽象化 面向对象程序设计 泛型程序设计 避免平台限定或没有普遍 用途的特性 不使用会带来额外开销的特性 设计成无需复杂的程序设计 环境 面向对象的设计思想是在原来结构化程序设计方法基础上的一个质 的飞跃 C 完美地体现了面向对象的各种特性 在 VS2010 中不配有 OpenGL 库 所以要在 VS2010 中使用 OpenGL 必须做好工作环境的配置 配置过程共三步 第一步 将 gl h glu h glut h 等头文件复制到 VS2010 安装目录下的 include gl 文件夹中 没有 gl 文件可 自建 第二步 将 glu lib glut lib 等库文件复制到 VS2010 安装目录下的 静态函数库所在的 lib 文件夹中 第三步 将 glu dll 和 glut32 dll 等动态链 接库文件复制到操作系统的 system32 64 位操作系统的是 SysWOW64 文 件夹中 至此 OpenGL 的工作环境就配置好了 在使用时 注意要将 opengl32 lib glu32 lib 和 glut lib 这三项加入到工程属性 配置属性 连 接器 输入中 5 2 模块功能的具体实现 燕山大学里仁学院毕业设计 论文 20 图 5 1 烟雾骏马模拟系统窗口 5 2 1 力的描述 力的描述都是通过对方程的计算 改变整个场的速度 由速度驱动整 个密度场实现烟雾的形变模拟 下面就以吸引力为例 介绍力的施加过程 1 设置参数 对每个方向上的速度数组进行初始设置 确定吸引力 的半径 设置循环记录变量 2 调用吸引力系数预计算函数 对吸引力系数进行计算 得到吸引 力系数数组 3 根据得到的吸引力系数数组逐步求解 N S 方程 改变每个方向上 的速度值 以此体现力的施加 4 求解 N S 方程 更新了每个方向上的速度值 由此速度值得到更 新后的密度场 5 依据以上步骤的计算进行烟雾的绘制 6 循环遍历整个网络空间 如下所图是对烟雾骏马的模拟过程 阶段一中是刚开始先加入烟雾源 由 第 5 章 烟雾骏马模拟的具体实现 21 于烟雾量不大所以不能看清楚骏马的轮廓 阶段二中是受到力的影响而作 用 而形成的轮廓图 a 阶段一 b 阶段二 c 阶段三 d 阶段四 图 5 2 烟雾骏马的模拟过程 其中阶段三是人与图形的交互 通过键盘的 0 9 键控制骏马的远近 阶段四是通过悬浮菜单来实现烟雾颜色属性的控制 燕山大学里仁学院毕业设计 论文 22 5 2 2 模型体素化 如下所示为 模型体素化结果图 图 5 2 未体素化之前的显示 图 5 3 体素化成功图 用 matlab 提取 3ds 模型的马的数据 其中用到了两个函数如下 header voxels load voxel mesh23 你得到的 voxels 文件名 header voxels load voxel normal8 你得到的 voxels 文件名 最后得到的 M N O 的值分别为 11 56 36 第 5 章 烟雾骏马模拟的具体实现 23 5 2 3 悬浮控制菜单 AntTweakBar 是一个小而易于使用的 C C 库 它允许程序员快速添 加直观的图形用户界面到基于图形程序的 OpenGL 和 DirectX 并以交互方 式对它们进行调整 1 将 AntTweakBar h AntTweakBar lib 和 AntTweakBar dll 文件包含到整 个工程中 2 定义控制变量 bar 3 在程序中写出被控参数的变化数组或控制函数 4 利用 TwAddVarRW 函数将悬浮菜单与被控参数联系起来 实现对烟雾 的控制 图 5 4 悬浮菜单功能图 5 3 本章小结 本章主要介绍了烟雾控制模拟系统的实现 是对第四章中的功能的具 体描述 分别介绍了力 模型体素化以及悬浮控制菜单的具体实现过程 燕山大学里仁学院毕业设计 论文 24 然后将实验结果进行了展示与分析 以图片形式体现烟雾形变控制模拟系 统的结果 结论 25 结论 烟雾的形变是计算机图形学中颇具挑战性的研究方向之一 该类形变 的研究不仅可以在计算机动画上展示一个唯美的画面 更重要的是此类形 变有着广泛的应用 可以被应用到影视 游戏 军事等广泛的领域中 本 文在全面了解了国内外学者对烟雾形变模拟的研究现状的基础上 对各种 方法进行了比较与分析 对基于 N S 方程的方法进行了学习与研究 最终 完成了对烟雾形变控制模拟与实时绘制 下面介绍一下本文对烟雾的形变 控制模拟与实时绘制的完成情况 首先 完成采用非粘性不可压缩 Navier Stokes 方程组建立烟雾形变的 物理模型 对龙和兔子这样的三维模型进行体素化 标识出三维模型的边 界网格和内部网格 计算出吸引力和驱动力用以控制烟雾形变 保持烟雾 的运动状态 刻画烟雾细节 提升烟雾的真实感 完成整个烟雾形变控制 模拟系统最基本的目标 其次 完成了整个烟雾形变控制模拟系统的场景设置 完成了对烟雾 运动和收缩的控制 完成对烟雾颜色属性的改变 形变后的烟雾能以不同 的颜色呈现 未来也可用烟雾的不同颜色来区分烟雾是否有毒等化学属性 最后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年欧洲报春项目可行性研究报告
- 文化创意产业合作推广协议书
- 飞向太空:科幻作品阅读与创作指导教案
- 2025年智能微功耗明渠流量计项目可行性研究报告
- 公司股东合作协议文档
- 市场推广合作合同
- 餐饮业食材供应合同
- 2025年大型压片机项目可行性研究报告
- 2025年圆锯片刀项目可行性研究报告
- 工艺品制造采购合作协议
- 2024-2025学年统编版七年级历史下册期中评估测试卷 (含答案)
- 2025年铅锌矿项目可行性研究报告
- 防春困防疲劳驾驶课件
- 2025年中国职工保险互助会贵州省办事处招聘笔试参考题库含答案解析
- 2025年生猪屠宰兽医卫生检疫人员考试题(附答案)
- 煤矿防冲细则课件
- 出生缺陷预防培训课件
- 2025-2030中国静电仪行业市场现状分析及竞争格局与投资发展研究报告
- 中小学综合实践活动课程指导纲要:让学生更好地了解活动的意义和价值
- 工贸企业重大事故隐患判定标准解读20240902
- NSA2000变频器使用说明书
评论
0/150
提交评论