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.hqwc.cn/news/495995.html

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

相关文章

2024土木工程、环境工业与材料科学国际会议(CEEIMS2024)

2024土木工程、环境工业与材料科学国际会议(CEEIMS2024) 一、【会议简介】 我们诚挚地邀请您参加2024年土木工程、环境工业与材料科学国际会议&#xff08;CEEIMS2024&#xff09;。本次会议将在厦门举行。 本次会议旨在为土木工程、环境工业和材料科学领域的专家学者提供一…

利用 ChatGPT 提升个人工作、生活品质

利用 ChatGPT 提升个人工作、生活品质和个人智慧是一个多方面而又切实可行的方法。 以下是一些具体的建议&#xff1a; 获取信息和知识&#xff1a; ChatGPT 可以回答各种问题并提供相关信息和知识。你可以利用它来查询工作中遇到的问题、学习新的知识领域或是获取日常生活中的…

Go的CSP并发模型实现M, P, G简介

GMP概念简介 G: goroutine&#xff08;协程&#xff0c;也叫用户态线程&#xff09; M: 工作线程(内核态线程) P: 上下文(也可以认为是cpu&#xff0c;逻辑cpu数量&#xff0c;可以在程序启动的时候设置这个数量&#xff0c;gomaxprocs函数设置) GMP 模型 在 Go 中&#xff…

el-table 多选表格存在分页,编辑再次操作勾选会丢失原来选中的数据

el-table表格多选时&#xff0c;只需要添加type"selection"&#xff0c; row-key及selection-change&#xff0c;如果存在分页时需要加上reserve-selection&#xff0c;这里就不写具体的实现方法了&#xff0c;可以查看我之前的文章&#xff0c;这篇文章主要说一下存…

CGI程序与ShellShock漏洞

CGI是什么&#xff1f; CGI&#xff08;通用网关接口&#xff0c;Common Gateway Interface&#xff09;程序是一种用于在Web服务器上执行动态内容的技术。与服务器上普通的后端代码相比&#xff0c;CGI程序有几个区别&#xff1a; 执行环境&#xff1a; CGI程序在服务器上作为…

开创5G无线新应用:笙科电子5.8GHz 射频芯片

笙科电子(AMICCOM) 5.8GHz A5133射频芯片是一款专门设计用于在5.8GHz频率范围内&#xff08;5725MHz - 5850MHz)进行射频信号处理的集成电路。这些集成电路通常包括各种功能模块&#xff0c;如射频前端、混合器、功率放大器、局部振荡器等&#xff0c;以支持无线通信系统的各种…

数据结构2月21日

双向链表: func函数&#xff1a; #include <stdio.h> #include <stdlib.h> …

【盲源分离】快速理解FastICA算法(附MATLAB绘图程序)

今天讲一个在信号分析领域较为常用的一个方法&#xff0c;即盲源分离算法中的FastICA。 我们先从一个经典的问题引入。 一、鸡尾酒舞会问题 想象一下&#xff0c;你身处一个熙熙攘攘的鸡尾酒舞会中。四周回荡着各种声音&#xff1a;笑声、交谈声、玻璃碰撞声&#xff0c;甚至…

Hybird App开发,纯血鸿蒙系统快速兼容救星

2024年1月18日的开发者&#xff08;HDC&#xff09;大会上&#xff0c;就官宣了“纯血鸿蒙”操作系统即将于2024年3季度正式投产。与此同时&#xff0c;支付宝、京东、小红书、微博、高德地图、中国移动等在内的超百个头部应用都启动了鸿蒙原生应用开发&#xff0c;鸿蒙开发者日…

Flink CDC 提取记录变更时间作为事件时间和 Hudi 表的 precombine.field 以及1970-01-01 取值问题

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

【QT+QGIS跨平台编译】之五十四:【QGIS_CORE跨平台编译】—【qgssqlstatementlexer.cpp生成】

文章目录 一、Flex二、生成来源三、构建过程一、Flex Flex (fast lexical analyser generator) 是 Lex 的另一个替代品。它经常和自由软件 Bison 语法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用 C 语言写成。 “flex 是一个生成扫描器的工具,能够识别文本中…

Java Web(十)--jQuery

介绍 官网文档&#xff1a;jQuery 教程 jQuery API 中文文档 | jQuery API 中文在线手册 | jquery api 下载 | jquery api chm 下载地址&#xff1a;https://jquery.com/download/%20jQuery jQuery 是一个快速的&#xff0c;简洁的 javaScrip工具库&#xff0c;使用户能更方…