wpf 3d 后台加载模型和调整参数

下载了一个代码,加载obj模型;它的参数在xaml里,模型加载出来刚好;

然后加载另一个obj模型;加载出来之后大,偏到很高和左的位置;

它之前的摄像机位置, Position="9.9475983006414E-14,91.037123633789,414.387754871885";

自己改为 Position="-2.0, 5.0, 1614.387754871885",再用鼠标操作一阵,如下;

之前它是显示在整个窗口;下面把Grid分为2部分;上部作为参数调整;

 

初始参数出来的如下;

 

调一阵后如下;

 

代码如下;

<Window x:Class="Import3D.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:helix="http://helix-toolkit.org/wpf"Title="MainWindow" WindowState="Maximized"><Grid ShowGridLines="True"><Grid.RowDefinitions><RowDefinition Height="15*" /><RowDefinition Height="85*" /></Grid.RowDefinitions><Grid Grid.Row="1"><TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="23" Text="-2.0" VerticalAlignment="Top" Width="120" IsEnabled="True" Margin="0,-66,0,0"/><TextBox x:Name="textBox2" HorizontalAlignment="Left" Height="23" Text="5.0" VerticalAlignment="Top" Width="120" IsEnabled="True" Margin="125,-58,0,0"/><TextBox x:Name="textBox3" HorizontalAlignment="Left" Height="23" Text="1614.387754871885" VerticalAlignment="Top" Width="120" IsEnabled="True" Margin="348,-50,0,0"/><Button x:Name="button" Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="500,-50,0,0" Click="button_Click"/></Grid><Grid Grid.Row="2"><helix:HelixViewport3D ><helix:HelixViewport3D.Camera><PerspectiveCamera x:Name="mycame1"  FieldOfView="45" FarPlaneDistance="1098.9153169227836" LookDirection="0,0,-414.387754871885" NearPlaneDistance="0.1" Position="-2.0, 5.0, 1614.387754871885" UpDirection="0,1,0"/></helix:HelixViewport3D.Camera><helix:DefaultLights></helix:DefaultLights><!--<helix:FileModelVisual3D  x:Name="model1"  Source="C:\Users\Administrator\Desktop\simplexaml\simplexaml\bridgesimple712r.obj" />--><!--<helix:SphereVisual3D></helix:SphereVisual3D>--><ModelVisual3D x:Name="model"></ModelVisual3D><!--<helix:FileModelVisual3D  x:Name="model1"  Source="D:\3dmax\ez\ez.obj" />--></helix:HelixViewport3D></Grid></Grid>
</Window>
using HelixToolkit.Wpf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace Import3D
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();ObjReader CurrentHelixObjReader = new ObjReader();//Model3DGroup MyModel = CurrentHelixObjReader.Read(@".\objFile\ez.obj");//Model3DGroup MyModel = CurrentHelixObjReader.Read(@".\objFile\航天器.3ds");Model3DGroup MyModel = CurrentHelixObjReader.Read(@".\objFile\ateneal.obj"); // Model3DGroup MyModel = CurrentHelixObjReader.Read(@"C:\Users\Administrator\Desktop\simplexaml\simplexaml\bridgesimple712r.obj");// Display the modelmodel.Content = MyModel;}private void button_Click(object sender, RoutedEventArgs e){Point3D p1 = new Point3D(Double.Parse(textBox1.Text.ToString()), Double.Parse(textBox2.Text.ToString()), Double.Parse(textBox3.Text.ToString()));mycame1.Position = p1;}//Model3DGroup group = Load(@"C:\Jack_Shephard\Jack_Shephard.obj");//public static Model3DGroup Load(string path)//{//    if (path == null)//    {//        return null;//    }//    Model3DGroup model = null;//    string ext = System.IO.Path.GetExtension(path).ToLower();//    switch (ext)//    {//        case ".3ds"://            {//                var r = new HelixToolkit.Wpf.StudioReader();//                model = r.Read(path);//                break;//            }//        case ".lwo"://            {//                var r = new HelixToolkit.Wpf.LwoReader();//                model = r.Read(path);//                break;//            }//        case ".obj"://            {//                var r = new HelixToolkit.Wpf.ObjReader();//                model = r.Read(path);//                break;//            }//        case ".objz"://            {//                var r = new HelixToolkit.Wpf.ObjReader();//                model = r.ReadZ(path);//                break;//            }//        case ".stl"://            {//                var r = new HelixToolkit.Wpf.StLReader();//                model = r.Read(path);//                break;//            }//        case ".off"://            {//                var r = new HelixToolkit.Wpf.OffReader();//                model = r.Read(path);//                break;//            }//        default://            throw new InvalidOperationException("File format not supported.");//    }//    return model;//}}
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/701138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache celeborn 安装及使用教程

