问题标签 [helix-3d-toolkit]

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.

0 投票
1 回答
1434 浏览

wpf - 在 3d 对象的鼠标悬停时显示工具提示

我正在使用 Helix 显示一个简单的对象,如下所示

如何在茶壶鼠标悬停时显示工具提示?

谢谢

0 投票
2 回答
1695 浏览

c# - 如何在 helix-toolkit sharpDX 视口中选择最上面的元素?

我正在为我大学的一个项目使用 helix-toolkit 库的 sharpDX 分支(HelixToolKit 库

目前我正在寻找一种在视口中正确选择元素的方法。

我在 helixtoolkit 库的源代码中找到了一个有用的示例:GitHub 上的示例代码

}

我设法让它在我的应用程序中运行。但是,不是只选择最顶部的元素,而是选择与射线相交的所有元素。可能需要某种处理函数来突出显示距离最短的元素?

我为此检查了一些标准的 WPF 解决方案,他们经常使用事件处理程序。(例如WPF 中的 3D 命中测试

使用事件处理程序是一个明智的解决方案吗?如果是,如何在事件处理程序中获取用于调用 HitTest 函数的射线元素?

0 投票
1 回答
1331 浏览

c# - HelixToolkit.SharpDX 中的 Obj 文件导入和光标位置

我是 HelixToolkit.SharpDX 的新手,我有 2 个问题,也许有人可以帮助我:

首先:我想导入 obj 模型(带有纹理)并在 Viewport3DX 中显示它。如何正确执行?现在我有下一个:

读取 objs 变量后包含近 1000 个对象。在视口中显示模型的下一步是什么?

第二:还有一个问题:如何在 Viewport3DX 中接收光标位置。HelixViewport3D 中是否有像 CursorPosition 这样的属性?

先感谢您!

0 投票
1 回答
1227 浏览

rendering - 如何在 Helix Toolkit SharpDX 视口中平滑边缘?

所以我最近将一个项目从原生 helix-toolkit 库迁移到 helix-toolkit sharpDX 分支,并注意到我的模型的边缘似乎比以前更不稳定/阶梯状

我试图找到一些东西来操纵平滑度或抗锯齿,但找不到任何东西。

查看 helixtool-kit sharpDX 源代码的示例,我注意到在DeferredShadingDemo中边缘似乎更平滑。

我尝试在示例中使用延迟渲染,但遇到了问题。不过,在仔细阅读此解决方案之前,我想我可以要求您为我的问题提供一个更简单、更合法的解决方案。

已经谢谢了!

0 投票
0 回答
273 浏览

c# - 如何在wpf 3D中链接两个不同的相机

我在 wpf 3D / Helixtoolkit 中有一个项目,它有两个不同的视口,显示两个不同但相似的对象。

我必须实现一个可以“链接”两个视口的两个摄像头的按钮。所以当我改变一个视图时,另一个复制完全相同的转换。

总而言之,我想同时激活两个视口,而不仅仅是通过鼠标悬停一个。

我会带头。

编辑:我找到了一个非常简单的答案,只需将一个摄像头复制到另一个摄像头到 CameraChanged 事件中

我认为它会做得很好

0 投票
1 回答
446 浏览

wpf - 如何并行化 3d 模型创建?

这里有点特殊,因为我使用的是一个名为helix-toolkit的库,但请耐心等待。

问题是我想使用后台工作程序在我的代码中并行创建模型对象。

我知道多线程和处理 UI 元素存在一个大问题,但也许有一种解决方法。

这是我的代码的粗略结构:

我在其中创建 Backgroundwoker 的第一个文件,拆分创建 Geometry3D 对象的工作负载,最后调用SetModelGeometry将几何图形绑定到视口。第二个文件显示了绑定是如何完成的。

主窗口.xaml.cs

主视图模型.cs

我目前的问题是以下错误消息:

调用线程无法访问此对象,因为不同的线程拥有它。

SetModelGeometry尝试将 附加ModelGeometry到视口时在函数中抛出。

我猜编译器抱怨几何图形是在不同的线程中创建的,他现在无法访问。

在不破坏 DrawBuilding 函数的并行执行的情况下,是否有任何解决方法/解决方案?

编辑:

编辑2:发布了错误的Draw_Building方法版本

中的Draw_Building方法Geometryhandler

0 投票
1 回答
1986 浏览

c# - 如何在 helix-toolkit sharpdx 视口中缩放到模型?

以下设置:我有一个带有两个视口的应用程序。在主视口上选择元素时,模型几何图形的副本应该在第二个视口中放大显示。

我上传了一些视觉辅助的屏幕截图:-) http://imgur.com/ILG8Ylk

我对此(除其他外)的看法是使用 ZoomExtents 方法:

主视图模型.cs

我想这两个重载都应该很好地适应绑定模型的场景,但我总是得到一个非常缩小的视图,并且大多数模型不在视口中居中。

我试图通过将模型转换为原点并应用缩放力来破解解决方案,结果更好但仍然有点。

有人知道为什么 zoomExtends() 方法对我不起作用吗?如果没有,也许有更复杂的 hack xD 的建议。

我是初级开发人员,所以我愿意接受任何改进意见,谢谢。

0 投票
1 回答
1103 浏览

c# - HelixToolkit 如何从 HitTest 中排除元素

我有一个带有天空盒的场景,我想将用户单击的点投影到天空盒上。

我用HelixViewport3D.FindNearestPoint(Point pt)它来理解这一点,它工作得很好,除非在点击和天空盒之间有任何东西。在这种情况下,它会返回投影到天空布前面物体上的点。

有什么方法可以标记一个元素,使其在 HitTests 中被忽略?

0 投票
1 回答
445 浏览

sharpdx - 更新model3d元素颜色的有效方法

我正在使用Viewport3DX具有许多不同MeshGeometryModel3D元素的 a 。用户界面集成了一个滑块,该滑块将更新PhongMaterials所有 model3d 元素的不透明度(的 alpha 值)。

这是我当前对更新不透明度的代码的实现:

几何处理程序.cs

主窗口.xaml.cs

每次滑块的值发生变化时,都会调用该UpdateOpacity函数,遍历MeshGeometryModel3D元素字典并更新其材质。

我尝试了许多不同的版本,但最终这是完成这项工作的唯一实现。然而,即使在发布模式下,更新也非常缓慢且“滞后”。

我认识到两件事:

  • 我必须克隆现有的材质,更新它并重新分配它以使材质在视口中发生变化

  • 我不能直接设置 alpha 属性Diffusecolor,而是实例化一个新的颜色对象

有人知道瓶颈可能在哪里吗?是材料的克隆、新颜色的实例化还是两者兼而有之?还是完全不同的东西?有没有更好的更新方法?很想听听你的建议。已经非常感谢了!

0 投票
1 回答
692 浏览

c# - 使用 Model3D 进行射线命中测试

我需要测试光线模型的交叉点。我知道有一种内置方法可以测试与 Viewport3D 的光线交集(https://blogs.msdn.microsoft.com/wpf3d/2009/05/18/3d-hit-testing/

我找不到任何方法来使用它来测试 Model3D。我需要测试整个模型的交叉点,而不仅仅是可见部分。

任何帮助将不胜感激。