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>
                     


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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 阿里云异构计算产品是如何保障双11业务的

    阿里云异构计算产品是如何保障双11业务的

  • STM32F103使用标准库移植RT-Thread标准版的Finsh

    STM32F103使用标准库移植RT-Thread标准版的Finshrtt标准版中stm32的bsp使用的是HAL库,现在想换成标准库。相比于rttnano的移植来说,和标准版的移植还是有不小的差别的,至少我个人这么认为。nano在移植过程中只需要按照#error提示修改好board.c即可。当然如果需要使用finsh的话,你还需要补充完成finsh_board.c和串口的一些信号,具体参见官方文档。整个流程还是相当清晰的,工作量也不大。移植标准版的另一个原因是我想使用ATClient。刚开始我尝试直接向nano版本中进行添加,但似乎…

  • 使用Fiddler进行Mock测试

    使用Fiddler进行Mock测试目录1、接口抓包2、复制该接口数据到本地3、修改你要mock的数据4、替换json文件1)在websession面板中找到对应的请求,然后将其拖到AutoResponder面板中。2)在RuleEditor中单击“Findafile…”,选择本地json文件的路径。5、激活规则6、save,刷新页面1、接口抓包找到要mock的接口,打开fiddler抓包以某某接口为例,找到下面的接口http://XXX/SYSTEMS2、复制该接口数据到本..

  • LOAM, ALOAM, LegoLOAM, hdl graph slam比较

    LOAM, ALOAM, LegoLOAM, hdl graph slam比较A-LOAMLOAM:•LOAMuseanewdefinedfeaturesystem(cornerandflatpoint),forthedetailseeitsarticle.•LOAMsupposelinearmotionwithinthescanswap(VLOAMfurtherusesvisualodometrytoe…

    2022年10月31日
  • JVM内存结构详解

    JVM内存结构详解文章目录一、你了解JVM内存模型吗在这之前需要知道JVM内存模型图——JDK1.81.1、程序计数器1.2、Java虚拟机栈(Stack)1.1.1、java.lang.StackOverflowError问题1.3、本地方法栈1.4、元空间(MetaSpace)1.4.1、MetaSpace相比PermGen的优势1.5、Java堆(Heap)二、JVM三大性能调优参数-Xms-Xmx-X…

  • 函数之递归[通俗易懂]

    递归前戏在讲今天的内容之前,我们先来讲一个故事,讲的什么呢?从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?从前有座山,山里有座

发表回复

您的电子邮箱地址不会被公开。

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