各向异性

各向同性和各向异性 
物理性质可以在不同的方向进行测量。如果各个方向的测量结果是相同的,说明其物理性质与取向无关,就称为各向同性。如果物理性质和取向密切相关,不同取向的测量结果迥异,就称为各向异性。造成这种差别的内在因素是材料结构的对称性。在气体、液体或非晶态固体中,原子排列是混乱的,因而就各个方向而言,统计结果是等同的,所以其物理性质必然是各向同性的。而晶体中原子具有规则排列,结构上等同的方向只限于晶体对称性所决定的某些特定方向。所以一般而言,物理性质是各向异性的。例如, α-铁的磁化难易方向如图所示。铝的弹性模量E沿【111】最大(7700kgf/mm2),沿【100】最小(6400kgf/mm2)。对称性较低的晶体(如水晶、方解石)沿空间不同方向有不同的折射率。而非晶体(过冷液体),其折射率和弹性模量则是各向同性的。晶体的对称性很高时,某些物理性质(例如电导率等)会转变成各向同性。当物体是由许多位向紊乱无章的小单晶组成时,其表观物理性质是各向同性的。一般合金的强度就利用了这一点。倘若由于特殊加工使多晶体中的小单晶沿特定位向排列(例如金属的形变“织构”、定向生长的两相晶体混合物等),则虽然是多晶体其性能也会呈现各向异性。硅钢片就是这种性质的具体应用。  
各向同性和各向异性  
各向同性与均匀介质的区别
一套厚层砂岩,岩性,粒度在横向上,垂向上都没有变化,我们可以认为是均匀介质,它的电阻率、孔隙度肯定相同或差别非常小,可以认为各向同性;但这层砂岩的渗透率却是各向异性的,因为沿着水流方向和垂直河流方向的渗透率明显不同。 
非均质多孔介质:指材料的细观组成或微观组成颗粒在某种力学或结构参数上,如渗透系数、强度等。而本文的非均质多孔介质:指材料的孔隙在空间上分布的不均匀性 
非稳定流:定义:任一点的运动要素(如流速、压强、密度等)随流程、时间等不断发生变化的水流。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
头发各向异性渲染Shader 这个是04年的一个ppt,主要介绍了头发的渲染,其追到源头还是要看这个原理。 各向异性的主要计算公式: 主要代码如下: 切线混合扰动部分(这部分也可以用T+k*N,来对切线进行扰动): float3x3 tangentTransform = float3x3(i.tangentDir, i.bitangentDir, i.normalDir); float3 _T_var = UnpackNormal(tex2D(_Tangent, TRANSFORM_TEX(i.uv0, _Tangent))); float3 temp = lerp(_TangentParam.xyz, _T_var, _BlenfTangent); float3 T = normalize(mul(float3(temp.xy,0), tangentTransform)); 主要是通过改变切线的xy值来造成头发高光部分的多样性。 高光部分,按公式计算即可: float StrandSpecular(float3 T, float3 V, float3 L, float exponent) { float3 H = normalize(L + V); float dotTH = dot(T, H); float sinTH = sqrt(1 - dotTH*dotTH); float dirAtten = smoothstep(-1, 0, dotTH); return dirAtten*pow(sinTH, exponent); } 注意,为了模拟的更贴近真实性,应用两层高光,第一层高光代表直射光直接反射出去,第二层代表次表面散射现象具体看代码。 最终渲染部分: float4 HairLighting(float3 T, float3 N, float3 L, float3 V, float2 uv, float3 lightColor) { float diffuse = saturate(lerp(0.25, 1.0, dot(N, L)))*lightColor; float3 indirectDiffuse = float3(0, 0, 0); indirectDiffuse += UNITY_LIGHTMODEL_AMBIENT.rgb; // Ambient Light float3 H = normalize(L + V); float LdotH = saturate(dot(L, H)); float3 specular = _Specular*StrandSpecular(T, V, L, exp2(lerp(1, 11, _Gloss))); //float specMask = tex2D(_SpecMask, TRANSFORM_TEX(uv, _SpecMask)); specular += /*specMask*/_SubColor*StrandSpecular(T, V, L, exp2(lerp(1, 11, _ScatterFactor))); float4 final; float4 base = tex2D(_MainTex, TRANSFORM_TEX(uv, _MainTex)); float3 diffuseColor = (_Color.rgb*base.rgb); //float ao = tex2D(_AO, TRANSFORM_TEX(uv, _AO)).g; final.rgb = (diffuse + indirectDiffuse)*diffuseColor + specular*lightColor* FresnelTerm(_Specular, LdotH); //final.rgb *= ao; final.a = base.a; clip(final.a - _CutOff); return final; } 这里我注释掉了AO和高光遮罩,需要的同学可以加上。 最后一点为了不让头发的边经过clip之后太硬,需要进行两个通道的belnd。 第二个pass使用以下指令: Blend SrcAlpha OneMinusSrcAlpha ZWrite Off 注意第二个通道无需再进行clip操作。 至此,头发渲染完毕。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值