精华内容
下载资源
问答
  • 这是一款使用SVG和CSS3制作的非常有创意的无限循环动画特效。该无限循环动画特效共有两种效果,一种是模拟鱼儿跃起在落入水中的动画,一种是一条线绕无穷符号不断动画的特效。
  • unity3d中水草海草摇动效果顶点动画材质

    万次阅读 热门讨论 2017-04-28 22:42:31
    更不用说动力学解算了,通常时间长,而且烘焙成顶点动画往往比较困难,而且无法很好循环 使用shader的uv动画或者序列帧动画又不适合写实场景 用unity3d自带风力的话更像是陆地上的植物,没有很好表现水下效果 所以...


    因为最近要尝试在untiy3d做写实海底的效果,上图为版本5.5里面实现的效果

    为了让画面更加逼真,海底植物必不可少

    然而海底的海藻海草之类需要加上动画就比较麻烦了

    一般的骨骼动画加起来比较麻烦,而且效果比较单调,消耗也很大

    更不用说动力学解算了,通常时间长,而且烘焙成顶点动画往往比较困难,而且无法很好循环

    使用shader的uv动画或者序列帧动画又不适合写实场景

    用unity3d自带风力的话更像是陆地上的植物,没有很好表现水下效果

    所以这里使用了shader顶点动画来模拟海草在海底的波动


    下面是效果图



    主要思路就是对物体表面顶点进行移动

    为了方便说明,下面用shaderforge来制作一个简单的世界空间波动效果

    使用shaderforge好处不止是简单,因为它能带来更大的兼容性,比如说投影和雾效之类不用自己单独写了

    这些效果上面与其他的兼容性还是挺容易犯错的


    下图是简单连线方式,可以让一个mesh平面在世界空间内自动产生波的效果


    当然这只是简单的效果

    成品需要叠加更多的节点

    为了让扭动更加自然,不能只用简单的正弦余弦,而是要组合起来,减少规律感觉

    自然扭动效果,首先可以让水草有整体的偏移循环,然后是每一个叶子顶点的偏移,最后还可以加上每个叶子uv的扭曲动画,才会更加自然

    另外当水草成批复制的时候也会有问题,因为水草的运动效果太一致了,

    所以我还在里面加上了世界空间坐标作为产生扰动的参数,这样每一株水草的动画都会有稍许不同了

    当然最终效果也是个手艺活,需要一边调一边看效果,还有shaderforge有些bug,比如有些顶点移动效果在scene窗口才看得到,预览里面并不正确

    下面放上shaderforge里面的一个粗糙版本,貌似有很多多余节点,不过效果就是上面gif的效果

    Shader "Shader Forge/NewShader" {
        Properties {
            _color ("color", 2D) = "white" {}
            _norml ("norml", 2D) = "bump" {}
            _anbient ("anbient", Color) = (0.5,0.5,0.5,1)
            _specularColor ("specularColor", Color) = (0.5,0.5,0.5,1)
            _specular ("specular", Float ) = 1
            [HideInInspector]_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
        }
        SubShader {
            Tags {
                "Queue"="AlphaTest"
                "RenderType"="TransparentCutout"
            }
            Pass {
                Name "FORWARD"
                Tags {
                    "LightMode"="ForwardBase"
                }
                
                
                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
                #define UNITY_PASS_FORWARDBASE
                #include "UnityCG.cginc"
                #include "AutoLight.cginc"
                #pragma multi_compile_fwdbase_fullshadows
                #pragma multi_compile_fog
                #pragma exclude_renderers gles3 metal d3d11_9x xbox360 xboxone ps3 ps4 psp2 
                #pragma target 3.0
                uniform float4 _LightColor0;
                uniform float4 _TimeEditor;
                uniform sampler2D _color; uniform float4 _color_ST;
                uniform sampler2D _norml; uniform float4 _norml_ST;
                uniform float4 _anbient;
                uniform float4 _specularColor;
                uniform float _specular;
                struct VertexInput {
                    float4 vertex : POSITION;
                    float3 normal : NORMAL;
                    float4 tangent : TANGENT;
                    float2 texcoord0 : TEXCOORD0;
                    float4 vertexColor : COLOR;
                };
                struct VertexOutput {
                    float4 pos : SV_POSITION;
                    float2 uv0 : TEXCOORD0;
                    float4 posWorld : TEXCOORD1;
                    float3 normalDir : TEXCOORD2;
                    float3 tangentDir : TEXCOORD3;
                    float3 bitangentDir : TEXCOORD4;
                    float4 vertexColor : COLOR;
                    LIGHTING_COORDS(5,6)
                    UNITY_FOG_COORDS(7)
                };
                VertexOutput vert (VertexInput v) {
                    VertexOutput o = (VertexOutput)0;
                    o.uv0 = v.texcoord0;
                    o.vertexColor = v.vertexColor;
                    o.normalDir = UnityObjectToWorldNormal(v.normal);
                    o.tangentDir = normalize( mul( unity_ObjectToWorld, float4( v.tangent.xyz, 0.0 ) ).xyz );
                    o.bitangentDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
                    float node_6620_ang = 1.57;
                    float node_6620_spd = 1.0;
                    float node_6620_cos = cos(node_6620_spd*node_6620_ang);
                    float node_6620_sin = sin(node_6620_spd*node_6620_ang);
                    float2 node_6620_piv = float2(0.5,0.5);
                    float4 node_1583 = _Time + _TimeEditor;
                    float2 node_6620 = (mul((o.uv0+node_1583.g*float2(0.25,0))-node_6620_piv,float2x2( node_6620_cos, -node_6620_sin, node_6620_sin, node_6620_cos))+node_6620_piv);
                    float2 node_6051 = mul(unity_ObjectToWorld, v.vertex).rgb.rg;
                    float2 node_6156_skew = node_6051 + 0.2127+node_6051.x*0.3713*node_6051.y;
                    float2 node_6156_rnd = 4.789*sin(489.123*(node_6156_skew));
                    float node_6156 = frac(node_6156_rnd.x*node_6156_rnd.y*(1+node_6156_skew.x));
                    float4 node_2249 = _Time + _TimeEditor;
                    v.vertex.xyz += (normalize((float3(2,1,1)+v.normal))*o.vertexColor.r*sin(((o.vertexColor.b*3.141592654*(abs(fmod(node_6620.r,5.0))*(7.5+node_6156)))+(node_6156*node_2249.g)))*0.056);
                    o.posWorld = mul(unity_ObjectToWorld, v.vertex);
                    float3 lightColor = _LightColor0.rgb;
                    o.pos = mul(UNITY_MATRIX_MVP, v.vertex );
                    UNITY_TRANSFER_FOG(o,o.pos);
                    TRANSFER_VERTEX_TO_FRAGMENT(o)
                    return o;
                }
                float4 frag(VertexOutput i) : COLOR {
                    i.normalDir = normalize(i.normalDir);
                    float3x3 tangentTransform = float3x3( i.tangentDir, i.bitangentDir, i.normalDir);
                    float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
                    float3 _norml_var = UnpackNormal(tex2D(_norml,TRANSFORM_TEX(i.uv0, _norml)));
                    float3 normalLocal = _norml_var.rgb;
                    float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
                    float4 _color_var = tex2D(_color,TRANSFORM_TEX(i.uv0, _color));
                    clip(_color_var.a - 0.5);
                    float3 lightDirection = normalize(_WorldSpaceLightPos0.xyz);
                    float3 lightColor = _LightColor0.rgb;
                    float3 halfDirection = normalize(viewDirection+lightDirection);
    // Lighting:
                    float attenuation = LIGHT_ATTENUATION(i);
                    float3 attenColor = attenuation * _LightColor0.xyz;
    / Gloss:
                    float gloss = 0.5;
                    float specPow = exp2( gloss * 10.0+1.0);
    // Specular:
                    float NdotL = max(0, dot( normalDirection, lightDirection ));
                    float3 specularColor = _specularColor.rgb;
                    float3 directSpecular = (floor(attenuation) * _LightColor0.xyz) * pow(max(0,dot(halfDirection,normalDirection)),specPow)*specularColor;
                    float3 specular = directSpecular;
    /// Diffuse:
                    NdotL = max(0.0,dot( normalDirection, lightDirection ));
                    float3 directDiffuse = pow(max( 0.0, NdotL), _specular) * attenColor;
                    float3 indirectDiffuse = float3(0,0,0);
                    indirectDiffuse += UNITY_LIGHTMODEL_AMBIENT.rgb; // Ambient Light
                    indirectDiffuse += _anbient.rgb; // Diffuse Ambient Light
                    float3 diffuseColor = _color_var.rgb;
                    float3 diffuse = (directDiffuse + indirectDiffuse) * diffuseColor;
    /// Final Color:
                    float3 finalColor = diffuse + specular;
                    fixed4 finalRGBA = fixed4(finalColor,1);
                    UNITY_APPLY_FOG(i.fogCoord, finalRGBA);
                    return finalRGBA;
                }
                ENDCG
            }
            Pass {
                Name "FORWARD_DELTA"
                Tags {
                    "LightMode"="ForwardAdd"
                }
                Blend One One
                
                
                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
                #define UNITY_PASS_FORWARDADD
                #include "UnityCG.cginc"
                #include "AutoLight.cginc"
                #pragma multi_compile_fwdadd_fullshadows
                #pragma multi_compile_fog
                #pragma exclude_renderers gles3 metal d3d11_9x xbox360 xboxone ps3 ps4 psp2 
                #pragma target 3.0
                uniform float4 _LightColor0;
                uniform float4 _TimeEditor;
                uniform sampler2D _color; uniform float4 _color_ST;
                uniform sampler2D _norml; uniform float4 _norml_ST;
                uniform float4 _specularColor;
                uniform float _specular;
                struct VertexInput {
                    float4 vertex : POSITION;
                    float3 normal : NORMAL;
                    float4 tangent : TANGENT;
                    float2 texcoord0 : TEXCOORD0;
                    float4 vertexColor : COLOR;
                };
                struct VertexOutput {
                    float4 pos : SV_POSITION;
                    float2 uv0 : TEXCOORD0;
                    float4 posWorld : TEXCOORD1;
                    float3 normalDir : TEXCOORD2;
                    float3 tangentDir : TEXCOORD3;
                    float3 bitangentDir : TEXCOORD4;
                    float4 vertexColor : COLOR;
                    LIGHTING_COORDS(5,6)
                    UNITY_FOG_COORDS(7)
                };
                VertexOutput vert (VertexInput v) {
                    VertexOutput o = (VertexOutput)0;
                    o.uv0 = v.texcoord0;
                    o.vertexColor = v.vertexColor;
                    o.normalDir = UnityObjectToWorldNormal(v.normal);
                    o.tangentDir = normalize( mul( unity_ObjectToWorld, float4( v.tangent.xyz, 0.0 ) ).xyz );
                    o.bitangentDir = normalize(cross(o.normalDir, o.tangentDir) * v.tangent.w);
                    float node_6620_ang = 1.57;
                    float node_6620_spd = 1.0;
                    float node_6620_cos = cos(node_6620_spd*node_6620_ang);
                    float node_6620_sin = sin(node_6620_spd*node_6620_ang);
                    float2 node_6620_piv = float2(0.5,0.5);
                    float4 node_2231 = _Time + _TimeEditor;
                    float2 node_6620 = (mul((o.uv0+node_2231.g*float2(0.25,0))-node_6620_piv,float2x2( node_6620_cos, -node_6620_sin, node_6620_sin, node_6620_cos))+node_6620_piv);
                    float2 node_6051 = mul(unity_ObjectToWorld, v.vertex).rgb.rg;
                    float2 node_6156_skew = node_6051 + 0.2127+node_6051.x*0.3713*node_6051.y;
                    float2 node_6156_rnd = 4.789*sin(489.123*(node_6156_skew));
                    float node_6156 = frac(node_6156_rnd.x*node_6156_rnd.y*(1+node_6156_skew.x));
                    float4 node_2249 = _Time + _TimeEditor;
                    v.vertex.xyz += (normalize((float3(2,1,1)+v.normal))*o.vertexColor.r*sin(((o.vertexColor.b*3.141592654*(abs(fmod(node_6620.r,5.0))*(7.5+node_6156)))+(node_6156*node_2249.g)))*0.056);
                    o.posWorld = mul(unity_ObjectToWorld, v.vertex);
                    float3 lightColor = _LightColor0.rgb;
                    o.pos = mul(UNITY_MATRIX_MVP, v.vertex );
                    UNITY_TRANSFER_FOG(o,o.pos);
                    TRANSFER_VERTEX_TO_FRAGMENT(o)
                    return o;
                }
                float4 frag(VertexOutput i) : COLOR {
                    i.normalDir = normalize(i.normalDir);
                    float3x3 tangentTransform = float3x3( i.tangentDir, i.bitangentDir, i.normalDir);
                    float3 viewDirection = normalize(_WorldSpaceCameraPos.xyz - i.posWorld.xyz);
                    float3 _norml_var = UnpackNormal(tex2D(_norml,TRANSFORM_TEX(i.uv0, _norml)));
                    float3 normalLocal = _norml_var.rgb;
                    float3 normalDirection = normalize(mul( normalLocal, tangentTransform )); // Perturbed normals
                    float4 _color_var = tex2D(_color,TRANSFORM_TEX(i.uv0, _color));
                    clip(_color_var.a - 0.5);
                    float3 lightDirection = normalize(lerp(_WorldSpaceLightPos0.xyz, _WorldSpaceLightPos0.xyz - i.posWorld.xyz,_WorldSpaceLightPos0.w));
                    float3 lightColor = _LightColor0.rgb;
                    float3 halfDirection = normalize(viewDirection+lightDirection);
    // Lighting:
                    float attenuation = LIGHT_ATTENUATION(i);
                    float3 attenColor = attenuation * _LightColor0.xyz;
    / Gloss:
                    float gloss = 0.5;
                    float specPow = exp2( gloss * 10.0+1.0);
    // Specular:
                    float NdotL = max(0, dot( normalDirection, lightDirection ));
                    float3 specularColor = _specularColor.rgb;
                    float3 directSpecular = attenColor * pow(max(0,dot(halfDirection,normalDirection)),specPow)*specularColor;
                    float3 specular = directSpecular;
    /// Diffuse:
                    NdotL = max(0.0,dot( normalDirection, lightDirection ));
                    float3 directDiffuse = pow(max( 0.0, NdotL), _specular) * attenColor;
                    float3 diffuseColor = _color_var.rgb;
                    float3 diffuse = directDiffuse * diffuseColor;
    /// Final Color:
                    float3 finalColor = diffuse + specular;
                    fixed4 finalRGBA = fixed4(finalColor * 1,0);
                    UNITY_APPLY_FOG(i.fogCoord, finalRGBA);
                    return finalRGBA;
                }
                ENDCG
            }
            Pass {
                Name "ShadowCaster"
                Tags {
                    "LightMode"="ShadowCaster"
                }
                Offset 1, 1
                
                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
                #define UNITY_PASS_SHADOWCASTER
                #include "UnityCG.cginc"
                #include "Lighting.cginc"
                #pragma fragmentoption ARB_precision_hint_fastest
                #pragma multi_compile_shadowcaster
                #pragma multi_compile_fog
                #pragma exclude_renderers gles3 metal d3d11_9x xbox360 xboxone ps3 ps4 psp2 
                #pragma target 3.0
                uniform float4 _TimeEditor;
                uniform sampler2D _color; uniform float4 _color_ST;
                struct VertexInput {
                    float4 vertex : POSITION;
                    float3 normal : NORMAL;
                    float2 texcoord0 : TEXCOORD0;
                    float4 vertexColor : COLOR;
                };
                struct VertexOutput {
                    V2F_SHADOW_CASTER;
                    float2 uv0 : TEXCOORD1;
                    float4 posWorld : TEXCOORD2;
                    float3 normalDir : TEXCOORD3;
                    float4 vertexColor : COLOR;
                };
                VertexOutput vert (VertexInput v) {
                    VertexOutput o = (VertexOutput)0;
                    o.uv0 = v.texcoord0;
                    o.vertexColor = v.vertexColor;
                    o.normalDir = UnityObjectToWorldNormal(v.normal);
                    float node_6620_ang = 1.57;
                    float node_6620_spd = 1.0;
                    float node_6620_cos = cos(node_6620_spd*node_6620_ang);
                    float node_6620_sin = sin(node_6620_spd*node_6620_ang);
                    float2 node_6620_piv = float2(0.5,0.5);
                    float4 node_9812 = _Time + _TimeEditor;
                    float2 node_6620 = (mul((o.uv0+node_9812.g*float2(0.25,0))-node_6620_piv,float2x2( node_6620_cos, -node_6620_sin, node_6620_sin, node_6620_cos))+node_6620_piv);
                    float2 node_6051 = mul(unity_ObjectToWorld, v.vertex).rgb.rg;
                    float2 node_6156_skew = node_6051 + 0.2127+node_6051.x*0.3713*node_6051.y;
                    float2 node_6156_rnd = 4.789*sin(489.123*(node_6156_skew));
                    float node_6156 = frac(node_6156_rnd.x*node_6156_rnd.y*(1+node_6156_skew.x));
                    float4 node_2249 = _Time + _TimeEditor;
                    v.vertex.xyz += (normalize((float3(2,1,1)+v.normal))*o.vertexColor.r*sin(((o.vertexColor.b*3.141592654*(abs(fmod(node_6620.r,5.0))*(7.5+node_6156)))+(node_6156*node_2249.g)))*0.056);
                    o.posWorld = mul(unity_ObjectToWorld, v.vertex);
                    o.pos = mul(UNITY_MATRIX_MVP, v.vertex );
                    TRANSFER_SHADOW_CASTER(o)
                    return o;
                }
                float4 frag(VertexOutput i) : COLOR {
                    i.normalDir = normalize(i.normalDir);
                    float3 normalDirection = i.normalDir;
                    float4 _color_var = tex2D(_color,TRANSFORM_TEX(i.uv0, _color));
                    clip(_color_var.a - 0.5);
                    SHADOW_CASTER_FRAGMENT(i)
                }
                ENDCG
            }
        }
        FallBack "Diffuse"
        CustomEditor "ShaderForgeMaterialInspector"
    }
    



    还有要注意就是模型面数少的话调试的时候可能遇到动态批处理问题

    shader测试使用很少面数物体比如box进行测试的时候可能会遇到动态批处理产生的错误效果问题,
    常见的效果就是scene和game窗口看到的物体效果不一样,而且单个物体还行,多个物体的时候会发现有的物体会闪烁消失等等异常的发生都和动态批处理有关
    关于disablebatching引起的shader问题,其实只有很少面数的物体才需要关心,因为顶点超过900的物体根本不会被动态批处理

    下面普及下动态批处理,以当前版本为准,在老生常谈的里面加上一些新版本特性和自己的理解
    1批处理动态物体需要在每个顶点上进行一定的消耗,支持小于900顶点的网格物体。
       -1着色器使用顶点位置,法线和UV值三种属性,那么你只能批处理300顶点以下的物体;
       -2着色器使用顶点位置,法线,UV0,UV1和切向量,那你只能批处理180顶点以下的物体。
       -3这些可能都会随着版本变化,另外300顶点限制不是那么具体,有时候支持面数很少
    (这也意味着默认的有着标准材质的球体和胶囊体就没有动态批处理)

    2不同轴的缩放物体也支持批处理了,但是不能出现缩放“镜像”物体,比如x缩放是1和-1的,以前不支持不等比例缩放的动态批处理,现在支持了,比如一个是方块1:1:1的,另一个是长方体也可以批处理

    3使用不同材质的实例化物体(instance)将会导致批处理失败。但是物体可以在投影设置上随意不影响动态批处理。

    4拥有lightmap的物体含有额外(隐藏)的材质属性,比如:lightmap的偏移和缩放系数等。所以,拥有lightmap的物体将不会进行批处理(除非他们指向lightmap的同一部分)。

    5多pass的shader也影响动态批处理。比如说默认标准材质球有时候物体面数稍微高点是不能动态批处理的,但是用nature-speedtree的就可以批处理

    当然动态批处理后并不意味性能一定提高,在有些显卡上性能反而是下降的

    当然你模型面数多完全可以不考虑这个,这个一般是用在粒子之类有大量相同的物体上的,这里提到主要是因为box测试时遇到些问题

    具体规则官方参考
    https://docs.unity3d.com/Manual/DrawCallBatching.html

    展开全文
  • 动画讲解的是火力发电厂如何操作的,视频从最基础的朗肯循环的问题开始。你会看到发电机、汽轮机、冷凝器、给水泵、锅炉等在整个工作循环的作用!上汽西门子1000MW汽轮机结构示意动画part 1主机动画基本生产过程是:...

    原标题:火电厂各个设备视频及动画图大全, 值得收藏!

    动画讲解的是火力发电厂如何操作的,视频从最基础的朗肯循环的问题开始。你会看到发电

    机、汽轮机、冷凝器、给水泵、锅炉等在整个工作循环的作用

    上汽西门子1000MW汽轮机结构示意动画

    part 1主机动画

    30753c9281d60e7b9cb676e309624b50.gif

    基本生产过程是:燃料在燃烧时加热水生成蒸汽,将燃料的化学能转变成热能;蒸汽压力推动汽轮机旋转,热能转换成机械能;然后汽轮机带动发电机旋转,将机械能转变成电能。

    ae0f854187468655f8c04ccb52dee118.png

    基本系统如下:

    汽水系统

    cdd11464fbe14cf4b9f7def0965f782b.png

    火力发电厂的汽水系统是由锅炉、汽轮机、凝汽器、高低压加热器、凝结水泵和给水泵等组成,它包括汽水循环、化学水处理和冷却系统等。水在锅炉中被加热成蒸汽,经过加热器进一步加热后变成过热的蒸汽,再通过主蒸汽管道进入汽轮机。由于蒸汽不断膨胀,高速流动的蒸汽推动汽轮机的叶片转动从而带动发电机。为了进一步提高其热效率,一般都从汽轮机的某些中间级后抽出做过功的部分蒸汽,用以加热给水。在现代大型汽轮机组中都采用这种给水回热循环。

    此外,在超高压机组中还采用再热循环,即把做过一段功的蒸汽从汽轮机的高压缸的出口将做过功的蒸汽全部抽出,送到锅炉的再热汽中加热后再引入汽轮机的中压缸继续膨胀做功,从中压缸送出的蒸汽,再送入低压缸继续做功。在蒸汽不断做功的过程中,蒸汽压力和温度不断降低,最后排入凝汽器并被冷却水冷却,凝结成水。凝结水集中在凝汽器下部由凝结水泵打至低压加热器加热再经过除氧器除氧,给水泵将预加热除氧后的水送至高压加热器,经过加热后的热水加入锅炉,在过热器中把水加热到过热蒸汽,送至汽轮机做功。这样周而复始不断的做功。在汽水系统中的蒸汽和凝结水,由于疏通管道很多并且还要经过许多的阀门设备,这样就难免产生跑、冒、滴、漏等现象,这些现象都会或多或少地造成水的损失,因此我们必须不断地向系统中补充经过化学处理过的软化水,这些补给水一般都补入除氧器中。

    燃烧系统

    ac05f174aa00ae79faa6afa1d3392d20.png

    燃烧系统是由输煤、磨煤、粗细分离、排粉、给粉、锅炉、除尘、脱硫等组成。是由皮带输送机从煤场通过电磁铁、碎煤机送到煤仓间的煤斗内,再经过给煤机进入磨煤机进行磨粉,磨好的煤粉通过空气预热器来的热风,将煤粉打至粗细分离器,粗细分离器将合格的煤粉(不合格的煤粉送回磨煤机),经过排粉机送至粉仓,给粉机将煤粉打入喷燃器送到锅炉进行燃烧。而烟气经过电除尘脱出粉尘再将烟气送至脱硫装置,通过石浆喷淋脱出硫的气体经过吸风机送到烟筒排入天空。

    f1a08baf2d7bd026cae1791940f9e417.png

    发电系统

    发电系统是由副励磁机、励磁盘、主励磁机(备用励磁机)、发电机、变压器、高压断路器、升压站、配电装置等组成。发电是由副励磁机(永磁机)发出高频电流,副励磁机发出的电流经过励磁盘整流,再送到主励磁机,主励磁机发出电后经过调压器以及灭磁开关经过碳刷送到发电机转子。发电机转子通过旋转其定子线圈感应出电流,强大的电流通过发电机出线分两路,一路送至厂用电变压器,另一路则送到SF6高压断路器,由SF6高压断路器送至电网。

    part2 各种泵的原理图

    8fc8994eb0a4fdf54b2fd4245b3063bd.gif

    双动往复泵

    8448e463466e7c04b989218260af368b.gif

    蒸汽喷射泵

    8042eab13035865baaa4cd0348f128b3.gif

    旋涡泵

    e167f8709dec1023b41bbbfb79632cbf.gif

    轴流管道泵

    ec883d74e0fc68cac4519750b8d66473.gif

    水环式真空泵

    cce3e8bfb54fc543155c2ba755047b7f.gif

    离心泵

    cd8582ccd9faa1e31d0482044b5acd60.gif

    单作用叶片泵工作原理

    2b8b57dbb75c790ca87f29fb69d9f316.gif

    外啮合齿轮泵工作原理

    386bfb4dd6c5b77a806bb544a540d175.gif

    螺杆泵

    310f4289dc494c082f22299019fcb805.gif

    轴向柱塞泵

    0e2eada554989f18901f31add5af3c10.gif

    离心泵原理

    5c76141b27f949e2a6d3f3ff2b1f19da.gif

    9fdda92b9dbc2ebc39b3dc294ab1a664.gif

    e414b5c3c53e72a29fadcb7d7e61bb54.gif

    da022cee5c2d215dc2abe2e0cb9f40a2.gif

    罗茨真空泵

    179a2a2f62f2033e6734eb3c7b674c26.gif

    单柱塞式液压泵(化工707制作)

    part3 各种回路控制原理图

    904feda1625f2fa7629c1e73537fe447.gif

    蓄能器保压回路

    9cf91d3a3a44d6f3e459c7440511177d.gif

    蓄能器的快速运动回路

    056ae62a3ffb8af1a0216bb72b1127a4.gif

    阀中位卸荷回路

    6a1ae76e951e53549968c0be7c0d095b.gif

    自动补油保压回路

    8c76859c59b5a9001480330c912a0811.gif

    调速阀并联速度切换回路

    eef8fdbc4fc9ab5ff66d5bb7f8afa1b7.gif

    进油节流调速回路之低速

    58c5060e1d1c6e961d394902a468fa97.gif

    进油节流调速回路之高速

    fa820cc1d50689ad5f43a591c53b59bf.gif

    进油节流调速回路之节流过重

    3d77c5c3ec3a5e63509e7c28d84a0f82.gif

    行程阀速度换接回路

    e60e38b7af845c32e27787b2366487b7.gif

    湿法脱硫工艺流程图

    06e07eb836089b729aab564280144e6b.gif

    发动机正常及外部短路

    491555db7b3c883e57fb6009c2c4e7e9.gif

    发动机内部短路

    part4 各种阀门原理图

    d2419821cb4672cb22288e59d1ab36e0.gif

    直动式溢流阀

    e3f6bf4209f088bb7258fb31fa624acd.gif

    液动滑阀

    384c083797bb154319929ae5485ee4fa.gif

    先导式溢流阀

    ebefac9c59cd02858f389e209446e631.gif

    先导式溢流阀卸荷

    af9350a1d737f542535f67946b6dad90.gif

    三位五通换向阀

    2ec946c2466794c89a974523b19cba67.gif

    普通单向阀工作原理

    cbb3dc8f85c563b1ba4df3bd3fc982ec.gif

    换向阀的位通

    c0964408b7a2a7f4a78824f21b9655f5.gif

    电磁阀

    33e2918b3ef5404cffb11dd5c5507961.gif

    调速阀

    292b55adcdd0812373eff453bc4ef979.gif

    减压阀

    49f57ce800e16ed1fd1a66eb7e6ad6a5.gif

    节流阀

    cc47cc11dad4eff6db89722f213eff58.gif

    顺序阀

    5716c0cf02e253eb69501fb74b647627.gif

    外控内泻顺序阀

    来源:化工707、腾讯视频等

    他还看过

    个项目,总投资逾380亿,江苏省生活垃圾焚烧发电厂拟建项目表!

    2.你能用的上的证书,都在这里了!

    3.电厂月薪4000相当于八十年代的多少?

    4.沙漠中没有水,火电厂冷却水何来?

    5.重磅:6月1日起,特种设备作业人员35个项目无需再取证返回搜狐,查看更多

    责任编辑:

    展开全文
  • 二维卡通笔刷水墨液体烟雾爆炸干扰蒙版遮罩MG图形转场动画元素包 Mega Transition Pack,使用简单方便,效果非常棒,欢迎下载。 素材信息: 适用系统:Windows 和 Mac 系统 分辨率:3840×2160 4K 帧速率:25 帧fps ...

    二维卡通笔刷水墨液体烟雾爆炸干扰蒙版遮罩MG图形转场动画元素包 Mega Transition Pack,使用简单方便,效果非常棒,欢迎下载。

    素材信息:

    适用系统:Windows 和 Mac 系统

    分辨率:3840×2160 4K

    帧速率:25 帧fps

    素材格式:.MOV视频

    视频编码:Photo PNG + Alpha

    通道信息:有透明通道 Alpha Channel

    是否循环:否

    传送格式:.zip文件(1个)

    支持的软件有:Final Cut Pro,Final Cut Pro X,Apple Motion,Premiere Pro,After Effects,FCPX,Nuke,Smoke,Avid,Vegas,Edius 等其他后期视频制作软件。

    展开全文
  • 二维卡通笔刷水墨液体烟雾爆炸干扰蒙版遮罩MG图形转场动画元素包 Mega Transition Pack,使用简单方便,效果非常棒,欢迎下载。 素材信息: 适用系统:Windows 和 Mac 系统 分辨率:3840×2160 4K 帧速率:25 帧fps ...

    二维卡通笔刷水墨液体烟雾爆炸干扰蒙版遮罩MG图形转场动画元素包 Mega Transition Pack,使用简单方便,效果非常棒,欢迎下载。

    素材信息:

    适用系统:Windows 和 Mac 系统

    分辨率:3840×2160 4K

    帧速率:25 帧fps

    素材格式:.MOV视频

    视频编码:Photo PNG + Alpha

    通道信息:有透明通道 Alpha Channel

    是否循环:否

    传送格式:.zip文件(1个)

    支持的软件有:Final Cut Pro,Final Cut Pro X,Apple Motion,Premiere Pro,After Effects,FCPX,Nuke,Smoke,Avid,Vegas,Edius 等其他后期视频制作软件。

    展开全文
  • 精通DirectX.3D图形与动画程序设计.pdf

    热门讨论 2013-02-17 16:40:18
    中文名: 精通DirectX 3D图形与动画程序设计 原名: 精通DirectX 3D图形与动画程序设计 别名: 游戏编程, 游戏开发 作者: 王德才 资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社书号: 9787115159717发行时间: 2007...
  • 全职动画特别篇第一集讨论集中贴 讨论到这来,请不要撕起来,撕撕开删楼小黑屋。请理智讨论!请理智讨论!请理智讨论… <span class="times">213 全职高手...
  • VB模拟洗衣机,哈哈,还没听说过吧,可模拟出洗衣机自动加水抽的功能,还有动画演示效果,符合VB结构化程序的特点,简单易懂,同时采用了通用的小游戏循环方式。代码片段:  Dim WarterHeight As Single '高度...
  • 还可以设置提醒时音乐及动画(如办公室体操),协助您保护健康。而为保证强制的有效,特别加入了防止非正常关闭、卸载,注销自动续时的功能。 水滴电脑闹钟定时提醒软件 1.4.0 更新日志: . 增加可设置键盘鼠标静止...
  • 也许看到这个图,你就不想再继续看下去了,心想这个动画很简单啊,不就是创建循环创建view,再给每个view的动画,每个view的开始运动的方向随机,再给一个加速器就搞定了嘛,如果你也是这样想那就该把这个文章看完了...
  • 目录1 UV动画1.1 滑动表面着色器1.2 让UV流动1.3 流动方向1.4 定向滑动2 无缝循环2.1 混合权重2.2 跷跷板2.3 时间偏移2.4 结合两个不同的扭曲2.5 UV跳...
  • 144 用条件语句和goto语句构造循环 145 介绍while循环 146 使用continue和break语句 147 介绍do while循环 148 介绍for循环 149 理解循环内的作用域 第十二章 switch语句 150 理解switch语句 151 使用case和default...
  • 144 用条件语句和goto语句构造循环 145 介绍while循环 146 使用continue和break语句 147 介绍do while循环 148 介绍for循环 149 理解循环内的作用域 第十二章 switch语句 150 理解switch语句 151 使用case和default...
  • 144 用条件语句和goto语句构造循环 145 介绍while循环 146 使用continue和break语句 147 介绍do while循环 148 介绍for循环 149 理解循环内的作用域 第十二章 switch语句 150 理解switch语句 151 使用case和default...
  • 144 用条件语句和goto语句构造循环 145 介绍while循环 146 使用continue和break语句 147 介绍do while循环 148 介绍for循环 149 理解循环内的作用域 第十二章 switch语句 150 理解switch语句 151 使用case和default...
  • 游戏大题逻辑:加入场景,加入小鸟 游戏开始,不断的向场景中加入水管,小鸟受物理影响有一个向下的重力,每点击一下屏幕 给小鸟一个向上的力,小鸟的x值保持不动,... 小鸟身上有一个循环动画,暂且不和向上或向...
  • 有时候我们需要实现晃动的效果,其实我们可以通过css...内层div颜色设置为白色,加上圆角,圆角建议30%-45%之间,然后加上无限循环的旋转动画,通过内层div的旋转来实现波浪效果。 参考代码如下: <style>...
  • 【点这里领取资料】▼...基本系统如下:汽水系统火力发电厂的汽水系统是由锅炉、汽轮机、凝汽器、高低压加热器、凝结水泵和给水泵等组成,它包括汽水循环、化学处理和冷却系统等。在锅炉中被加热成蒸汽,经过加...
  • 设计模型切换 循环 等待 等要素 再比如图片和文字动画 ppt实现 问答,问在动画切换中,体现了什么核心素养 在课堂上,如何实现分层教学 后面是技能考察环节 考试的基本都是大学计算机文化基础题目 还有编程 难度就是...
  • 在模型的身上加入波光的感觉,是通过纹理动画来实现的,其原理是给模型增加一个纹理,并循环的移动纹理贴图寻址的UV坐标,这样贴在模型表面的纹理就会按照不断变化的UV值来产生出贴图运动的效果。下面我们来实际做...
  • 在模型的身上加入波光的感觉,是通过纹理动画来实现的,其原理是给模型增加一个纹理,并循环的移动纹理贴图寻址的UV坐标,这样贴在模型表面的纹理就会按照不断变化的UV值来产生出贴图运动的效果。下面我们来实际做...
  • Layman游戏引擎(layman) 外行的简单3D引擎。 特征 C11,可在Windows,Linux和Mac上移植。 高分辨率时钟,用于经过时间的计算。 基于物理的渲染(金属/粗糙度和镜面/光泽度工作流程)。 分析灯和基于图像的...
  • 1.在编辑中有很多对帧的操作如:增加删除、循环、反转,特别是移除重复帧功能,能很好的减小gif占用内存大小; 2.而在图片选项中则包含了水印、微动、模糊、字幕、自由文本、自由绘制等功能; 3.ScreenToGif还支持...
  • 12_动画原理 13_关键帧、普通帧和空白关键帧 14_创建动画 15_定义帧频 16_渐变动画 17_颜色面板 18_时间轴(1) 19_时间轴(2) 20_图形元件 21_图形元件动画 22_按钮的创建 23_按钮作用区域 24_影片剪辑...
  • - 日/夜循环。 - 用于快速导航的可选小地图。 - 在2D和3D视口模式之间平滑的运行时切换 -动态的国家和省标签以及对地形的自适应文本。 - 使用TextMesh Pro的带有弯曲文本的智能国家/地区标签放置算法! -画线...

空空如也

空空如也

1 2 3 4 5
收藏数 91
精华内容 36
关键字:

循环水动画