在unity3D中可以通过哪种途径实现水面渲染?

2020-04-17 13:52发布

感觉很高深啊

感觉很高深啊

3条回答
男孩无衣
1楼 · 2020-04-17 17:41.采纳回答

在这里隔一下思路啊,具体的实现请到网上直接搜索代码吧,大同小异。


①简单的水波效果,可以使用例子特效实现(gif好像不能动),关键在于粒子特效的参数

GIF.gif

具体参见这篇帖子:https://jingyan.baidu.com/article/fec7a1e5be6fe21190b4e73e.html, 来自百度贴吧,侵删。


②使用shader实现,需要注意的技术点有两个,一是波动的数值模拟,二是倒影映射。

 波动的数值模拟,通常使用周期性波形三角函数,如sin、cos来模拟,将每个像素点的值,设为sin(时间)的函数值,发生周期性的变化。如(网摘,侵删)

  1.   fixed4 frag(v2f IN):COLOR

  2.             {               

  3.                 fixed2 uvDir = normalize(IN.uv - fixed2(0.5, 0.5));

  4.                 fixed dis = distance(IN.uv, fixed2(0.5, 0.5));

  5.                 fixed2 uv = IN.uv + _WaveStrength * uvDir * sin(_Time.y * _TimeScale + dis * _WaveFactor);

  6.                 return tex2D(_MainTex, uv);

  7.             }

倒影映射:可通过获得对象位置、光源和水面(使用法线表示),通过反射基本定理来确定像素点。但是我见过更多的,是使用一张渲染好的图片,直接作为水面的材质纹理,而无需实时计算。

Ross
2楼 · 2020-04-17 15:54

可以直接从网上下载些有水面效果的着色器就可以实现水面渲染的效果了,当然这些着色器有的是免费的,有的需要付费,另外如果自己学习能力好的话,可以自己学习着色器编程,自己来实现水面渲染的效果.

单纯渲染一个非常简单的水面的话还是比较容易做到的,选取一张水面纹理图,然后使用FragmentShader或者SurfaceShader做纹理采样,同时再做个颜色渐变或者Alpha混合就可以了。

但是如果突出做一些特别的光影效果或者水面倒影效果那就尽量自己写光照模型函数。

如果要求水面有一定的波动比如随时可以掀起一些水浪那么你需要在VertexFunction中使用特定的物理波动曲线(例如正弦曲线等)来对顶点做高度变换,这个可能需要参考相关数学与物理原理以及公式了。

相关问题推荐

  • 回答 10

    当然不算冒险,游戏开发的相关工种有很多,不做技术可以做游戏策划。非常讲究阅历的一个职位。

  • 游戏策划难学吗?2020-05-28 15:48
    回答 10

    零基础学习游戏策划的话,只有两个途径,一个是自学,一个是培训。      自学的话事实上个人不是很赞成,时间周期长而且见效慢,主要是因为大部分人的自觉性都是比较差的,如果身边没有一起努力的朋友,知识自己盲百目的学,没有人督促你、和你交流,基本...

  • 回答 10

    王者荣耀英雄联盟和平精英都可以啊。

  • 回答 10

    一、游戏策划需要学习的知识点很多,并不仅仅是按部就班的依照格式写就行了,需要对很多行业的知识都zd有所了解,如历史、科技、艺术等都要有涉猎,游戏策划不是纯粹学习就能学会的,这要看你的思维够不够活跃。另外能不能和该公司程序的能力结合起来,是个技...

  • 回答 11

    小程序是小程序,游戏是游戏。即便是微信小游戏,也仍然有不少公司在开发。并且微信小游戏的命运掌握在腾讯的手中,不完全掌握在市场的手中。游戏行业慢慢已经复苏,目前就业形势和新的机遇很多。...

  • 回答 12

    需要有策划案,需要有美术资源,需要会写代码。会unity

  • 回答 4

    1.首先我们打开unity场景。 2.在左边存放物体对象的区域右键 Create Empty。 3.然后我们会得到一个GameObject空对象。 4.选择这个对象后我们发现,只有一个坐标。 5.现在我们随便创建一个Cube物体,并选择它。...

  • 回答 4

    第一个阶段,能够熟练的运用编程语言解决问题,写出算法;第二个阶段,熟练的使用游戏开发软件,大致了解里面能够实现的功能,利用软件所提供的API实现一些特殊的功能;第三个阶段,在前两个阶段的基础上,进一步提升技术,能够熟练的解决游戏开发过程中所使用的框架,数...

  • 回答 7

    是游戏开发公司中的一种职称,是电子游戏开发团队中负责设计策划的人员,是游戏开发的核心。主要工作是编写游戏背景故事,制定游戏规则,设计游戏交互环节,计算游戏公式,以及整个游戏世界的一切细节...

  • 回答 7

    游戏策划分很多种 剧情策划 文案策划 UI策划  活动策划 你说哪个 

没有解决我的问题,去提问