1.下载安装包 https://celeborn.apache.org/download/ 测0.4.0时出现https://github.com/apache/incubator-celeborn/issues/835 2.解压 tar -xzvf apache-celeborn-0.3.2-incubating-bin.tgz 3.修改配置文件 cp celeborn-env.sh.template celeborn-env.shcp log4j2.xml.…

前后端分离Vue+nodejs校园论坛bbs系统x450z

开发语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode本论文拟采用计算机技术设计并开发的论坛bbs系统&#xff0c;主要是为用户提供服务。使得用户可以在系统上查看帖子信息、签到积分等…

jQuery中的事件与DOM操作

jQuery事件 jQuery事件是对JavaScript事件的封装,常用事件分类 基础事件 鼠标事件键盘事件window事件表单事件绑定事件与移除事件复合事件 鼠标光标悬停鼠标连续点击jQuery基础事件 鼠标事件 鼠标事件是当用户在文档上移动或单击鼠标时而产生的事件 下面是一个使用 Markdow…

大厂嵌入式公司面试真题

面试题&#xff1a; 基础知识题 请解释C语言中的指针是什么以及它们如何工作&#xff1f;描述C语言中的动态内存分配。malloc、calloc、realloc和free这些函数有何区别&#xff1f;C语言中的宏&#xff08;macro&#xff09;和函数之间有什么不同&#xff1f;代码理解题 #incl…

详解Megatron中的数据混合算法(BlendableDataset)

&#x1f9d1;‍&#x1f4bb; 本文主要讲解Megatron早期版本中的数据混合算法。 目录 1. 数据混合2. 源码解析3. 证明部分&讨论4. 进一步优化 1. 数据混合 在谈源码之前&#xff0c;我们有必要先了解一下Megatron中的数据混合思想。 给定 n n n 个数据集 D 1 , D 2 , …

给定一个边与边可能相交的多边形,求它的轮廓线

大家好&#xff0c;我是前端西瓜哥。 最近遇到一个需求&#xff0c;给定一个多边形&#xff08;边与边可能相交&#xff09;&#xff0c;求这个多边形的轮廓线。 需要注意的是&#xff0c;轮廓线多边形内不能有空洞&#xff0c;使用的不是常见的非零绕数规则&#xff08;nonze…

Java+SpringBoot,打造极致申报体验

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

2024全国水科技大会暨流域水环境治理与水生态修复论坛(六)

论坛召集人 冯慧娟 中国环境科学研究院流域中心研究员 刘 春 河北科技大学环境与工程学院院长、教授 一、会议背景 为深入贯彻“山水林田湖是一个生命共同体”的重要指示精神&#xff0c;大力实施生态优先绿色发展战略&#xff0c;积极践行人、水、自然和谐共生理念&…

VOL_常用记录!!-----后端

目录 1.后台配置appsettings.json说明2.service.cs扩展 表/明细表(CRUD导入导出)前后做一些操作 数据(CRUD导入导出)前后的处理参数或数据2.编辑3.新建4.查询5.导出6.导入 注意事项&#xff1a;后台扩展必须写在代码生成的Partial部分类里面 防止代码生成后覆盖你的扩展的代码 …

opencascade在vs和qt下改变视图方向和设置线框模式

一.改变视图方向&#xff08;以顶部视图为例&#xff09; 1.在qt的界面代码中设置好 2.在view.h中设置好槽函数 3.在lzzcad.cpp中设置槽与信号的连接&#xff0c;并在工具栏上显示 4.在view.cpp中给出函数实现 5.给出快捷键实现方式 二.设置线框模式 同上&#xff0c;加入函数…

