问题标签 [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.
wpf - 在 3d 对象的鼠标悬停时显示工具提示
我正在使用 Helix 显示一个简单的对象,如下所示
如何在茶壶鼠标悬停时显示工具提示?
谢谢
c# - 如何在 helix-toolkit sharpDX 视口中选择最上面的元素?
我正在为我大学的一个项目使用 helix-toolkit 库的 sharpDX 分支(HelixToolKit 库)
目前我正在寻找一种在视口中正确选择元素的方法。
我在 helixtoolkit 库的源代码中找到了一个有用的示例:GitHub 上的示例代码
}
我设法让它在我的应用程序中运行。但是,不是只选择最顶部的元素,而是选择与射线相交的所有元素。可能需要某种处理函数来突出显示距离最短的元素?
我为此检查了一些标准的 WPF 解决方案,他们经常使用事件处理程序。(例如WPF 中的 3D 命中测试)
使用事件处理程序是一个明智的解决方案吗?如果是,如何在事件处理程序中获取用于调用 HitTest 函数的射线元素?
c# - HelixToolkit.SharpDX 中的 Obj 文件导入和光标位置
我是 HelixToolkit.SharpDX 的新手,我有 2 个问题,也许有人可以帮助我:
首先:我想导入 obj 模型(带有纹理)并在 Viewport3DX 中显示它。如何正确执行?现在我有下一个:
读取 objs 变量后包含近 1000 个对象。在视口中显示模型的下一步是什么?
第二:还有一个问题:如何在 Viewport3DX 中接收光标位置。HelixViewport3D 中是否有像 CursorPosition 这样的属性?
先感谢您!
rendering - 如何在 Helix Toolkit SharpDX 视口中平滑边缘?
所以我最近将一个项目从原生 helix-toolkit 库迁移到 helix-toolkit sharpDX 分支,并注意到我的模型的边缘似乎比以前更不稳定/阶梯状。
我试图找到一些东西来操纵平滑度或抗锯齿,但找不到任何东西。
查看 helixtool-kit sharpDX 源代码的示例,我注意到在DeferredShadingDemo中边缘似乎更平滑。
我尝试在示例中使用延迟渲染,但遇到了问题。不过,在仔细阅读此解决方案之前,我想我可以要求您为我的问题提供一个更简单、更合法的解决方案。
已经谢谢了!
c# - 如何在wpf 3D中链接两个不同的相机
我在 wpf 3D / Helixtoolkit 中有一个项目,它有两个不同的视口,显示两个不同但相似的对象。
我必须实现一个可以“链接”两个视口的两个摄像头的按钮。所以当我改变一个视图时,另一个复制完全相同的转换。
总而言之,我想同时激活两个视口,而不仅仅是通过鼠标悬停一个。
我会带头。
编辑:我找到了一个非常简单的答案,只需将一个摄像头复制到另一个摄像头到 CameraChanged 事件中
我认为它会做得很好
wpf - 如何并行化 3d 模型创建?
这里有点特殊,因为我使用的是一个名为helix-toolkit的库,但请耐心等待。
问题是我想使用后台工作程序在我的代码中并行创建模型对象。
我知道多线程和处理 UI 元素存在一个大问题,但也许有一种解决方法。
这是我的代码的粗略结构:
我在其中创建 Backgroundwoker 的第一个文件,拆分创建 Geometry3D 对象的工作负载,最后调用SetModelGeometry将几何图形绑定到视口。第二个文件显示了绑定是如何完成的。
主窗口.xaml.cs
主视图模型.cs
我目前的问题是以下错误消息:
调用线程无法访问此对象,因为不同的线程拥有它。
SetModelGeometry
尝试将 附加ModelGeometry
到视口时在函数中抛出。
我猜编译器抱怨几何图形是在不同的线程中创建的,他现在无法访问。
在不破坏 DrawBuilding 函数的并行执行的情况下,是否有任何解决方法/解决方案?
编辑:
编辑2:发布了错误的Draw_Building
方法版本
中的Draw_Building
方法Geometryhandler
:
c# - 如何在 helix-toolkit sharpdx 视口中缩放到模型?
以下设置:我有一个带有两个视口的应用程序。在主视口上选择元素时,模型几何图形的副本应该在第二个视口中放大显示。
我上传了一些视觉辅助的屏幕截图:-) http://imgur.com/ILG8Ylk
我对此(除其他外)的看法是使用 ZoomExtents 方法:
主视图模型.cs
我想这两个重载都应该很好地适应绑定模型的场景,但我总是得到一个非常缩小的视图,并且大多数模型不在视口中居中。
我试图通过将模型转换为原点并应用缩放力来破解解决方案,结果更好但仍然有点。
有人知道为什么 zoomExtends() 方法对我不起作用吗?如果没有,也许有更复杂的 hack xD 的建议。
我是初级开发人员,所以我愿意接受任何改进意见,谢谢。
c# - HelixToolkit 如何从 HitTest 中排除元素
我有一个带有天空盒的场景,我想将用户单击的点投影到天空盒上。
我用HelixViewport3D.FindNearestPoint(Point pt)
它来理解这一点,它工作得很好,除非在点击和天空盒之间有任何东西。在这种情况下,它会返回投影到天空布前面物体上的点。
有什么方法可以标记一个元素,使其在 HitTests 中被忽略?
sharpdx - 更新model3d元素颜色的有效方法
我正在使用Viewport3DX
具有许多不同MeshGeometryModel3D
元素的 a 。用户界面集成了一个滑块,该滑块将更新PhongMaterials
所有 model3d 元素的不透明度(的 alpha 值)。
这是我当前对更新不透明度的代码的实现:
几何处理程序.cs
主窗口.xaml.cs
每次滑块的值发生变化时,都会调用该UpdateOpacity
函数,遍历MeshGeometryModel3D
元素字典并更新其材质。
我尝试了许多不同的版本,但最终这是完成这项工作的唯一实现。然而,即使在发布模式下,更新也非常缓慢且“滞后”。
我认识到两件事:
我必须克隆现有的材质,更新它并重新分配它以使材质在视口中发生变化
我不能直接设置 alpha 属性
Diffusecolor
,而是实例化一个新的颜色对象
有人知道瓶颈可能在哪里吗?是材料的克隆、新颜色的实例化还是两者兼而有之?还是完全不同的东西?有没有更好的更新方法?很想听听你的建议。已经非常感谢了!
c# - 使用 Model3D 进行射线命中测试
我需要测试光线模型的交叉点。我知道有一种内置方法可以测试与 Viewport3D 的光线交集(https://blogs.msdn.microsoft.com/wpf3d/2009/05/18/3d-hit-testing/)
我找不到任何方法来使用它来测试 Model3D。我需要测试整个模型的交叉点,而不仅仅是可见部分。
任何帮助将不胜感激。