WPF特效-鱼游动动画

WPF特效-鱼游动动画

原文:
WPF特效-鱼游动动画

  实现思路:

          通过VisualBrush Binding方式获取鱼局部图像,在Viewport3D中创建ModelVisual3D块并把获取到的局部图通过VisualBrush Binding方式赋值。然后对ModelVisual3D块写3D 动画

          我的鱼原始图:WPF特效-鱼游动动画WPF特效-鱼游动动画

实现的效果:

                     WPF特效-鱼游动动画

 其他套路:

      序列图动画帧循环加载。

       查阅资源,几乎都是在3DMax 或者Unity中实现,未找到纯靠代码实现的可参考的c# 或WPF版。 

其他参考:

   
                        <GeometryModel3D.Material>
                            <DiffuseMaterial>
                                <DiffuseMaterial.Brush>
                                    <VisualBrush Visual="{Binding ElementName=GdTailZm}"/> 
                                </DiffuseMaterial.Brush>
                            </DiffuseMaterial>
                        </GeometryModel3D.Material>


 <Grid Width=”200″ Height=”164″>
        <Grid x:Name=”GdBaseFishZm” Background=”Transparent” Opacity=”0″>
            <Grid x:Name=”GdMainZm” Background=”Transparent”>
                <Image x:Name=”ImgMainZm” Margin=”20″/>
            </Grid>
            
        </Grid>
        <Rectangle x:Name=”RectFrontZm”>
            <Rectangle.Fill>
                <VisualBrush Visual=”{Binding ElementName=GdMainZm}”/>
            </Rectangle.Fill>
            <Rectangle.Clip>
                <RectangleGeometry Rect=”0,50,141,114″/>
            </Rectangle.Clip>
        </Rectangle>
        <Grid Opacity=”0″>
            <Grid x:Name=”GdTailZm” Background=”Transparent”>
                <Rectangle x:Name=”RectTailZm”>
                    <Rectangle.Fill>
                        <VisualBrush Visual=”{Binding ElementName=GdMainZm}”/>
                    </Rectangle.Fill>
                    <Rectangle.Clip>
                        <RectangleGeometry Rect=”140,0,60,164″/>
                    </Rectangle.Clip>
                </Rectangle>
            </Grid>
        </Grid>

        <Grid Opacity=”0″>
            <Grid x:Name=”GdUpZm” Background=”Transparent”>
                <Rectangle x:Name=”RectUpZm”>
                    <Rectangle.Fill>
                        <VisualBrush Visual=”{Binding ElementName=GdMainZm}”/>
                    </Rectangle.Fill>
                    <Rectangle.Clip>
                        <RectangleGeometry Rect=”0,0,160,50″/>
                    </Rectangle.Clip>
                </Rectangle>
            </Grid>
        </Grid>

        <Viewport3D>
            <Viewport3D.Camera>
                <PerspectiveCamera Position=”0,0,1.3″ LookDirection=”0,0,-1″ FieldOfView=”75″/>

            </Viewport3D.Camera>

            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <Model3DGroup>
                        <AmbientLight Color=”White”/>
                    </Model3DGroup>
                </ModelVisual3D.Content>
            </ModelVisual3D>

            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <GeometryModel3D>
                        <GeometryModel3D.Geometry>
                            <MeshGeometry3D Positions=”-1,-0.82,0  1,-0.82,0 1,0.82,0 -1,0.82,0″
                                            TriangleIndices=”0,1,2 0,2,3″  TextureCoordinates=”0 1 1 1 1 0 0 0″>
                            </MeshGeometry3D>
                        </GeometryModel3D.Geometry>
                        <GeometryModel3D.Material>
                            <DiffuseMaterial>
                                <DiffuseMaterial.Brush>
                                    <VisualBrush Visual=”{Binding ElementName=GdUpZm}”/>
                                </DiffuseMaterial.Brush>
                            </DiffuseMaterial>
                        </GeometryModel3D.Material>
                        <GeometryModel3D.Transform>
                            <Transform3DGroup>
                                <RotateTransform3D>
                                    <RotateTransform3D.Rotation>
                                        <AxisAngleRotation3D x:Name=”FishUpAxis” Axis=”1 0 1″ Angle=”-3″/>
                                    </RotateTransform3D.Rotation>
                                </RotateTransform3D>
                            </Transform3DGroup>
                        </GeometryModel3D.Transform>
                    </GeometryModel3D>
                </ModelVisual3D.Content>
            </ModelVisual3D>
            

          
        </Viewport3D>

        <Viewport3D>
            <Viewport3D.Camera>
                <PerspectiveCamera Position=”0,0,1.3″ LookDirection=”0,0,-1″ FieldOfView=”75″/>

            </Viewport3D.Camera>

            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <Model3DGroup>
                        <AmbientLight Color=”White”/>
                    </Model3DGroup>
                </ModelVisual3D.Content>
            </ModelVisual3D>
            
            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <GeometryModel3D>
                        <GeometryModel3D.Geometry>
                            <MeshGeometry3D Positions=”-1,-0.82,0  1,-0.82,0 1,0.82,0 -1,0.82,0″
                                            TriangleIndices=”0,1,2 0,2,3″  TextureCoordinates=”0 1 1 1 1 0 0 0″>
                            </MeshGeometry3D>
                        </GeometryModel3D.Geometry>
                        <GeometryModel3D.Material>
                            <DiffuseMaterial>
                                <DiffuseMaterial.Brush>
                                    <VisualBrush Visual=”{Binding ElementName=GdTailZm}”/>
                                </DiffuseMaterial.Brush>
                            </DiffuseMaterial>
                        </GeometryModel3D.Material>
                        <GeometryModel3D.Transform>
                            <Transform3DGroup>
                                <RotateTransform3D CenterX=”0.38″>
                                    <RotateTransform3D.Rotation>
                                        <AxisAngleRotation3D x:Name=”FishTailAxis” Axis=”0 1 0″ Angle=”-70″/>
                                    </RotateTransform3D.Rotation>
                                </RotateTransform3D>
                            </Transform3DGroup>
                        </GeometryModel3D.Transform>
                    </GeometryModel3D>
                </ModelVisual3D.Content>
            </ModelVisual3D>

        </Viewport3D>

    </Grid>
                     


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101492.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • windows安装kafka教程

    windows安装kafka教程1、官网下载kafka【解压之后如图所示】2、修改zookeeper的配置文件dataDir=D:/zookeeper/datadataLogDir=D:/zookeeper/log3、启动zookeepercdD:\software\kafka\kafka_2.11-2.2.0\bin\windows在此目录下打开cmd,执行命令zookeeper-server…

    2022年10月16日
    4
  • 股票软件受限解决方法[通俗易懂]

    股票软件受限解决方法[通俗易懂]现在很多内网都限制了股票软件的连接,WAYSONLINE除了游戏,股票软件也可代理,下面给大家分享一下具体使用。WaysonlineV3.0(以下简称V3)采用全新独创设计和高效编码,结合最新网络技术,已包含SocksCap/e-border/PSD等所有拦截功能,无需另外安装第三方软件,实现透明代理(类似VPN),即无需进行复杂的代理设置,即实现应用和游戏网络代理加速。

    2022年6月24日
    36
  • 单点登录原理与简单实现(单点登录原理)

    GitHub:https://github.com/sheefee/simple-sso一、单系统登录机制1、http无状态协议  web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系  但这也同时意味着,任何用户都能通…

    2022年4月14日
    41
  • db2有没有rownum_row_number() over order by

    db2有没有rownum_row_number() over order byrank和rownumber都是自动生成序号,后面都可以跟partitionby分组和orderby排序。不同之处在于,rownumber在orderby后面的字段,排序字段数值相等时,rownumber字段依次递增。   rank在orderby后面的字段,排序字段数值相等时,rownumber都相同,直接跳到下一个不同的序号。selectrank

    2022年5月3日
    86
  • webapp开发框架选择注意点[通俗易懂]

    webapp开发框架选择注意点[通俗易懂]webapp开发框架选择需要注意:第一步:开发支持的语言类型根据前端开发人员的能力,来选择webapp开发框架。例如:前端人员只会写react就要求webapp开发框架支持react。第二步:查看webapp开发框架文档是否齐全例如:功能性API的详细使用文档和示例等插件功能示例代码第三步:确认webapp开发框架能否满足项目需求确认APP的功能是否都能满足,开发难易程度开发的APP复杂度、功能是否能满足,交互比较多,业务逻辑比较复杂,找到对应功能点,提前确

    2022年6月15日
    29
  • Eclipse乱码解决办法「建议收藏」

    Eclipse乱码解决办法「建议收藏」
    转载于:http://developer.51cto.com/art/200906/126861.htm
     
    1、eclipse的编码不能改成GBK
    解决办法:
    gedit/var/lib/locales/supported.d/zh
    加入这一行:
    zh_CN.GBKGBK
    保存之后再启动eclipse,就可以把编码改成GBK了,不过还是要手工输入,不能选。
    2、在eclipse有中文的文件保存为乱码

    2022年5月25日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号