本文主要是介绍VAF顶点动画和FlowMap 的原理介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
(1)VAF图片信息:
VAF顶点动画: 将动画信息存储在图片中()
图片大小:2687 * 100:
顶点数量 :2687
动画总帧数:100
在动画播放的时候:每一帧读取一行信息(2687个顶点的偏移值)。
(2)模型导入时的注意事项:
用于VAF顶点动画的模型,导入时 Optimize Mesh 一定要取消勾选
(3) VAF的代码:
-
注意点: 在图片中存储的uv信息的偏移值,在unity平台下 坐标轴向不同,可能会导致播放的动画是畸形的: XYZ三个轴的方向和unity 不一致导致!!!!!!!
此处的bug,自己调整, 根据uv坐标采样出的rgb, 三个方向轴 慢慢试~~!!!!!!!!!! -
3DMax 做VAF的顶点信息图片中 有正数 也有负数
但是在unity 读取图片 读取不到负数。。。。。。。
3.Hodini 可以导出 只有正数的VAF顶点信息图片。因此: 请拥抱 Houdini!!!
(4)在计算UV 流动的时候, 由于轴心点的值 不一定是你想要的!!!!
此时加一个可调节变量: _PivotOffset 轴心点偏移值!!!!!
(二)FlowMap效果
flowMap :
在noise图的基础上,
采样两次flowMap。 在两次采样结果之间lerp插值,
所以flowMap 的效果是周期性的, 循环往复, 这也是flowmap的缺点
Shader "Unlit/flowMap_code"
{Properties{_Noise ("_Noise", 2D) = "white" {}_FlowMap ("_FlowMap", 2D) = "white" {}_NoiseSpeed ("_NoiseSpeed", float) = 1_NoiseStrength ("_NoiseSpeed", vector) = (1,1,1,1)}SubShader{Tags { "RenderType"="Opaque" }LOD 100Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag #include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float2 uv_flow : TEXCOORD1;float4 vertex : SV_POSITION;};sampler2D _Noise,_FlowMap;float4 _Noise_ST,_FlowMap_ST;float _NoiseSpeed;float4 _NoiseStrength;v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = TRANSFORM_TEX(v.uv, _Noise);o.uv_flow = TRANSFORM_TEX(v.uv, _FlowMap);return o;}fixed4 frag (v2f i) : SV_Target{ float2 uv = i.uv; float4 flowCol = tex2D(_FlowMap,i.uv_flow);flowCol.x = -flowCol.x + 0.5;float2 timeScale = fract ( _Time.x * _NoiseSpeed) * _NoiseStrength; float2 uvOffset =( flowCol.rg ) * timeScale;uv = uv + uvOffset;float2 uv1 = i.uv;float2 timeScale1 = fract( _Time.x * _NoiseSpeed + 0.5) * _NoiseStrength;float2 uvOffset1 = flowCol.rg * timeScale1;uv1 = uv + uvOffset1;float lerpFactor = abs(fract(_Time.x * _NoiseSpeed) * 2 - 1); fixed4 col = tex2D(_Noise, uv);fixed4 col1 = tex2D(_Noise, uv1); float4 finalCol = lerp(col,col1,lerpFactor);return finalCol;}ENDCG}}
}
这篇关于VAF顶点动画和FlowMap 的原理介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!