首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂网格曲面上的动态流体(与重力实时交互)

复杂网格曲面上的动态流体(与重力实时交互)
EN

Stack Overflow用户
提问于 2013-01-24 06:55:53
回答 2查看 1.2K关注 0票数 1

简单地说,我的问题是:在细节上,沿着人物表面流动的血液是如何做到的?它在这段视频here中显示,从0:34开始。

好了,现在我已经研究了更多的细节(我已经尝试了几个星期了,但没有成功):我尝试了一种蛮力方法,我得到了与平面相交的三角形(字符网格三角形),并计算每个三角形的直线方程,以便(为斜杠)画一条线。然而,为了滴下一个表面,我尝试创建一个三角形地图,其中包含由每个三角形的边附加到其上的三角形的索引。然后我做了一条线,沿着每个三角形的表面,沿着重力的方向。这会占用大量的处理器功率,并且通常会产生不好的效果。当试图增加滴滴的厚度时,它会产生许多额外的问题,因此根本不起作用。

我研究了八叉树纹理及其在模拟液体流过表面时的用途,但我不确定如何实现这一点,据我所知,这将不适用于重力。

我目前正在研究Cg着色器,并认为这是解决方案所在。我发现了同一团队(Wolfire)的另一个视频,该视频暗示对here显示的血液效果使用着色器。我已经寻找了着色器的例子,可能会给我一个线索,它是如何完成的,但我到目前为止还没有运气。

我使用语言C#和Cg作为着色器。如果任何人想要提供任何代码来帮助解释等,那么任何语言都可以,我将尝试转换:-)

感谢帮助我的人,因为就像我之前在这篇文章中说的那样,我花了相当多的时间试图解决这个问题,但我的大脑开始痛了。

EN

回答 2

Stack Overflow用户

发布于 2013-01-24 08:15:00

这更像是一种着色器技巧,而不是动力学流体,如平滑粒子流体动力学。

首先,上面的视频是由一个非常优秀的图形程序员(IMO)创建的。只是要知道,获得相同或相似的效果并不是一件容易的事情。

他说,他存储了一种独特的“血液纹理”,这种纹理存储了每个纹理元素的血量。

当添加一个伤害时,你将增加在创伤位置的血量(到血图)。

每一帧都会给出几个标准来更新血图:

对于每个纹理元素,如果上面的纹理元素中有很多血液,则使用

  • -> ...增加当前纹理上的血量。
  • 你需要通过检查着色器
  • 中的世界坐标来确定什么是“上面”。如果你想匹配视频,你还必须检查垂直间隙。Dripping.
  • Decrease所有纹理元素的总血量达到一定的分钟(以允许系统随着时间的推移而变慢)

当滴血落在“水平面”上时会发生什么?看起来他在水平面上添加了一个贴花,每次“滴水”时都会增加。

祝好运

编辑:这是我刚刚制作的一个糟糕的(1小时开发时间)滑动血液的例子……它在GLSL中..。你需要一个像样的显卡和一个兼容webGL的浏览器来查看它。http://glsl.heroku.com/e#6237.48

票数 1
EN

Stack Overflow用户

发布于 2015-09-17 04:24:23

为时已晚,但我会把它留给子孙后代。狼火的血液飞溅效果似乎是nVidia重力图样本的(非常)升级版本。示例可以在以下位置找到:

http://developer.download.nvidia.com/SDK/9.5/Samples/samples.html#HLSL_BloodShader

这里还有GDC演示文稿的幻灯片:

ftp://download.nvidia.com/developer/presentations/GDC_2004/gdc2004_BloodShader.pdf

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14490946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档