WPF 3D 使用3D Tools简单实现鼠标控制模型

这篇具有很好参考价值的文章主要介绍了WPF 3D 使用3D Tools简单实现鼠标控制模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CSDN上下载一个资源,

3D模型导入wpf_wpf加载obj模型光线和相机配置-C#代码类资源-CSDN下载

从VS中打开,运行如下;

出来一个模型;

WPF 3D 使用3D Tools简单实现鼠标控制模型 

可以用鼠标旋转,翻转模型,从不同角度方位查看模型;

WPF 3D 使用3D Tools简单实现鼠标控制模型 

 项目结构如下;

WPF 3D 使用3D Tools简单实现鼠标控制模型

 看一下鼠标功能是如何实现的;

在整个解决方案中找不到任何和鼠标事件相关的代码;那么是如何实现鼠标功能的呢?

看一下项目引用了3DTools这个DLL;

WPF 3D 使用3D Tools简单实现鼠标控制模型

然后整个3D场景,

    <Grid>
        <tools:TrackballDecorator>           
        <Viewport3D

    是包括在<tools:TrackballDecorator>标签中的;可能是此标签实现了鼠标控制功能;

下面来进一步看一下;

新建一个WPF项目,创建一个立方体;运行;

只能看到正面;没有任何的鼠标功能;

WPF 3D 使用3D Tools简单实现鼠标控制模型 

然后添加3DTools;

WPF 3D 使用3D Tools简单实现鼠标控制模型 

XAML中加入命名空间和前面的标签,然后再按下鼠标拖动,立方体确实可以翻转旋转了;

WPF 3D 使用3D Tools简单实现鼠标控制模型 

WPF 3D 使用3D Tools简单实现鼠标控制模型 

WPF 3D 使用3D Tools简单实现鼠标控制模型 

 文章来源地址https://www.toymoban.com/news/detail-484530.html

<Window x:Class="lftxz.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:tools="clr-namespace:_3DTools;assembly=3DTools"
        Title="MainWindow" Height="350" Width="525">
    <Grid >
        <tools:TrackballDecorator>
        <Viewport3D Margin="10">
            <Viewport3D.Camera>
                <PerspectiveCamera Position="0,0,8" x:Name="camera"></PerspectiveCamera>
            </Viewport3D.Camera>
            <Viewport3D.Children>
                <ModelVisual3D>
                    <ModelVisual3D.Content>
                        <Model3DGroup >
                            <GeometryModel3D x:Name="F1">
                                <GeometryModel3D.Material>
                                    <DiffuseMaterial Brush="Green"/>
                                </GeometryModel3D.Material>
                                <GeometryModel3D.Geometry>
                                    <MeshGeometry3D Positions="0,0,0 2,0,0 2,2,0 0,2,0" 
TriangleIndices="0,2,1 0,3,2">
                                    </MeshGeometry3D>
                                </GeometryModel3D.Geometry>
                            </GeometryModel3D>
                            <GeometryModel3D  x:Name="F2">
                                <GeometryModel3D.Material>
                                    <DiffuseMaterial Brush="Blue"/>
                                </GeometryModel3D.Material>
                                <GeometryModel3D.Geometry>
                                    <MeshGeometry3D Positions="0,0,0 0,0,2 0,2,2 0,2,0" 
TriangleIndices="0,1,2 0,2,3">
                                    </MeshGeometry3D>
                                </GeometryModel3D.Geometry>
                            </GeometryModel3D>
                            <GeometryModel3D  x:Name="F3">
                                <GeometryModel3D.Material>
                                    <DiffuseMaterial Brush="Gray"/>
                                </GeometryModel3D.Material>
                                <GeometryModel3D.Geometry>
                                    <MeshGeometry3D Positions="0,0,0 0,0,2 2,0,2 2,0,0" 
TriangleIndices="0,2,1 0,3,2">
                                    </MeshGeometry3D>
                                </GeometryModel3D.Geometry>
                            </GeometryModel3D>
                            <GeometryModel3D  x:Name="F4">
                                <GeometryModel3D.Material>
                                    <DiffuseMaterial Brush="Bisque"/>
                                </GeometryModel3D.Material>
                                <GeometryModel3D.Geometry>
                                    <MeshGeometry3D Positions="2,0,0 2,2,0 2,2,2 2,0,2" 
TriangleIndices="0,1,2 0,2,3">
                                    </MeshGeometry3D>
                                </GeometryModel3D.Geometry>
                            </GeometryModel3D>
                            <GeometryModel3D  x:Name="F5">
                                <GeometryModel3D.Material>
                                    <DiffuseMaterial Brush="Yellow"/>
                                </GeometryModel3D.Material>
                                <GeometryModel3D.Geometry>
                                    <MeshGeometry3D Positions="0,2,2 2,2,2 2,2,0 0,2,0" 
TriangleIndices="0,1,2 0,2,3">
                                    </MeshGeometry3D>
                                </GeometryModel3D.Geometry>
                            </GeometryModel3D>
                            <GeometryModel3D  x:Name="F6">
                                <GeometryModel3D.Material>
                                    <DiffuseMaterial Brush="Red"/>
                                </GeometryModel3D.Material>
                                <GeometryModel3D.Geometry>
                                    <MeshGeometry3D Positions="0,2,2 2,2,2 0,0,2 2,0,2" 
