移动设备硬件的高速发展,让游戏行业发生翻天覆地的变化,许多酷炫的游戏效果不再局限于电脑端,玩家在移动端就能享受到场景更逼真、画质更清晰、体验更流畅的游戏服务。但由于移动设备算力不足,为了实现真实感的水体效果,很多游戏厂商采用预计算的方法减少实时仿真的计算开销,但水体场景在移动端的流体效果仍然不佳。
真实感水体的模拟一直是图形学和游戏开发领域的难点问题,对硬件算力要求也很高,因此大多数真实的水体模拟场景只出现在PC和主机游戏中。为了解决移动端水体流动真实感的问题,提升开发者应用开发的效率,HMS Core图形引擎服务(Scene Kit)推出了3D流体仿真技术,有效解决3D流体动效在移动设备上的实时性和功耗的问题。

流体力学中流体的运动可以用偏微分方程表示,该方程称为纳维-斯托克斯(NS)方程,如公式(1)所示
█((∂ u ⃗)/∂t=g ⃗-1/ρ ∇p +ν∇⋅∇u ⃗ -u ⃗⋅∇u ⃗#
(1) )该方程描述了流体动量变化与流体内部的压力(1/ρ ∇p)、粘滞力(ν∇⋅∇u ⃗)以及重力( g ⃗)之间的关系。流体力学中对流体运动有拉格朗日和欧拉两种描述方法,拉格朗日描述用粒子方式对流体建模,每个粒子上携带流体的状态信息在空间中流动;欧拉描述把仿真区域划为空间中的网格,每个网格上存储流过该位置的流体的状态信息。如图2所示。

图2 欧拉描述与拉格朗日描述
模拟真实的流体效果需要大量的粒子或者网格,数量可达到十万、百万级别,但使用CPU串行计算的方式仿真需要几秒才能完成一帧数据的计算,无法满足实时性要求。而GPU在高性能并行计算领域有着巨大优势,因此在HMS Core图形引擎服务中,我们利用GPU加速技术在移动设备上实现流体仿真。
不过,仅通过GPU硬件加速不能完全满足移动设备上流体实时仿真的要求,还需要提升GPU的运行效率,以及减少仿真的计算量,从而降低GPU的负载以及带宽的使用,避免高负荷高带宽运行导致的设备发烫等体验问题。在流体运动的两种描述方法中,拉格朗日方法由于粒子状态受周围其它粒子的影响,计算时需要先搜索邻域粒子,这个过程对并行计算不够友好,难以发挥并行计算的优势。而欧拉描述中的每个网格状态数据的计算过程都是相同的,更适合并行计算。因此为了提升GPU的并行效率,HMS Core图形引擎服务采用欧拉方法进行流体仿真。
采用欧拉方法构建流体模型,先将仿真区域划分成均匀的网格,构造出流体的速度场、密度场等数据。如图3所示。

图3 红点表示密度、压强数据的存储位置,红色箭头表示速度场数据
黑色网格是密度场网格,速度场网格在密度场网格基础上沿x、y方向进行半个网格偏移(蓝色网格),密度存储在密度场网格中心点,速度场数据存储在密度场网格顶点上,同时也是速度场网格中心点,这种形式可以很方便的实现中心差分计算,实际计算时需要将速度场按维度拆分。再引入有向距离场(SDF)数据描述流体的边界,实现流体与边界的碰撞效果。如图4所示。

图4 密度场网格,棕色区域表示固体边界,蓝色区域表示流体,白色区域表示空气。
在流体模型构建完成后,再利用前面提到的纳维-斯托克斯(NS)方程进行仿真计算,计算过程包括求解重力、压强、粘度、对流4步,分别对应公式(1)中等号右边的四项。
压强和粘度求解过程复杂,通过大量优化将求解过程简化为线性方程组的求解,从而降低计算复杂度,减少计算量。方程组求解采用快速收敛的解法,同时进行精度取舍从而降低计算开销。数据存储格式的优化,也达到降低GPU带宽使用、提高GPU cache命中率的效果。
求解对流项时,需要考虑流体与固体边界的碰撞,图形引擎服务采用一种统一建模的方式描述空气、流体、固体网格,如图5所示。

图5红色表示在边界外部,灰色区域表示边界,绿色区域表示边界内部
这样在计算时可以统一处理全部网格,无需对流体、固体区域分别计算,可以减少计算逻辑,提升GPU线程的运行效率。
通过以上多种技术方法,HMS Core图形引擎服务实现了GPU运行效率的提升以及流体仿真计算量的降低,从而在移动设备上实现了较低功耗的3D流体实时仿真。再结合图形渲染的其他能力,最终在移动设备上能够实现3D流体的流动、飞溅、反射、折射等效果,让用户手机不发烫,还能拥有实时流畅的流体体验。
3D流体仿真技术来自华为2012实验室,通过HMS Core图形引擎服务向开发者开放。HMS Core图形引擎服务致力于为开发者提供高性能、低功耗的引擎服务,帮助开发者制作高品质的3D应用,赋能更多应用走入数字世界。
其他更多关于HMS Core图形引擎服务的信息,请访问华为开发者联盟-HMS Core图形引擎服务官网。
了解更多详情>>
访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee
关注我们,第一时间了解 HMS Core 最新技术资讯~
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u
之前说过10之后的版本没有3dScan了,所以还是9.8的版本或者之前更早的版本。 3d物体扫描需要先下载扫描的APK进行扫面。首先要在手机上装一个扫描程序,扫描现实中的三维物体,然后上传高通官网,在下载成UnityPackage类型让Unity能够使用这个扫描程序可以从高通官网上进行下载,是一个安卓程序。点到Tools往下滑,找到VuforiaObjectScanner下载后解压数据线连接手机,将apk文件拷入手机安装然后刚才解压文件中的Media文件夹打开,两个PDF图打印第一张A4-ObjectScanningTarget.pdf,主要是用来辅助扫描的。好了,接下来就是扫描三维物体。将瓶
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO
我刚刚看到whitehouse.gov正在使用drupal作为CMS和门户技术。drupal的优点之一似乎是很容易添加插件,而且编程最少,即重新发明轮子最少。这实际上正是Ruby-on-Rails的DRY理念。所以:drupal的缺点是什么?Rails或其他基于Ruby的技术有哪些不符合whitehouse.org(或其他CMS门户)门户技术的资格? 最佳答案 Whatarethedrawbacksofdrupal?对于Ruby和Rails,这确实是一个相当主观的问题。Drupal是一个可靠的内容管理选项,非常适合面向社区的站点。它
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion是否有适用于这些的3d游戏引擎?
目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标