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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 老板让只懂Java基本语法的我,基于AQS实现一个锁

    老板让只懂Java基本语法的我,基于AQS实现一个锁

    2020年11月20日
    187
  • JSTL+EL表达式方法获取Oracle的Clob字段内容[通俗易懂]

    JSTL+EL表达式方法获取Oracle的Clob字段内容

    2022年3月11日
    122
  • 软件测试外包公司有哪些_工程资料外包的坏处

    软件测试外包公司有哪些_工程资料外包的坏处一、前言:什么是软件测试外包随着最近10年创业风气的发起,已经涌起创业项目外包公司的兴起,已经不仅仅局限为了降低成本,更多的是为了解决自己雇佣技术人员或者无法管理技术人员的难题。那么外包是什么意思呢?似乎大家对外包都闻之色变!这里我们详细的认识一下什么是外包?外包类似中介派遣公司或者叫做劳务输出公司。就是我们公司把你招聘进来,但是又把你派到其他公司(甲方)工作。但是最终你的劳务合同…

    2025年7月28日
    2
  • Ubuntu彻底卸载pycharm的方法[通俗易懂]

    Ubuntu彻底卸载pycharm的方法[通俗易懂]1.查看配置信息位置首先在解压的pycharm-2020.2.1文件夹中,查看Install-Linux-tar.txt,找到配置信息的位置(下图中蓝色标识)。2.卸载安装文件首先找到安装文件所在的目录,cd切换至其目录,然后sudorm-rfpycharm-2020.2.13.删除配置信息依次cd切换至Pycharm2020.2的位置,然后rm删除掉该用户使用记录,即能实现完全卸载。…

    2022年8月27日
    4
  • python提取时间段日期_timestamp时间戳

    python提取时间段日期_timestamp时间戳在python开发web程序时,需要调用第三方的相关接口,在调用时,需要对请求进行签名。需要用到unix时间戳。在python里,在网上介绍的很多方法,得到的时间戳是10位。而java里默认是13位(milliseconds,毫秒级的)。下面介绍python获得时间戳的方法:1、10时间戳获取方法:>>>importtime>>>t=time.tim…

    2022年10月2日
    3
  • sop流程图模板_这是一份标准作业流程SOP详解,附流程图绘制规范,不愁不会画!…「建议收藏」

    sop流程图模板_这是一份标准作业流程SOP详解,附流程图绘制规范,不愁不会画!…「建议收藏」注:资料来源百度、档即用网,品质人生质量开讲平台搜集、整理、编辑,仅供学习交流所用,请勿做其他用途!小编辛苦整理,转载请注明出处。什么是SOP?StandardOperationProcedure所谓SOP,是StandardOperationProcedure三个单词中首字母的大写,即标准作业程序。是以文件的形式描述作业员在生产作业过程中的操作步骤和应遵守的事项;是作业员的作业指导书…

    2022年5月26日
    173

发表回复

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

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