问题标签 [viewport3d]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - WPF 显示 FPS
我正在尝试显示 Viewport3D 的 FPS。
进行一些搜索时,我遇到了 CompositionTarget.Rendering,但这似乎给“WPF 性能套件”工具中显示的 FPS 提供了不同的结果。
使用 CompositionTarget.Rendering 时,我得到稳定的 60 fps 显示,直到我与视口相机交互(响应鼠标/键盘事件)然后 fps 拍摄到 150 到 200 fps 之间,而“WPF 性能套件”工具仍显示稳定的 60 fps。
我认为这是因为“WPF 性能套件”工具显示了准确的 FPS,即每当 WPF 团队实际在后台缓冲区上调用 Present 时,而 CompositionTarget.Rendering 是内部更新的 fps,但不代表真正的 fps。
我想展示一些更符合“WPF 性能套件”工具的东西,我该如何实现呢?
我使用 CompositionTarget.Rendering 如下 -
wpf - 来自 Windows 服务的 Viewport3d 渲染
我有一个 WPF 应用程序生成一些报告。我需要从 WindowService 启动此应用程序,而我目前正在从作为 LocalSystem 运行的服务执行该应用程序。除 Pie 3d 外,所有渲染均已正确完成,显示在 Viewport3D 对象中。这是显示行为的代码提取:
这是调用代码:
是的,视口是正确测量/排列的。
从 3d 对象的非交互式应用程序渲染是否有一些限制,我在 Windows7 - 2008 服务器环境中。? 有什么解决方法吗?
c# - Viewport3D 内容大小
我有一个包含图像的 Viewport3D,这是我的代码:
问题是图像大小应该是这样的:
但是在使用 Viewport3D 时看起来像这样:
请问有人可以帮我吗?
c# - wpf c#中GetEnumerator的问题
我想使用以下代码更改视口 3d 中的所有材质颜色:
但它得到错误:
请帮忙。谢谢。
c# - C# WPF ModelVisual3D 创建时间太长,无法在单独的线程上完成
我有一个 WPF 项目 ( VS2010
, .NET4.0
),在其中创建了一个相当大的ModelVisual3D
对象(从自定义格式STL
文件、进程信息、创建网格等读取)这大约需要 3-4 秒。要创建和另外 2-3 秒。做一个mainViewport.Children.Add(ModelVisual3D)
。我在自定义类中完成所有这些并调用此方法:
返回值也是我创建的自定义类:
我想做的就是在程序开始时执行以下操作:
如果我在主线程上执行此操作,则 UI 会挂起。如果我在工作线程上执行此操作并调用mainViewport.Children.Add(...)
它,则表示它无法访问在该工作线程上创建的资源。帮助?!
据我了解,我已经达到了一个地步,即我有两个线程和属于它们每个的资源(mainViewport => UIThread & myModel => WorkerThread
)。两个线程都不能直接访问对方的资源,但是在 UIThread 上创建和使用 myModel 会使它挂起......我要做的就是从 UI 获得足够的响应能力,因此用户可以在等待程序加载模型时最小化程序,仅此而已。我怎样才能做到这一点?有没有办法在 UIThread 上完成所有 CPU 繁重的工作,因此不会出现资源冲突,并且有一个工作线程只处理那个时间的 UI?
PS:我已经尝试过使用 ThreadBackgroundWorker
和Task<TResult>
classes。如果不说同样的话,结果是相似的。
PPS:完整版将加载大量模型,加载时间超过 30-40 秒...
wpf - 将 3D 对象数据移动到单独的 XAML 文件中
我有一些视图的 XAML 文件,其中定义了复杂的 3D 模型。问题是定义模型的部分非常大,超过 0.5 MB,而且很难浏览文件。有没有办法可以将例如移动Model3DGroup
到另一个文件中,然后将其包含在我的主 XAML 文件中?我使用 SketchUp 到 XAML 的转换器,它以创建文件<Model3DGroup xmlns="..." xmlns:x="...">
的根为根,所以我几乎可以肯定它可以以一种方便的方式完成。
我当前的 XAML 文件如下所示:
我想实现这样的目标:
@编辑
McGarnagle 的回答通常是可以的,但就我而言DataTemplate
,我的UserControl.Resources
. 正因为如此,我不得不创建这样一个结构:
c# - 在 ViewPort3D 之外的 RenderTargetBitmap 和 Viewport3D 渲染边距
奇怪的问题,但我发现 RenderTargetBitmap 函数正在渲染 ViewPort3D 左侧的边距。当我保存位图(在这种情况下为 PNG)时,最终图像的左侧有一个间隙,而右侧被切掉了相同的数量。ViewPort3D 的尺寸为 550 像素高 x 1024 像素宽。我在 RenderTargetBitmap 方法中使用相同的尺寸。我很困惑为什么它超出了定义的界限。
后面的代码(在 VB 中 - 抱歉):
我认为它所在的容器(网格)可能是问题所在。
c# - 使用 wpf 3D 图形将 3d 模型显示为 3D 网格对象
我正在C# .Net
使用 3DWpf
图形的平台上工作。下面是代码流程:
1) 我从 kinect 获取深度数据并将其提供给一个计算 3d 点的函数。
私人无效 display3DView()
2)我用Kinect相机的相机参数和深度数据计算了3D点
私人 Point3DCollection Calculate_PointCloud(float[,] ImageArray) {
3)在这里,我转换为具有每个 3D 点的法线信息的三角形集,并将这些三角形提供给 3D 网格对象并使用 viewport3D 控件渲染 3d 网格对象
私人无效视图模型(Point3DCollection 点)
4)这是一个函数,它通过计算每个 3D 点的法线,将三个 3D 点作为三角形添加到 3D 网格对象中
5) 这是我的 XAML 代码
宽度=“967”背景=“黑色”/>
问题是我无法在 Wpf 屏幕中显示 3D 模型。请任何人都可以查看整个代码吗?让我明白我哪里出错了?以及建议我进行更正。提前致谢
c# - Viewport3D 鼠标事件在点击背景时不会触发
我用 MouseEventHandler 设置了 Viewport3D
单击对象时它工作得很好。我的期望是:如果没有点击任何对象(因为用户点击了背景),结果为空。但实际上 mainViewport_MouseUp 方法甚至没有被调用。
我的问题:如何检测 Viewport3D 背景上的点击?