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)
上一篇 2021年6月10日 下午6:00
下一篇 2021年6月10日 下午7:00


相关推荐

  • SpringWS创建webservice服务端及客户端

    SpringWS创建webservice服务端及客户端一、服务端下图主要目录结构,这个是完整的,下面,我们就来构建1.1、创建springinitializr,下一步1.2选中springweb,下一步,最后创建1.3导入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web- services&

    2022年10月3日
    4
  • Tile光栅化

    Tile光栅化站在老罗的肩膀上 https blog csdn net luoshengyang article details CCLayerTree 的绘制指令存储在 displayitem 的 paint op buffer 中 要将绘制指令打包送入 GPU 如下 开始准备光栅化的条件 boolSchedule ShouldPrepar

    2026年3月26日
    3
  • 动态规划:最长上升子序列(二分算法 nlogn)「建议收藏」

    动态规划:最长上升子序列(二分算法 nlogn)「建议收藏」解题心得:1、在数据量比较大的时候n^2会明显超时,所以可以使用nlogn的算法,此算法少了双重循环,用的lower_bound(二分法)。2、lis中的数字并没有意义,仅仅是找到最小点lis[0]和最大点lis[len],其中,在大于lis[len]时len++,在小于lis[len]时可以将arr[i]在lis中的数进行替换掉。所以此算法主要是在不停的找最合适的起点和最合适的终点。

    2022年6月11日
    37
  • 一文读懂C++虚继承的内存模型

    一文读懂C++虚继承的内存模型一文读懂C++虚继承的内存模型1、前言2、多继承存在的问题3、虚继承简介4、虚继承在标准库中的使用5、虚继承下派生类的内存布局解析6、总结1、前言C++虚继承的内存模型是一个经典的问题,其具体实现依赖于编译器,可能会出现较大差异,但原理和最终的目的是大体相同的。本文将对g++中虚继承的内存模型进行详细解析。2、多继承存在的问题C++的多继承是指从多个直接基类中产生派生类的能力,多继承的派生类继承了所有父类的成员。从概念上来讲这是非常简单的,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突

    2022年6月7日
    32
  • CentOS7 网络配置超详细ip、网关设置

    CentOS7 网络配置超详细ip、网关设置CentOS7网络配置一、在虚拟机中安装CentOS操作系统安装好虚拟机创建新的虚拟机,选择自定义(高级),点击下一步虚拟机硬件兼容性默认,浏览需要安装的CentOS6.5镜像文件自定义用户名和密码(用于登录)设置虚拟机名称和存储路径处理器设置默认(后面可以修改),内存设为1GB网络类型选择NAT模式选择创建新虚拟磁盘最大磁盘大小设为20GB,然后将虚拟磁盘存储为单个文件将创建好的磁盘文件存储在虚拟机指定目录下虚拟机创建完成二、虚拟网络配置编辑虚拟网络设置

    2022年6月14日
    86
  • java中StringBuilder的用法小结

    java中StringBuilder的用法小结java 中 StringBuilde 的用法小结

    2026年3月26日
    2

发表回复

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

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