使用 patch 函数可视化网格

Using the patch function to visualize a mesh

我正在尝试使用 matlab R2016b 中的 "patch" 函数可视化网格。

我的网格数据是一个简单的球体,由一个面矩阵 512x3 和一个顶点矩阵 258x3 组成,结构如下图所示(但每个面有 3 个顶点):

当我使用以下命令可视化具有单一纯色的网格时:

patch('Faces', mesh.sharedVert, 'Vertices', mesh.vertices, ...
      'FaceColor', [0.9290 0.6940 0.1250])

没有问题:

但是,当我尝试为每个面或每个顶点可视化不同的颜色时,我得到以下结果:

这是失败尝试的脚本:

patch('Faces', mesh.sharedVert, 'Vertices', mesh.vertices, ...
      'FaceVertexCData', colors)

我的 colors 变量是 512x1 的列向量(对于面)或 258x1 的顶点(现在我在其中使用随机数)。 根据 matlab 的 "patch" 文档,在 "FaceVertexCData" 部分下,它应该在两种情况下都有效,但它不会...

According to Matlab staff,您必须将 FaceColor 属性 设置为 'flat'(如果使用逐面颜色)或 'interp'(如果使用逐顶点颜色) ),因为 [0 0 0] 的默认值会覆盖 per-face/vertex 值。

有趣的是,他们没有费心将这些信息添加到手册页中。