如何模拟碎玻璃?


10

我需要用扔石头通过玻璃窗进行模拟。我该怎么做?

我的意思是,我当时正在考虑在3D Studio Max 2012中制作石头和玻璃的3D模型,将玻璃破碎,然后将两者导出为.x模型。然后在XNA中制作动画-编写我自己的物理引擎。有可能吗?撞击后有可能破坏XNA中的玻璃吗?还是应该在3DS Max中这样做?“破坏玻璃”是指将一些以前破碎的玻璃钻头彼此断开,因为取决于石头的开始速度和重量以及玻璃的电阻(硬度?)(所有用户定义),这些钻头将与玻璃断开连接。彼此以不同的方式。

Answers:


5

Voronoi粉碎是一种为例如创建相当现实的粉碎的方法。钢化玻璃由于在制造过程中玻璃的结构变化而具有显着的破碎成小块(通常是凸块)的能力。同样,如果您有一块玻璃,则只需要2D Voronoi实施,而无需3D。


3

我认为,从最初的整个网格自动生成破碎的碎片非常棘手。如果您只是想模拟碎片在空中飞舞,碰撞等时的动态,那么我将从一个预先破碎的网格开始,使用易碎的约束或将这些碎片保持在一起直到被拉动除了有足够的力量。


嗨,内森(再次),您在2011年之后从事这项工作吗?您还能提供更多提示吗?Thx
karlphillip 2014年

@karlphillip我确实使用PhysX Destruction进行了演示,尽管我个人只是在项目中渲染东西,而不是任何物理东西。PhysX技术的工作原理是在DCC工具中生成预破碎的碎片,并在发生损坏时将其交换为不间断的网格。
内森·里德

3

制作一个未破碎的窗格和一个破碎的窗格。发生碰撞时,请关闭未破碎的版本,然后开始使用破碎的窗格。

如果您要在窗户上扔一块石头(大小一致),那么您可以使用3D破碎窗格模型(将窗格中的碎片模型化,然后对每个窗格进行简单的物理模拟)走很长一段路。碎片以模拟它们的下落/飞行)。除非相机非常近(或以慢动作),否则您不需要在零件之间进行碰撞-仅与周围的几何体(地平面?)碰撞。别忘了为随破碎而来的较小玻璃微粒云喷射一些微粒效果。

如果您假设碎石是在中心击打,则可以根据实际的击打位置缩放碎片,以对大多数击打获得漂亮的中断。



1

非常感谢您的回答和无价的帮助。我终于设法建立了这个项目。我尝试了所有建议,最后部分选择了自己的模拟方法。

我将bulledsharp(c#的子弹物理包装器)用于物理引擎,但是使用最新的,由您自己与sourceforge svn的bulletsharp源以及最新的子弹物理源进行编译的方法很重要。不是一个可以从网站下载的预编译的.dll文件。预编译的版本对我来说太旧了,不包含进一步开发的一些宝贵功能。我还了解到,对于不需要高级图形的简单模拟,最好使用较旧的3dsmax(即2011(而不是最近的2012))来开发模型等。主要是因为有更多的插件和导出器。此外,查看所有可用框架(sharpdx,xna,xna4,slimdx,c ++等)中的教程确实很有帮助。

最后,我的方法是使用很小的立方体块来建造玻璃墙。当然,要使仿真运行,您必须拥有功能强大的计算机。如果您的功能不那么强大,则可以使用更大的多维数据集。使用休眠岛状态创建的所有多维数据集很重要。现在,每个零件都有两个二维的浮点数表示。那里的数字表示两个立方体之间的连接强度是多少。当扔石头并检测到碰撞时,将计算壁中每个立方体的力(包括石头质量,速度,立方体质量以及距碰撞中心的距离和距离),并从圆阵列中减去样的模式。减去后的连接强度为零或更低的那些立方体将变为活动状态。这导致幼崽移动。

就是这个。谢谢你的帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.