【问题标题】:How to color a mesh with values at the vertices in WPF 3D?如何使用 WPF 3D 中顶点处的值为网格着色?
【发布时间】:2011-02-15 10:37:45
【问题描述】:

我们有一个想要以 3D 显示的球体,并且给定一个取决于球坐标的函数的颜色。

在 (theta, phi) 中使用规则网格对球体进行三角剖分,但这会在两极附近产生许多小三角形。为了减少两极三角形的数量,我们更改了网格生成,以在表面上生成更均匀大小的三角形。

第一种三角测量方法的优点是我们可以轻松创建纹理并将其覆盖在表面上。似乎在 WPF 中不可能像在 OpenGL 或 Direct3D 中那样为顶点分配颜色。

使用第二种三角测量方法,如何生成纹理和设置纹理坐标并不明显,因为顶点不再与网格对齐。

也许可以为每个顶点创建一个包含颜色的线性纹理,但是这将如何影响着色?通过应用每个顶点着色,它是否仍会像人们期望的那样在三角形表面上平滑渲染?

【问题讨论】:

    标签: c# wpf 3d colors mesh


    【解决方案1】:

    我已将算法转换为使用线性纹理,这实际上只是对颜色图的查找。这似乎工作得很好,并且是比前一个更好的解决方案。我现在只创建 256 x 1 的固定纹理,而不是创建大小为 ThetaSamples * PhiSamples 的纹理。

    【讨论】:

    • 你认为你可以分享你开发的算法吗?我试图在这里解决同样的问题。我尝试使用渐变画笔作为纹理进行绘图,将 (0,0) 和 (1,0) 之间的 (U,V) 映射到我的顶点,但无法获得接近我想要的 Gouraud 类型着色的结果。你到底做了什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多