力扣:93. 复原 IP 地址

回溯&#xff1a; 1.先定义一个接收的集合&#xff0c;之后再定义一个记录小数点的变量。之后编写回溯函数&#xff0c;终止条件为小数点的个数为3时&#xff0c;同时要判断最后一段的组合的值是否属于ip地址的范围。之后再用for循环来遍历ip地址的组合&#xff0c;先判断组合…

【软件设计模式之模板方法模式】

文章目录 前言一、什么是模板方法模式&#xff1f;二、模板方法模式的结构1. 抽象类定义2. 具体实现 三、模板方法模式的应用场景1. 算法重用2. 操作中的固定步骤3. 扩展框架的功能4. 提供回调方法5. 遵循开闭原则 四、模板方法模式的优缺点1. 优点代码复用扩展性好符合开闭原则…

[深度学习]yolov9+deepsort+pyqt5实现目标追踪

【YOLOv9DeepSORTPyQt5追踪介绍】 随着人工智能技术的飞速发展&#xff0c;目标追踪在视频监控、自动驾驶等领域的应用日益广泛。其中&#xff0c;YOLOv9作为先进的目标检测算法&#xff0c;结合DeepSORT多目标追踪算法和PyQt5图形界面库&#xff0c;能够为用户提供高效、直观…

Linux fdisk命令教程:硬盘分区的利器(附实例详解和注意事项)

Linux fdisk命令介绍 fdisk&#xff08;format disk&#xff09;是一个在Linux中用于创建和操作磁盘分区表的对话驱动命令。它是最常用的创建分区的工具之一。fdisk允许你在硬盘上创建和操作分区表。需要注意的是&#xff0c;fdisk是一个危险的工具&#xff0c;应该谨慎使用。…

前端笔记——var let const 之间的区别

Var&#xff1a; 关键字来声明变量。它有以下特点&#xff1a; var声明的变量作用域是函数级的&#xff0c;即在函数内部声明的变量在整个函数范围内可见。 var变量可以被重复声明&#xff0c;而不会引发错误。 var变量会存在变量提升&#xff08;hoisting&#xff09;现象&…

python-可视化篇-简单-条形图输出主要省份GDP排名情况

条形图输出主要省份GDP排名情况 代码 gdp广东:97277.77:107671.07 江苏:92595.40:99631.52 山东:76469.70:71067.5 浙江:56197.00:62353 河南:48055.90:54259.2 四川:40678.10:46615.82 湖北:39366.60:45828.31 湖南:36425.78:39752.12 河北:36010.30:35104.5 福建:35804.04:…

windows安装 RabbitMQ

首先打开 RabbitMQ 官网&#xff0c;点击 Get Started(开始) 点击 Download Installation(下载安装)。 这里提供了两种方式进行安装&#xff0c;我们使用第二种方法。 使用 chocolatey以管理用户身份使用官方安装程序 往下滑&#xff0c;第二种方法需要 Erlang 的依赖&#x…

iotdb集群模式部署

iotdb集群模式部署 重要声明:部署的版本要和脚本对应上,这里可以点击 来获取最新的脚本; 我使用的是1.3.0版本的iotdb 下面是我基于三个节点的部署步骤: 假如有三台物理机,里面安装了centos系统,它们的hostname分别是iotdb-1、iotdb-2、iotdb-3 1、设置网络 vim /…

1248 - Every derived table must have its own alias

该问题是子查询内的列名无法在外部查询中直接引用&#xff0c;使用别名来为子查询结果集命名&#xff0c;然后在外部查询中引用该别名。以下是一个修正后的查询语句&#xff1a; SELECT last_name, salary FROM (SELECT last_name, salary, RANK() OVER (ORDER BY salary DES…

avidemux-一个免费的视频编辑器,用于剪切、过滤和编码项目

avidemux-一个免费的视频编辑器&#xff0c;用于剪切、过滤和编码项目 avidemux-一个免费的视频编辑器&#xff0c;用于剪切、过滤和编码项目avidemux下载avidemux源代码参考资料 avidemux-一个免费的视频编辑器&#xff0c;用于剪切、过滤和编码项目 avidemux下载 avidemux …