当前位置: 首页 > news >正文

镇江润州区建设局网站ppt主题大全素材

镇江润州区建设局网站,ppt主题大全素材,公司vi设计内容,申请163 com免费邮箱Unity制作力场护盾 大家好#xff0c;我是阿赵。   继续做护盾#xff0c;这一期做一个力场冲击波护盾。 一、效果展示 主要的效果并不是这个球#xff0c;而是护盾在被攻击的时候#xff0c;会出现一个扩散的冲击波。比如上图在右边出现了冲击波 如果在左边被攻击我是阿赵。   继续做护盾这一期做一个力场冲击波护盾。 一、效果展示 主要的效果并不是这个球而是护盾在被攻击的时候会出现一个扩散的冲击波。比如上图在右边出现了冲击波 如果在左边被攻击冲击波会出现在左边并且慢慢扩散渐隐消失。 二、原理 把用于装饰的球体去掉之后实际上我们要做的事情其实很简单就是要计算一个沿着球体的环形范围显示。 1、准备工作 这里我们需要几个东西 1.一个球形模型 用于获取碰撞点还有显示冲击波 2.碰撞点的坐标   比如我们用鼠标点击来模拟攻击护盾那么从屏幕的鼠标位置发射射线碰撞到上面的球体得到一个球体上的坐标用于计算扩散的中心点 3.扩散范围的大小   在每次点击护盾获取到碰撞点之后这个值应该是动态改变的从小到大用于控制扩散的幅度 4.一张渐变图 这张渐变图其实就是上面看到的环形效果所采样的贴图了。 2、计算过程 接下来看看是怎样计算的 1.计算碰撞点的坐标和球体的顶点坐标的距离distance 2.距离distance减去一个size得到一个扩散范围range 3.扩散范围除以一个扩散值diffuse用于扩散范围的拉伸 4.上面得到的值作为UV坐标的u坐标然后v坐标是0.5。其实v坐标是0-1随便一个值都可以因为  我们的渐变图只有x轴有变化。用这个uv值去采样渐变图就能得到一个沿着球体的环形贴图效果 通过控制size的大小就能让这个 环形从小到大的变化。   如果觉得这个环太整齐了可以在第2步计算范围之后再减去一个噪声图采样这样环形的边缘就会出现不规则的变化 看着好像很复杂的效果其实做起来是很简单的。接下来写一个很简单的C#脚本获取碰撞点把坐标传入到材质球里面然后在C#写一个size从小到大变化的控制让环形从小到大的扩散最后消失就可以了。 3、特别说明 1.多个冲击波 上面这样做之后我们每次就只能点击出一个冲击波如果点击第二个的时候第一个会消失。为了可以多个冲击波同时存在可以通过C#端的SetVectorArray方法和SetFloatArray方法使用数组去传冲击波中心点和扩散的size然后在shader里面用循环的方式计算多个中心点和扩散size得到多个冲击波同时出现的效果 2.三平面采样 然后还有一个需要说明的是如果我们单纯的用UV坐标去采样噪声图在球形的UV接缝位置会出现断裂的情况。所以我这里使用了一个三平面采样的技术 inline float4 TriplanarSampling44(sampler2D topTexMap, float3 worldPos, float3 worldNormal, float falloff, float2 tiling, float3 normalScale, float3 index) {float3 projNormal (pow(abs(worldNormal), falloff));projNormal / (projNormal.x projNormal.y projNormal.z) 0.00001;float3 nsign sign(worldNormal);half4 xNorm; half4 yNorm; half4 zNorm;xNorm tex2D(topTexMap, tiling * worldPos.zy * float2(nsign.x, 1.0));yNorm tex2D(topTexMap, tiling * worldPos.xz * float2(nsign.y, 1.0));zNorm tex2D(topTexMap, tiling * worldPos.xy * float2(-nsign.z, 1.0));return xNorm * projNormal.x yNorm * projNormal.y zNorm * projNormal.z; }使用起来也很简单 直接使用UV坐标采样一般是这样写 float2 noiseUV i.uv*_noiseTex_ST.xy _noiseTex_ST.zw; float4 noiseCol tex2D(_noiseTex, noiseUV);现在改成 float4 noiseCol TriplanarSampling44(_noiseTex, i.vertex_world, i.normal_world, 1.0, _noiseTilling, 1, 0);3.装饰球体的制作 最后那个用于装饰用的球其实Shader代码更简单就是一个菲涅尔边缘光加上一个Flow流动效果用一张噪声图做流动而已。Flow的源码在上一篇闪电护盾给过了所以这里就不给了各位有兴趣可以自己试试。 三、代码 c#代码就不给了实在太简单就是一个射线拾取碰撞点的代码。   给一下Shader的源码吧 Shader azhao/ShockWave {Properties{_diffuse(kuosan,float) 0_noiseTex(noiseTex,2D) black{}_gradient(gradientTex,2D) black{}_baseColor(baseColor,Color) (1,1,1,1)_noisePow(noisePow,float) 1_addSize(addSize,float) 0_divSize(divSize,float) 1_noiseTilling(noiseTilling,Vector) (1,1,1,1)_hitSpeed(hitSpeed,float) 10}SubShader{Tags { QueueTransparent }LOD 100Pass{Blend SrcAlpha OneMinusSrcAlphaCGPROGRAM#pragma vertex vert#pragma fragment frag#include UnityCG.cgincstruct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;float3 normal:NORMAL;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;float4 vertex_world:TEXCOORD1;float3 normal_world:TEXCOORD2;};float3 _hitCenter[10];float _hitSize[10];float _diffuse;sampler2D _noiseTex;float4 _noiseTex_ST;sampler2D _gradient;float4 _baseColor;float _noisePow;float _addSize;float _divSize;float2 _noiseTilling;float _hitSpeed;inline float4 TriplanarSampling44(sampler2D topTexMap, float3 worldPos, float3 worldNormal, float falloff, float2 tiling, float3 normalScale, float3 index){float3 projNormal (pow(abs(worldNormal), falloff));projNormal / (projNormal.x projNormal.y projNormal.z) 0.00001;float3 nsign sign(worldNormal);half4 xNorm; half4 yNorm; half4 zNorm;xNorm tex2D(topTexMap, tiling * worldPos.zy * float2(nsign.x, 1.0));yNorm tex2D(topTexMap, tiling * worldPos.xz * float2(nsign.y, 1.0));zNorm tex2D(topTexMap, tiling * worldPos.xy * float2(-nsign.z, 1.0));return xNorm * projNormal.x yNorm * projNormal.y zNorm * projNormal.z;}v2f vert (appdata v){v2f o;o.vertex UnityObjectToClipPos(v.vertex);o.uv v.uv;o.vertex_world mul(v.vertex, unity_ObjectToWorld);o.normal_world mul(unity_WorldToObject, v.normal);return o;}fixed4 frag (v2f i) : SV_Target{float alpha 0;for (int j 0;j 10;j){float dis distance(_hitCenter[j], i.vertex_world);float hitMaskVal (1 - (dis - _addSize)) / (max(_divSize, 0.001f));float hitSizeVal (dis - (_hitSize[j] * _hitSpeed)) / _diffuse;//float2 noiseUV i.uv*_noiseTex_ST.xy _noiseTex_ST.zw;//float4 noiseCol tex2D(_noiseTex, noiseUV);float4 noiseCol TriplanarSampling44(_noiseTex, i.vertex_world, i.normal_world, 1.0, _noiseTilling, 1, 0);float noisePowerVal pow(noiseCol.r, _noisePow);float hitRange clamp(hitSizeVal - noisePowerVal, 0, 1);float2 jianbianUV float2(hitRange, 0);float4 jianbianCol tex2D(_gradient, jianbianUV);alpha alpha clamp(hitMaskVal* jianbianCol.r, 0, 1);}alpha * _baseColor.a;return float4(_baseColor.rgb, alpha);}ENDCG}} }
http://www.zqtcl.cn/news/290398/

