如何根据wpf(c#)中的点高度为3d网格着色?

如何根据wpf(c#)中的点高度为3d网格着色?,c#,wpf,3d,C#,Wpf,3d,我正在开发c#3D wpf visual studio 2015 我使用XYZ坐标创建了一个网格, 积分将近400多万, 基于Z轴,我需要为整个网格着色,而不是像高度贴图一样着色 这用于将位置添加到点: MeshGeometry3D cube = new MeshGeometry3D(); cube.Positions.Add(new Point3D(X[i], Y[i], Z[i])); 要创建索引,请执行以下操作: cube.TriangleIndices.Add(m); cube.T

我正在开发c#3D wpf visual studio 2015

我使用XYZ坐标创建了一个网格, 积分将近400多万, 基于Z轴,我需要为整个网格着色,而不是像高度贴图一样着色

这用于将位置添加到点:

MeshGeometry3D cube = new MeshGeometry3D();
cube.Positions.Add(new Point3D(X[i], Y[i], Z[i])); 
要创建索引,请执行以下操作:

cube.TriangleIndices.Add(m);
cube.TriangleIndices.Add(m + 1);
cube.TriangleIndices.Add((m + 1) + line);
cube.TriangleIndices.Add((m + 1) + line);
cube.TriangleIndices.Add((m + 2) + line);
cube.TriangleIndices.Add(m);
在这里,颜色应该迭代到最后,而不是基于高度的浅蓝色

    byte rr = 0;
    for (int pp = 0; pp < l; pp++) //l is the number of points
    {
        Color cc = Color.FromArgb(rr, 0, 0, 0);
        myHorizontalGradient.GradientStops.Add(new GradientStop(cc, 5));
        mGeometry = new GeometryModel3D(cube, new DiffuseMaterial(myHorizontalGradient));
        mGeometry.Transform = new Transform3DGroup();
        group.Children.Add(mGeometry);
        rr++;
        if (rr > 255)
        {
            rr = 0;
        }
    }
字节rr=0;
for(int-pp=0;pp255)
{
rr=0;
}
}

这就是迭代颜色的方法,现在我只尝试了红色,但不起作用

您是否使用了
GeometryModel3D
材质
背景材质
属性?另外,您是如何使用myHorizontalGradient的?我看到它被定义,但没有被消费。不,我仍然是wpf的新手。但我尝试了一些其他方法,但没有成功,请你给我任何参考,我正在寻找。我刚刚做了。演示如何使用渐变?LinearGradientBrush myHorizontalGradient=新的LinearGradientBrush();字节rr=0;对于(int pp=0;pp255){rr=0;}}我想帮助你,以便我需要一段代码,我可以在我的机器上执行并使用它。你的代码中有太多空白,我无法运行它。你能创建/编辑一个我可以运行的示例吗?xaml&C#?不一定是你的整个项目,只是一个最小的示例。
    byte rr = 0;
    for (int pp = 0; pp < l; pp++) //l is the number of points
    {
        Color cc = Color.FromArgb(rr, 0, 0, 0);
        myHorizontalGradient.GradientStops.Add(new GradientStop(cc, 5));
        mGeometry = new GeometryModel3D(cube, new DiffuseMaterial(myHorizontalGradient));
        mGeometry.Transform = new Transform3DGroup();
        group.Children.Add(mGeometry);
        rr++;
        if (rr > 255)
        {
            rr = 0;
        }
    }