TriangleIndices="0,2,3 0,3,1">
                                    </MeshGeometry3D>
                                </GeometryModel3D.Geometry>
                            </GeometryModel3D>
                        </Model3DGroup>
                    </ModelVisual3D.Content>
                </ModelVisual3D>
                <ModelVisual3D x:Name="light">
                    <ModelVisual3D.Content>
                        <AmbientLight></AmbientLight>
                    </ModelVisual3D.Content>
                </ModelVisual3D>
            </Viewport3D.Children>
        </Viewport3D>
        </tools:TrackballDecorator>
    </Grid>
</Window>

到了这里,关于WPF 3D 使用3D Tools简单实现鼠标控制模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPF 项目使用 Grpc.Tools

    1.1 方法一 把 proto 文件和 Grpc.Tools 单独建一个类库项目,WPF 项目引用这个类库项目。 解决 Grpc.Tools 自动生成的 CSharp 类无法被 WPF 项目识别引用的问题,使 WPF 项目能够成功通过编译。 参考链接: https://docs.microsoft.com/en-us/aspnet/core/grpc/troubleshoot?view=aspnetcore-6.0#wpf-projects-unabl

    2024年02月09日
    浏览(23)
  • 3D模型拆分与合并展示,IVX真的可以简单实现

    随着IT行业的发展,低代码和无代码平台已成为未来的发展趋势,因为它们能够大大提高软件开发的效率。iVX作为其中的一员,具有非常显著的优势,如逻辑完备性、操作流畅性、面向对象设计、可独立作为编程语言等方面的特点。它简单易用、功能丰富、高效稳定,不仅可

    2024年02月02日
    浏览(20)
  • Three.js中光线投射Raycaster的简单使用案例 与模型的交互,当鼠标移动到模型时出现信息框

    目录 说明   创建两个模型 基础代码  基础代码效果图如下: 重点!!!   创建光线投射Raycaster实例步骤 1.准备一个盒子,用来展示模型的长宽高信息,初始化时先隐藏该盒子 2.创建光线投射Raycaster实例         1.创建 Raycaster 实例            2.为窗口绑定事件 p

    2024年02月05日
    浏览(36)
  • Unity鼠标控制3D物体的移动、旋转、缩放

    1.使用协程 2.鼠标左键控制物体移动,鼠标碰到物体,物体颜色改变 1. 控制物体左右旋转,上下旋转 2. 控制摄像机以物体为中心旋转 脚本挂载到摄像机上 1. 基于物体本身的Transform的缩放 2. 基于摄像机的远近的缩放 脚本挂载到摄像机上

    2024年02月11日
    浏览(32)
  • Unity中鼠标控制3D物体进行拖拽

    拖拽 1 、获取3D物体在世界坐标的位置转换屏幕坐标 2、鼠标在屏幕的坐标与物体在屏幕的坐标Z轴进行拟合 3、获取3D物体与拟合出来的坐标的偏移量 4、通过向量投影得到移动坐标 5、上干货,附带手指控制,手指控制逻辑同鼠标一样 自由拖拽 自由拖拽同上不同的是 获取3D物

    2024年03月26日
    浏览(33)
  • Simple WPF:实现一个透明、无边框、鼠标穿透的WPF窗体

    一个自定义WPF窗体的解决方案,借鉴了吕毅老师的WPF制作高性能的透明背景的异形窗口一文,并在此基础上增加了鼠标穿透的功能。可以使得透明窗体的鼠标事件穿透到下层,在下层窗体中响应。这一功能在开发一些截图工具,直播、会议标注工具的时候会有比较多的应用,

    2024年02月09日
    浏览(76)
  • Unity3D摄像机,键盘控制前后左右上下移动,鼠标控制旋转、放缩

    Unity3D中运行场景时,实现摄像机的前、后、左、右、上、下,以及鼠标滚轮的放缩,鼠标右键的旋转操作。亲测有效,可供参考。 按键功能介绍:W——前;S——后;A——左;D——右;Q——下降;E——上升;鼠标右键——旋转;鼠标滚轮——放缩。 Tourcamera脚本需要挂在摄

    2024年02月11日
    浏览(41)
  • 向日葵远程控制第一人称3D鼠标无法操作旋转问题

    阅文时长 | 0.14分钟 字数统计 | 225.6字符 主要内容 | 1、引言背景 2、解决方案 3、声明与参考资料 『向日葵远程控制第一人称3D鼠标无法操作旋转问题』 编写人 | SCscHero 编写时间

    2024年02月07日
    浏览(37)
  • Stable Diffusion 模型下载:A-Zovya RPG Artist Tools(RPG 大师工具箱)

    本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 A-Zovya RPG Artist

    2024年02月21日
    浏览(25)
  • OpenGL之鼠标拾取和模型控制

     使用鼠标单击或“选择”场景中的 3D 对象可能很有用 光标。一种方法是从鼠标投射 3D 射线, 通过摄像机,进入场景,然后检查该光线是否与任何对象。这通常称为光线投射。 步骤 0:2D 视口坐标  范围 [0:宽度、高度:0]  我们从鼠标光标坐标开始。这些是 2d,并且在

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包