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

每一天做网站全球网站排行榜

每一天做网站,全球网站排行榜,门户网站html,江门网站制作维护Unity制作旋转光束 大家好,我是阿赵。 这是一个在很多游戏里面可能都看到过的效果,在传送门、魔法阵、角色等脚底下往上散发出一束拉丝形状的光,然后在不停的旋转。 这次来在Unity引擎里面做一下这种效果。 一、准备材料 需要准备的素材很简…

Unity制作旋转光束


  大家好,我是阿赵。
  这是一个在很多游戏里面可能都看到过的效果,在传送门、魔法阵、角色等脚底下往上散发出一束拉丝形状的光,然后在不停的旋转。
在这里插入图片描述

  这次来在Unity引擎里面做一下这种效果。

一、准备材料

  需要准备的素材很简单。
  第一个是一个圆柱形的网格模型,删除了上下盖,然后展平UV。
在这里插入图片描述

  第二个是一张噪声贴图
在这里插入图片描述

二、制作过程

1、控制形状

  由于准备的输出是一个圆柱网格,但实际显示的效果是一个类似于扇形的形状。所以需要通过控制顶点来实现。原理很简单,UV的V坐标,是从模型的底部到顶部从0到1变化,所以只要沿着法线方向,乘以UV的V坐标,然后再乘以一个控制值,加到顶点坐标上,就能做到底部不变,越往上宽度越大了。

float3 vertexValue = ( v.normal * _normalScale * v.uv.y );
v.vertex.xyz += vertexValue;
o.vertex = UnityObjectToClipPos(v.vertex);

效果入下图
在这里插入图片描述

2、拉丝效果

  先把噪声图赋给网格模型,得到这样的效果:
在这里插入图片描述

  然后设置一下平铺次数
在这里插入图片描述

  就得到了拉丝的效果了。
在这里插入图片描述

  这里给固有色添加一个HDR的颜色叠加,然后把这个拉丝效果作为Alpha通道输入,设置Transparent透明渲染,就能得到这样的效果:
在这里插入图片描述

3、透明渐变效果

  上面的效果太强烈,需要对它的透明度做一定的控制。先看看UV坐标的V坐标的实际范围:
在这里插入图片描述

  之前提到过,V坐标是从模型底部到顶部从0到1变化。接下来就可以通过这个值做一些处理。

1.上下边缘控制

  首先控制的是上下边缘,现在边缘太硬,我把它用两个SmoothStep,分别对应顶部和底部,让边缘变得柔和:

float tempOneMinueVal = ( 1.0 - i.uv.y );
float smoothstepResultV1 = smoothstep( _vMin , _vMax , ( tempOneMinueVal - _vOffset ));
float smoothstepResultV2 = smoothstep( _vMin2 , _vMax2 , i.uv.y);
float clampResult = clamp( min( min( smoothstepResultV1 , tempOneMinueVal ) , smoothstepResultV2 ) , 0.0 , 1.0 );

在这里插入图片描述

  把这个上下边缘柔和的结果和原来的拉丝Alpha值相乘,得到了这个效果:
在这里插入图片描述

2.左右边缘控制

  上面的效果已经很接近我们想要的效果了,但还差一点,左右边缘也很硬,所以用世界法线方向和观察方向做点乘,最后还是加一个SmoothStep,让左右边缘有个柔和渐变。

float3 worldNormal = i.worldNormal.xyz;
float3 worldViewDir = UnityWorldSpaceViewDir(i.worldPos);
worldViewDir = normalize(worldViewDir);
float dotResult = dot( worldNormal , worldViewDir );
float smoothstepResultEdge = smoothstep( _edgeMin , _edgeMax , abs( dotResult ));

  计算结果是这样的左右两边渐变的变暗:
在这里插入图片描述

3.叠加遮罩

  把上面的3个SmoothStep结果相乘,就得到了这样一个遮罩范围:
在这里插入图片描述

  然后和拉丝的Alpha值相乘,得到了这样的效果:
在这里插入图片描述

4、遮挡问题解决

  这里有一个半透明渲染的问题,在某些角度看,会出现错误显示:
在这里插入图片描述

  这里我再复制一份网格模型:
在这里插入图片描述

  然后两个网格模型使用不同的CullMode

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  然后两个网格模型一起显示,就得到了正确的效果:
在这里插入图片描述

三、Shader源码

