最近十分流行使用DeepSeek AI,于是想尝试着能不能用DeepSeek来帮助我实现一些Shader Graph效果,正好之前看到了爱心图形,就说干脆用DeepSeek来告诉我怎么使用Shader Graph来绘制一个爱心。
问DeepSeek怎么绘制爱心
首先打开DeepSeek的网站,然后开启一个新的会话New chat。勾上下面的两个选项,一个是深度思考,一个是联网。
然后再Message DeepSeek中输入要问的问题,这里我的问题如下。
DeepSeek会告诉我一些它思考后解决方案的思路,我阅读它的思路之后,就会理解到要绘制爱心需要这样去做。(理解解决方案需要具备一定的Shader Graph基础)
当然如果没有理解到它的思路,它也会给到我具体的步骤,如下所示。
有了解决方案的步骤,依葫芦画瓢也能够实现爱心的绘制。
实现DeepSeek爱心绘制的方案
解决方案的核心就是,在准备好的坐标系上,使用爱心图形的公式,将坐标系上的X和Y代入进去即可。
首先需要在Unity中创建一个Shader Graph文件命名为Heart以及对应的材质球M_Heart。然后在Shader Graph文件中创建一个名为MainTex的Texture 2D变量。
坐标系的准备
首先是准备坐标系,这里需要用到一个UV节点,按照DeepSeek所说将远点移动到中心,并调整范围。用到Subtract节点和Multiply节点,节点图如下所示。
然后分离X和Y,用到Split节点,如下所示。
爱心公式实现
有了X和Y轴的数据,接着就是实现爱心图形的公式了,根据DeepSeek爱心图形的公式是(x² + y² - 1)³ - x² y³ ≤ 0。首先实现这一部分(x² + y² - 1)³,节点如下所示。
然后是x² * y³,节点如下所示。
最后是两个式子进行相减,并取小于等于0的值,节点如下所示。
然后给爱心加一个可控制的颜色变量Color,与最后的结果进行相乘,输出到最终的BaseColor和Alpha值上,节点如下所示。
回到Unity场景中创建一个2D的Sprite,并将对应的材质球引用到Sprite上。
我们发现这个最终图形的效果似乎下半部分是爱心,但上半部分不对,是什么问题呢?
爱心公式实现的调整
上述的问题可能发生的原因或许是由于坐标系的X和Y轴的值范围太小,导致爱心无法绘制完整,于是我们可以将之前坐标系准备时乘以的2转化为一个可调整的float变量命名为Range,如下所示。
然后再回到Unity中,调整这个Range的大小,当Range调整到合适的位置时,这个爱心就能够完整的绘制出来了,如下所示。
这样通过DeepSeek的帮助,我们就实现了爱心绘制的Shader Graph,是不是很酷!