【问题标题】:How to hide "cracks" between GeometryModel3Ds in one ModelVisual3D?如何在一个 ModelVisual3D 中隐藏 GeometryModel3D 之间的“裂缝”?
【发布时间】:2012-06-25 09:29:24
【问题描述】:

我正在编写一个使用 wpf 3d 的地球科学可视化应用程序。用户需要能够以最少的资源快速放大细节并快速缩小。我决定将切片 (ModelVisual3D) 划分为子矩形 (GeometryModel3D),这样每个子矩形都有自己的纹理,当相机放大时会发生变化(类似于 Google 地图)。

问题是子矩形之间出现了“裂缝”,即使它们之间实际上没有空白空间。

如何隐藏这些?或者有没有其他方法可以将不同尺寸的多种材质分配给一个 ModelVisual3D?

PS 我尝试将背景设为灰色、浅灰色、银色和白色烟雾。它有一点帮助,但它是不可接受的。我也尝试过重叠子矩形,但没有结果。

【问题讨论】:

    标签: c# .net wpf 3d modelvisual3d


    【解决方案1】:

    您可能希望制作多个不同分辨率的纹理,并根据缩放级别在这些纹理之间切换,而不是您当前的设置。 (Mipmap)

    当非常接近时,您可能会替换整个对象并将其切换为更小的对象)并使用高度详细的纹理。

    这将需要更多的预处理,但您将能够使用单个几何体。

    【讨论】:

    • 好吧,与其根据缩放级别在纹理之间切换,我可以简单地使用一个足够详细的巨大纹理(如果我有足够的资源)。但这并不好,因为巨大的纹理会占用过多的内存并且绘制它需要大量的 CPU 时间。
    • @TimurNuriyasov - 我猜纹理会很大,所以最好不要将其全部加载到内存中。
    • 有没有办法不将所有纹理加载到内存中仍然能够显示它?
    • 我认为这在 WPF 中是不可能的。
    【解决方案2】:

    似乎将ImageBrush 的拉伸更改为 Stretch.None 并使用大于子正方形的纹理会有所帮助。虽然现在我需要更精确地控制表面的纹理坐标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-24
      • 2012-08-23
      • 2021-11-06
      • 1970-01-01
      • 2012-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多