第3章:标量场可视化——云图、等值线与等值面

各位工程师朋友,咱们今天聊聊标量场可视化。说白了,就是怎么把一堆数字变成能看懂的图。我刚开始做CFD那会儿,对着满屏的数值发呆,后来才明白——可视化不是花架子,它是我们和流场对话的窗口。

核心观点:标量场可视化的本质,是把连续分布的数据映射到视觉通道上。你选什么颜色、画多少条线,直接决定了你能从数据里挖出什么信息。

3.1 云图绘制原理

云图,也叫伪彩色图。原理很简单:把每个网格节点上的标量值,映射成一种颜色。然后填满整个区域。

具体怎么做?我拆成三步讲:

  1. 数据插值——CFD求解器算出来的是离散点上的值。要画云图,得先插值到每个像素点上。常用的有线性插值、双线性插值。我个人习惯用双线性,精度够用,速度也快。
  2. 值域映射——把物理量的范围(比如压力0~100Pa)映射到颜色索引范围(0~255)。这一步要注意:要不要做对数变换?要不要截断异常值?
  3. 颜色填充——根据映射结果,给每个像素点上色。GPU渲染的话,这一步就是查表操作,非常快。

我在项目中遇到过一个问题:某个机翼表面压力分布,直接用线性映射,结果低压区一片黑,啥也看不见。后来改成对数映射,细节全出来了。你想想看,有时候不是数据有问题,是映射方式没选对。

3.2 颜色映射表的选择

颜色映射表,英文叫Colormap。这东西看着简单,坑却不少。

我见过太多人直接用默认的“彩虹色”——红橙黄绿青蓝紫。好看是好看,但问题很大:

  • 感知不均匀——人眼对绿色区域的变化不敏感,对黄色区域又过于敏感。明明物理量变化是均匀的,看起来却像有“假结构”。
  • 色盲不友好——红绿色盲人群占男性8%,他们看彩虹图基本是废的。
  • 印刷失真——彩色打印出来,灰度化之后信息全丢。

我的建议:学术论文和正式报告,优先用“viridis”或“turbo”这类感知均匀的映射表。Tecplot和Paraview里都内置了。如果是做工程汇报,老板喜欢看“冷蓝到暖红”的渐变,那就用“coolwarm”——既专业又直观。

我曾经吃过一次亏:给客户做报告,用了彩虹色云图。客户指着中间一片绿色区域问:“这里是不是有涡?”其实没有,只是颜色变化造成的视觉错觉。从那以后,我再也不敢随便用彩虹色了。

3.3 等值线绘制原理

等值线,就是云图上那些“等高线”。它把相同数值的点连成一条线。

绘制算法最经典的是“Marching Squares”——行进方块法。思路是这样的:

  1. 把网格拆成一个个小四边形(方块)
  2. 检查每个方块四个顶点的值,和目标等值线值比较
  3. 根据比较结果(大于/小于),确定等值线穿过方块的方式
  4. 线性插值,算出等值线在边上的精确位置
  5. 连接所有线段,形成完整等值线
// 伪代码:Marching Squares 核心逻辑
for each cell in mesh:
    case = 0
    if vertex[0].value >= isoValue: case |= 1
    if vertex[1].value >= isoValue: case |= 2
    if vertex[2].value >= isoValue: case |= 4
    if vertex[3].value >= isoValue: case |= 8
    // 查表得到线段连接方式
    edges = lookupTable[case]
    // 插值计算交点位置
    drawLine(edges)

注意:等值线数量不是越多越好。我见过有人画了50条等值线,图上一团黑。一般建议:10~20条等值线,配合云图底色,信息量就足够了。关键区域可以加密,比如激波附近。

3.4 等值面——三维空间的等值线

等值面是等值线的三维推广。在三维流场里,我们想看看“压力等于某个值的曲面长什么样”,这就是等值面。

算法叫“Marching Cubes”——行进立方体法。和Marching Squares一个思路,只是从二维方块变成了三维立方体。每个立方体有8个顶点,2^8=256种情况,查表搞定。

我做过一个项目:分析汽车外流场,想看看尾涡的结构。用等值面显示Q准则(涡识别准则)的某个阈值,那个“涡管”的形状一目了然。你想想看,如果用云图切面,你得切几十个面才能拼出涡的形状。等值面一次搞定。

等值面绘制有几个关键参数:

参数 说明 我的经验值
等值面阈值 选取哪个物理量值 先看数据分布直方图,选在峰值附近
透明度 等值面是否半透明 0.3~0.5,能看到内部结构
网格分辨率 计算等值面的网格密度 太密则文件大,太疏则锯齿明显

小技巧:等值面配合切片云图一起看,效果最好。比如等值面显示涡结构,切片云图显示压力分布,两者叠加,信息量翻倍。

3.5 本章知识体系

下面这张图,是我自己梳理的标量场可视化知识框架。你看一眼,心里就有谱了。

标量场可视化知识体系 标量场可视化 云图(Contour) 等值线(Isoline) 等值面(Isosurface) 数据插值 值域映射 颜色填充 颜色映射表 Marching Squares 线性插值 等值线密度控制 标注与标签 Marching Cubes 阈值选取 透明度设置 与切片云图叠加 核心原则:感知均匀 · 信息完整 · 避免视觉误导

嗯,这张图把本章的核心逻辑串起来了。云图解决“整体分布怎么看”,等值线解决“定量数值怎么读”,等值面解决“三维结构怎么瞧”。三者配合,标量场可视化才算完整。


公众号:蓝海资料掘金营,微信deep3321