Skip to main content
AR论坛
 首页 » 资源教程 » Unity3D教程

Unity shader教程—3D打印机shader特效(下)

2016年11月22日 22:32:262140蛮牛网

介绍

第一部分:切几何形

第二部分:摇晃效果

第三部分:动画

这篇教程的第一部分展示了如何用无灯光模型(如下图)来渲染一部分的物体。还需要几件事才能完全实现在Astroneer中漂亮的风格。

Unity shader教程—3D打印机shader特效(下) Unity3D教程 第1张

切几何体

记载我们着色器中最简单的效果是停止绘制几何体的上半部分。关键字discard可以用来任意阻止一个像素被绘制到着色器中。我们用它来确保只有一个我们模型上顶部的边缘被绘制:

Unity shader教程—3D打印机shader特效(下) Unity3D教程 第2张

要记住,这可能会在集合形状中留下“洞”。你应该禁用面剔除,这样物体的背面也可以被绘制。

Unity shader教程—3D打印机shader特效(下) Unity3D教程 第3张

Unity shader教程—3D打印机shader特效(下) Unity3D教程 第4张

现在,最引人注目的是这个物体看起来是中空的。这不光是看起来:所有3D模型其实都是中空的。然而我们想做的是,这个物体给人错觉其实是实心的。只要把物体里面用同样的无灯光着色器来上色是很容易做到的。这个物体仍然是中空的,但是会被看做实心。

为了达到这一点,我们简单地给这个背对镜头的三角线。如果你对向量代数不熟悉,这个实现起来像一个复杂条件。在现实中,这个可以简单地用积点来完成。在两个向量之前的积表示他们是如何“对齐”。这个直接和他们的角度相关。当两个向量之间的积是负数时,说明他们之间的角度大于90度。我们可以用相机视角方向(viewDir在表面着色器)之间的积来测试我们的原始状态。如果是负数,说明这个三角不是面对镜头的。所以,我们能看到他的背面;我们用实体的颜色来渲染它。

这个效果在下面的图片中显示。在左边,“几何形后面”是红色的。当我们在物体顶部使用同样的颜色是,物体看起来就不是中空的了。

Unity shader教程—3D打印机shader特效(下) Unity3D教程 第5张

摇晃效果

Unity shader教程—3D打印机shader特效(下) Unity3D教程 第6张

如果你玩过行星坠落,你就知道它用的3D打印着色器有一个小小的摇晃效果。我们也能加上这个效果,通过在我们画的像素的世界坐标中加一些噪点。这个用噪点材质来实现,也可以用一些连续周期函数。在这下面的代码中,我用一些任意参数在一个正弦函数中。

Unity shader教程—3D打印机shader特效(下) Unity3D教程 第7张

我自己调整了一下这些参数,于是获得了一个满意的摇摆效果

Unity shader教程—3D打印机shader特效(下) Unity3D教程 第8张

动画

最后这一部分是讲做动画。这个可以简单地通过改变材质中_ConstructY这个变量来实现。着色器会完成接下来的工作。你可以通过代码或者动画曲线来改变这一效果的速度。用代码的话可以更好地控制速度。

Unity shader教程—3D打印机shader特效(下) Unity3D教程 第9张

最后一点,这张GIF中前几秒看这个物体是中空的因为这个助推器底部没有封起来。所以,它实际是中空的。

结论

这是3D打印着色器效果的总结。

最后感谢在System Era的大兄弟,特别感谢Jacob Liechty,比心。

评论列表暂无评论
发表评论