WPF 3D Cube及点击交互

本文介绍了如何在WPF中构建3D立方体并实现点击交互。通过两种不同的方法,包括常见模式和使用3DTools.dll库,详细阐述了立方体的构建过程和点击事件的绑定。提供了相关效果图和源码下载链接。
摘要由CSDN通过智能技术生成

       在WPF中构建一个简单的立方体比较容易实现,可参考资料也比较众多。比较麻烦的是处理点击交互。

       我在WPF中用两种方式实现了3DCube,效果图如下:

Cube3D1.gif

Cube3D2.gif

 

方式一: 最常见的3D内容构建模式,结构如下图。

image.png

参考

<Viewport3D SnapsToDevicePixels="True" ClipToBounds="True"
                    RenderTransformOrigin="0.5 0.5" RenderOptions.EdgeMode="Aliased" 
                    RenderOptions.CachingHint="Cache">
            <!--Camera-->
            <Viewport3D.Camera>
                <PerspectiveCamera x:Name="CameraMain" Position="4,4,6" UpDirection="0,1,0" LookDirection="-4,-4,-6" 
                                       NearPlaneDistance="1" FarPlaneDistance="100" FieldOfView="120">
                    <PerspectiveCamera.Transform>
                        <Transform3DGroup>
                            <RotateTransform3D>
                                <RotateTransform3D.Rotation>
                                    <AxisAngleRotation3D x:Name="CameraRotate" Axis="0,1,0" Angle="0"/>
                                </RotateTransform3D.Rotation>
                            </RotateTransform3D>
                            <ScaleTransform3D />
                        </Transform3DGroup>
                    </PerspectiveCamera.Transform>
                </PerspectiveCamera>
            </Viewport3D.Camera>
            <!--Light-->
            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <Model3DGroup>
                        <AmbientLight Color="White"></AmbientLight>
                        <DirectionalLight Color="White"  Direction="4,6,-6"/>
                    </Model3DGroup>
                </ModelVisual3D.Content>
            </ModelVisual3D>
            <!--六个面-->
            <ModelVisual3D x:Name="CubeSlaveContainer">
                <ModelUIElement3D>
                    <GeometryModel3D  x:Name="TopPanel">
                        <GeometryModel3D.Material>
                            <DiffuseMaterial x:Name="MaterialTop">
                                <DiffuseMaterial.Brush>
                                    <VisualBrush>
                                        <VisualBrush.Visual>
                                            <TextBlock Text="1" Foreground="White"/>
                                        </VisualBrush.Visual>
                                    </VisualBrush>
                                </DiffuseMaterial.Brush>
                            </DiffuseMaterial>
                        </GeometryModel3D.Material>
                        <GeometryModel3D.BackMaterial>
                            <DiffuseMaterial Brush="Transparent"/>
                        </GeometryModel3D.BackMaterial>
                        <GeometryModel3D.Geometry>
                            <MeshGeometry3D Positions="-2,2,2  2,2,2  2,2,-2  -2,2,-2"   
                                        
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值