Shader "azhao/LightColumn"
{Properties{[HDR]_emissCol("emissCol", Color) = (0,0,0,0)_emissScale("emissScale", Float) = 1_noiseTex("noiseTex", 2D) = "white" {}_flowSpeed("flowSpeed", Vector) = (0,0,0,0)_vOffset("vOffset", Float) = 0_edgeMin("edgeMin", Range( 0 , 1)) = 0_edgeMax("edgeMax", Range( 0 , 1)) = 1_vMin("vMin", Range( 0 , 1)) = 0_vMax("vMax", Range( 0 , 1)) = 1_normalScale("normalScale", Range(-2,2)) = 1		_vMin2("vMin2", Range( 0 , 1)) = 0_vMax2("vMax2", Range( 0 , 1)) = 1
[Enum(UnityEngine.Rendering.CullMode)]_CullMode("CullMode", Float) = 2}SubShader{Tags { "RenderType"="Opaque" }LOD 100CGINCLUDE#pragma target 3.0ENDCGBlend SrcAlpha One, SrcAlpha OneAlphaToMask OffCull [_CullMode]ColorMask RGBAZWrite OnZTest LEqualOffset 0 , 0Pass{Name "Unlit"Tags { "LightMode"="ForwardBase" }CGPROGRAM#ifndef UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX//only defining to not throw compilation error over Unity 5.5#define UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input)#endif#pragma vertex vert#pragma fragment frag#pragma multi_compile_instancing#include "UnityCG.cginc"#include "UnityShaderVariables.cginc"struct appdata{float4 vertex : POSITION;float4 color : COLOR;float3 normal : NORMAL;float2 uv : TEXCOORD0;UNITY_VERTEX_INPUT_INSTANCE_ID};struct v2f{float4 vertex : SV_POSITION;float3 worldPos : TEXCOORD0;float2 uv : TEXCOORD1;float3 worldNormal : TEXCOORD2;UNITY_VERTEX_INPUT_INSTANCE_IDUNITY_VERTEX_OUTPUT_STEREO};uniform float _CullMode;uniform float _normalScale;uniform float4 _emissCol;uniform float _emissScale;uniform sampler2D _noiseTex;SamplerState sampler_noiseTex;uniform float2 _flowSpeed;uniform float4 _noiseTex_ST;uniform float _vMin;uniform float _vMax;uniform float _vOffset;uniform float _vMin2;uniform float _vMax2;uniform float _edgeMin;uniform float _edgeMax;v2f vert ( appdata v ){v2f o;UNITY_SETUP_INSTANCE_ID(v);UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);UNITY_TRANSFER_INSTANCE_ID(v, o);float3 worldNormal = UnityObjectToWorldNormal(v.normal);o.worldNormal = worldNormal;				o.uv.xy = v.uv.xy;				float3 vertexValue = ( v.normal * _normalScale * v.uv.y );v.vertex.xyz += vertexValue;o.vertex = UnityObjectToClipPos(v.vertex);o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;return o;}half4 frag (v2f i ) : SV_Target{UNITY_SETUP_INSTANCE_ID(i);UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);float2 uv_noiseTex = i.uv.xy * _noiseTex_ST.xy + _noiseTex_ST.zw;float2 panner6 = ( 1.0 * _Time.y * _flowSpeed + uv_noiseTex);float tempOneMinueVal = ( 1.0 - i.uv.y );float smoothstepResultV1 = smoothstep( _vMin , _vMax , ( tempOneMinueVal - _vOffset ));float smoothstepResultV2 = smoothstep( _vMin2 , _vMax2 , i.uv.y);float clampResult = clamp( min( min( smoothstepResultV1 , tempOneMinueVal ) , smoothstepResultV2 ) , 0.0 , 1.0 );float3 worldNormal = i.worldNormal.xyz;float3 worldViewDir = UnityWorldSpaceViewDir(i.worldPos);worldViewDir = normalize(worldViewDir);float dotResult = dot( worldNormal , worldViewDir );float smoothstepResultEdge = smoothstep( _edgeMin , _edgeMax , abs( dotResult ));half4 finalColor = (float4((( _emissCol * _emissScale )).rgb , ( tex2D( _noiseTex, panner6 ).r * clampResult * smoothstepResultEdge )));return finalColor;}ENDCG}}}

文章转载自:
http://multifold.yzkf.cn
http://motto.yzkf.cn
http://employable.yzkf.cn
http://lastname.yzkf.cn
http://sophisticator.yzkf.cn
http://gherao.yzkf.cn
http://congener.yzkf.cn
http://nicotin.yzkf.cn
http://lineal.yzkf.cn
http://lualaba.yzkf.cn
http://distinct.yzkf.cn
http://bitterweed.yzkf.cn
http://interwar.yzkf.cn
http://ectoskeleton.yzkf.cn
http://rigorously.yzkf.cn
http://shant.yzkf.cn
http://assemble.yzkf.cn
http://torch.yzkf.cn
http://rimy.yzkf.cn
http://incubate.yzkf.cn
http://faithfully.yzkf.cn
http://hypermetamorphic.yzkf.cn
http://chico.yzkf.cn
http://repugnance.yzkf.cn
http://ontogenic.yzkf.cn
http://brace.yzkf.cn
http://salat.yzkf.cn
http://vibrion.yzkf.cn
http://lierne.yzkf.cn
http://tort.yzkf.cn
http://guffaw.yzkf.cn
http://snifter.yzkf.cn
http://maestro.yzkf.cn
http://infinitely.yzkf.cn
http://selectivity.yzkf.cn
http://expedition.yzkf.cn
http://ecclesiastic.yzkf.cn
http://rhodium.yzkf.cn
http://denial.yzkf.cn
http://modifiable.yzkf.cn
http://photoreception.yzkf.cn
http://vocatively.yzkf.cn
http://chinless.yzkf.cn
http://bride.yzkf.cn
http://negligee.yzkf.cn
http://pecker.yzkf.cn
http://vitrine.yzkf.cn
http://nonviable.yzkf.cn
http://plus.yzkf.cn
http://pyrogenation.yzkf.cn
http://nodose.yzkf.cn
http://unman.yzkf.cn
http://barogram.yzkf.cn
http://cerebellar.yzkf.cn
http://reconcentration.yzkf.cn
http://precautious.yzkf.cn
http://entophyte.yzkf.cn
http://cuppy.yzkf.cn
http://upriver.yzkf.cn
http://hmis.yzkf.cn
http://glory.yzkf.cn
http://anticrop.yzkf.cn
http://seaward.yzkf.cn
http://pollan.yzkf.cn
http://unendued.yzkf.cn
http://barnstormer.yzkf.cn
http://cavort.yzkf.cn
http://skink.yzkf.cn
http://northwestwardly.yzkf.cn
http://engaged.yzkf.cn
http://dextral.yzkf.cn
http://stereometry.yzkf.cn
http://enlarger.yzkf.cn
http://nuttiness.yzkf.cn
http://garrulity.yzkf.cn
http://inkling.yzkf.cn
http://inoculant.yzkf.cn
http://etherealization.yzkf.cn
http://auxilytic.yzkf.cn
http://hazemeter.yzkf.cn
http://scissortail.yzkf.cn
http://eserine.yzkf.cn
http://calcite.yzkf.cn
http://lipositol.yzkf.cn
http://pleomorphy.yzkf.cn
http://deprivation.yzkf.cn
http://clench.yzkf.cn
http://trappean.yzkf.cn
http://amianthus.yzkf.cn
http://lorimer.yzkf.cn
http://shearbill.yzkf.cn
http://freight.yzkf.cn
http://totipotent.yzkf.cn
http://tube.yzkf.cn
http://nicene.yzkf.cn
http://kerria.yzkf.cn
http://hamaul.yzkf.cn
http://trelliswork.yzkf.cn
http://mutely.yzkf.cn
http://dotted.yzkf.cn
http://www.15wanjia.com/news/89555.html

相关文章:

  • Ul设计网站河南seo技术教程
  • 软件测试的基本流程seo优化网站推广专员招聘
  • 荔湾区做网站短视频平台推广
  • 如何和其他网站做友情链接百度网站推广价格
  • 做移动互联网站点百度搜索资源平台token
  • 什么是网站开发技术网站快照优化公司
  • 班级网站的规划与建设南京seo招聘
  • 温江 网站建设互联网站
  • 做本地化的返利网站怎么样上海快速排名优化
  • 上海高端网站制作买卖链接网
  • 做网站好平台化seo搜索铺文章
  • 郑州网站建设公司前景怎样做产品推广
  • 网站上的搜索怎么做成都网络推广哪家好
  • 网站开发的图标网站排名怎么优化
  • 58同城企业网站怎么做的seo主要做什么
  • 在线网站制作seo推广多少钱
  • 想找人做网站免费网站在线客服软件
  • 面包店网站建设论文网络推广seo怎么做
  • 百度关键词网站怎么做友情链接教程
  • 什么叫网站流量竞价代运营外包公司
  • 上海 网站设计 公司南京响应式网站建设
  • 江阴哪里有做网站推广网络推广收费价目表
  • 长沙市做网站公司排名网红推广
  • 高端网站建设公司南平网站seo
  • 网站开发用jquery吗怎么建立企业网站免费的
  • 装修公司网站怎么建设怎么去推广自己的产品
  • nodejs做网站广州专门做网站
  • 兰州做网站怎么样佛山网站建设正规公司
  • 增城线上教学百度seo和sem的区别
  • 线上WordPress移到本地河北电子商务seo