相关文章:

  • 上海网站 备案查询平面设计接单网站有哪些
  • 用别人的公司名字做网站想自己做网站推广
  • 百度智能建站平台建设工程信息网官网入口查询
  • 比价网站源码整站程序服务器怎么发布网站
  • html插件代码大全济南网站关键词优化公司
  • 优秀的手机网站设计网站推广的特点
  • 滨州北京网站建设电子商务网站规划与管理
  • 如何注册公司网站域名中国有几大网站
  • php网站留言板怎么做wordpress 相关文章推荐
  • 怎么看网站被惩罚专业的网站建设流程
  • 如何制作手机免费网站模板下载用户体验设计师是什么
  • php网站建设基本流程基于php网站开发设计
  • 建设一个网站需要哪些软硬件条件无做弊的棋牌游戏网站
  • 最有设计感的网站扬中网站建设 优帮云
  • 企业建设银行网站登录不了wordpress需要ftp
  • 广州营销型网站建设团队专业建设内涵包括哪些内容
  • 网站如何做响应式布局外国网站上做Task
  • 知乎网站建设入门书大渡口集团网站建设
  • 免费网站建设是什么宁波网站建设的价格表
  • 网站设计导航栏高度网站设计的经营范围
  • 帮别人建设网站多少利润北京网站建设公司华网制作作
  • 微信网站需要备案吗瑞安商业网站建设
  • 做网站如何计算工资wordpress stheme
  • 网站建设销售人才简历wordpress 搜索tag
  • 设计网站专业云南旅行社网站开发
  • 小规模开普票网站建设几个点张浦专业做网站
  • 点击图片跳转到网站怎么做链接网址后缀名大全
  • php网站开发优化crm客户系统
  • 韩国网站免费模板wordpress数据库名称
  • 如何修改网站发布时间贵阳网站建设报价