C# 如何在WPF 3D中使用顶点处的值为网格着色?

C# 如何在WPF 3D中使用顶点处的值为网格着色?,c#,wpf,3d,colors,mesh,C#,Wpf,3d,Colors,Mesh,我们有一个球体,我们想在3D中显示它,并且给定一个函数,这个函数依赖于球坐标 球体是用一个规则的网格(θ,φ)进行三角剖分的,但这在极点附近产生了许多小三角形。为了减少极点处的三角形数量,我们改变了网格生成,在曲面上生成尺寸更均匀的三角形 第一种三角剖分方法的优点是,我们可以轻松创建纹理并将其覆盖在曲面上。在WPF中,似乎不可能像在OpenGL或Direct3D中那样为顶点指定颜色 使用第二种三角剖分方法,不清楚如何生成纹理和设置纹理坐标,因为顶点不再与网格对齐 也许可以为每个顶点创建一个包含颜

我们有一个球体,我们想在3D中显示它,并且给定一个函数,这个函数依赖于球坐标

球体是用一个规则的网格(θ,φ)进行三角剖分的,但这在极点附近产生了许多小三角形。为了减少极点处的三角形数量,我们改变了网格生成,在曲面上生成尺寸更均匀的三角形

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

使用第二种三角剖分方法,不清楚如何生成纹理和设置纹理坐标,因为顶点不再与网格对齐


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

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

你认为你可以分享你开发的算法吗?我正试图解决同样的问题。我尝试使用渐变笔刷绘制纹理,将(U,V)映射到(0,0)和(1,0)之间的顶点上,但无法得到与我想要的古劳德类型着色近似的结果。你到底做了什么?