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


相关推荐

  • oracle数据文件恢复 步骤_oracle数据库文件扩展名

    oracle数据文件恢复 步骤_oracle数据库文件扩展名1、基于linux操作系统文件恢复条件:1、误强制删除linux下的数据文件(rm-rf)。2、未重启数据库或操作系统。3、数据库是归档模式恢复原理:句柄恢复文件–因为我们的操作系统是linux,当数据文件从操作系统级别被rm掉,但之前打开该文件的进程仍然持有相应的文件句柄,所以指向的文件仍然可以读写,并且该文件的文件描述符可以从/proc目录中获得。…

    2022年9月23日
    0
  • 50个高端大气上档次的管理后台界面模板

    50个高端大气上档次的管理后台界面模板

    2021年11月17日
    71
  • datagrip2020激活码mac_通用破解码

    datagrip2020激活码mac_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    43
  • 水牛城66有看点不_acwing是什么

    水牛城66有看点不_acwing是什么给定一张 L 个点、P 条边的有向图,每个点都有一个权值 f[i],每条边都有一个权值 t[i]。求图中的一个环,使“环上各点的权值之和”除以“环上各边的权值之和”最大。输出这个最大值。注意:数据保证至少存在一个环。输入格式第一行包含两个整数 L 和 P。接下来 L 行每行一个整数,表示 f[i]。再接下来 P 行,每行三个整数 a,b,t[i],表示点 a 和 b 之间存在一条边,边的权值为 t[i]。输出格式输出一个数表示结果,保留两位小数。数据范围2≤L≤1000,2≤P≤50

    2022年8月9日
    4
  • Java 8 中 LocalDate 与Date 互相转换

    Java 8 中 LocalDate 与Date 互相转换//01.java.util.Date–>java.time.LocalDateTimepublicvoidUDateToLocalDateTime(){java.util.Datedate=newjava.util.Date();Instantinstant=date.toInstant();ZoneIdzone=ZoneId.systemDef…

    2022年10月3日
    0
  • IntelliJ IDEA输出打印System.out.println()的快捷键[通俗易懂]

    IntelliJ IDEA输出打印System.out.println()的快捷键[通俗易懂]在eclipse中习惯了使用syso,开始用idea很不习惯。在idea中直接输入sout,自动出现提示,不像eclipse中那样还要alt+/,这算是idea的一个优点了。sout看图:按Tab或Enter都可以出现…

    2022年10月2日
    0

发表回复

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

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