我想创建逼真的比萨饼,并允许用户与其交互。
我想要的是:
我创造了什么:
我在Blender中创建了比萨饼的模型(8件),然后将其导入Unity。这块比萨饼看起来很人造,主要是因为它是“刚性三角形”。
用户移动一块时如何使奶酪伸展和断裂?
我想创建逼真的比萨饼,并允许用户与其交互。
我想要的是:
我创造了什么:
我在Blender中创建了比萨饼的模型(8件),然后将其导入Unity。这块比萨饼看起来很人造,主要是因为它是“刚性三角形”。
用户移动一块时如何使奶酪伸展和断裂?
Answers:
添加一个将相邻切片彼此连接的四边形。使其具有融化的奶酪质地,并带有孔。随着切片的移开,四边形自然会被拉伸,从而拉伸和倾斜纹理。
尽管不会中断,这看起来应该很合理。在这里要做的是使该纹理成为动画。根据四边形区域(或只是切片之间的距离)而不是时间来遍历动画。随着动画的进行,将其拉得更远时,将出现更多的孔。
最终,当达到距离阈值时,将四边形拆分为两个,以编程方式将两个四边形按其附加切片的方向收缩,以使其略微收缩,并继续播放显示贴紧效果的动画。最后冻结动画。
要获得更多动态效果,您可以使用物理引擎中的关节将四边形附加到两个切片。
使用软体物理引擎或编写一个。在切片之间定义一块布料,并用奶酪对其进行纹理处理。允许物理引擎对材料拉伸和捕捉的动力学建模。
这是一种更为密集但更普遍适用的方法。这也可能是无法控制的,但总体上可能会更具吸引力。
使用预设动画:
因此,请在Maya / Blender之类的3D建模软件中创建预设动画,该软件具有柔软的物体和布料等功能,可以很好地模拟比萨的撕裂。将披萨纹理和模型动画都导出到Unity(可能是一组.obj模型或类似的模型)。
模型动画将使用许多三角形表示正在拉伸和撕裂的奶酪,您可以将其作为一组三网加载到Unity中。它们是许多网状状态的集合,每个状态都表示拉伸状态不同的芝士比萨。根据用户放置比萨饼切片的位置,您将跳至该“网格状态”并显示这些三角形。
当然有一些问题。用户交互有点受限制。如果奶酪已经被撕裂了一点,您就无法回到该奶酪区域的“未撕毁”状态。如果预设动画先删除切片1,然后删除2,则将迫使用户按该顺序删除切片。根据网格的粒度和撕裂动画的持续时间,导出的数据大小可能会变得非常大。
但是,如果造型师在创建预设动画时做得很好,它看起来可能非常逼真。而且您不必实现软体模拟器。
使用Unity:
但是如果您有兴趣,Unity会实现自己的Skinned布料和Interactive布料组件。交互式布支持撕裂。但是,我最后检查了对它们的支持仅限于少数几个平台。
使用您:
最后,您始终可以实现自己的软件模拟器。这是一个非常受欢迎的样本研究论文。太有趣了 :)。祝好运。
@originalDaemon的答案很好!我认为,有一种中间方法可能会比第一种方法获得更好的结果,并且会花费合理的精力(也许与“硬性方法”方法不同)。
我建议实际上也可以模拟奶酪“网”,对我来说,它看起来很像钟乳石。模拟一些弹性奶酪。将它们随机放置在美味三角形的边缘上,并将其缩放为0 y-axis
,当三角形从其同上移除时,将其在y轴上缓慢缩放为所需的大小。
y
如果您打算稍微拉开三角形,则可能需要选择其他轴。无论哪种方式,我都觉得虽然平坦的质地会更容易且更具成本效益,但是对奶酪进行建模对于特写而言可能更加逼真,尽管质地也可以工作。如果选择纹理,则可以使用多个层以获得更逼真的感觉。另外,别忘了加点蒸汽,以强调镜头中比萨的热度。
我注意到的另一件事是,意大利香肠似乎只是一种质地。我肯定会考虑对其进行建模,或者在该区域中向现有模型添加一些细节。您可以将其与弹性奶酪一起滑下来,以获得额外的真实感。