第3章:标量场可视化——云图、等值线与等值面
各位工程师朋友,咱们今天聊聊标量场可视化。说白了,就是怎么把一堆数字变成能看懂的图。我刚开始做CFD那会儿,对着满屏的数值发呆,后来才明白——可视化不是花架子,它是我们和流场对话的窗口。
核心观点:标量场可视化的本质,是把连续分布的数据映射到视觉通道上。你选什么颜色、画多少条线,直接决定了你能从数据里挖出什么信息。
3.1 云图绘制原理
云图,也叫伪彩色图。原理很简单:把每个网格节点上的标量值,映射成一种颜色。然后填满整个区域。
具体怎么做?我拆成三步讲:
- 数据插值——CFD求解器算出来的是离散点上的值。要画云图,得先插值到每个像素点上。常用的有线性插值、双线性插值。我个人习惯用双线性,精度够用,速度也快。
- 值域映射——把物理量的范围(比如压力0~100Pa)映射到颜色索引范围(0~255)。这一步要注意:要不要做对数变换?要不要截断异常值?
- 颜色填充——根据映射结果,给每个像素点上色。GPU渲染的话,这一步就是查表操作,非常快。
我在项目中遇到过一个问题:某个机翼表面压力分布,直接用线性映射,结果低压区一片黑,啥也看不见。后来改成对数映射,细节全出来了。你想想看,有时候不是数据有问题,是映射方式没选对。
3.2 颜色映射表的选择
颜色映射表,英文叫Colormap。这东西看着简单,坑却不少。
我见过太多人直接用默认的“彩虹色”——红橙黄绿青蓝紫。好看是好看,但问题很大:
- 感知不均匀——人眼对绿色区域的变化不敏感,对黄色区域又过于敏感。明明物理量变化是均匀的,看起来却像有“假结构”。
- 色盲不友好——红绿色盲人群占男性8%,他们看彩虹图基本是废的。
- 印刷失真——彩色打印出来,灰度化之后信息全丢。
我的建议:学术论文和正式报告,优先用“viridis”或“turbo”这类感知均匀的映射表。Tecplot和Paraview里都内置了。如果是做工程汇报,老板喜欢看“冷蓝到暖红”的渐变,那就用“coolwarm”——既专业又直观。
我曾经吃过一次亏:给客户做报告,用了彩虹色云图。客户指着中间一片绿色区域问:“这里是不是有涡?”其实没有,只是颜色变化造成的视觉错觉。从那以后,我再也不敢随便用彩虹色了。
3.3 等值线绘制原理
等值线,就是云图上那些“等高线”。它把相同数值的点连成一条线。
绘制算法最经典的是“Marching Squares”——行进方块法。思路是这样的:
- 把网格拆成一个个小四边形(方块)
- 检查每个方块四个顶点的值,和目标等值线值比较
- 根据比较结果(大于/小于),确定等值线穿过方块的方式
- 线性插值,算出等值线在边上的精确位置
- 连接所有线段,形成完整等值线
// 伪代码: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 本章知识体系
下面这张图,是我自己梳理的标量场可视化知识框架。你看一眼,心里就有谱了。
嗯,这张图把本章的核心逻辑串起来了。云图解决“整体分布怎么看”,等值线解决“定量数值怎么读”,等值面解决“三维结构怎么瞧”。三者配合,标量场可视化才算完整。
公众号:蓝海资料掘金营,微信deep3321