科研作图这件事,有个阶段非常磨人:当你的材料结构里出现“卷曲”的时候。
不是用 PPT 画一条弧线就能糊弄过去,而是要清晰地告诉读者:这个卷曲结构卷了几圈?卷曲半径是多少?螺距是否均匀?层层之间有没有厚度感?尤其是碳纳米管、卷曲石墨烯、MoS₂ 卷曲结构、卷曲薄膜这类题材,画不好,直接拉低整张配图的可信度。
Blender 这类工具解决的最大问题不是“渲染得像不像”,而是“几何定义得清不清楚”。我的一个明确判断是:在科研绘图里,卷曲材料必须走程序化建模的路子,不要手工拉点线面。原因很简单,卷曲结构天然有半径、螺距、层数三个可量化参数,手工建模改一处参数可能要重画半个模型,而程序化建模只需要改一个数值。
这篇文章围绕“Blender 科研绘图——卷曲材料”这个主题,讲清楚三件事:卷曲结构建模的三条技术路径怎么选;几何节点与 Python 脚本方案怎么落地;科研风格渲染有哪些关键设置。读完你可以直接上手做出一张能放进论文支撑材料的卷曲结构图。
1. 为什么“卷曲材料”值得用 Blender 做
过去科研绘图常用的三维软件是 3ds Max、C4D、Maya,它们确实能建出很精细的模型,但有两个现实问题:一是正版授权费用不低,二是学习曲线陡峭。很多课题组最终派一个人专门学软件,其他人把需求描述一遍,再由这个人“翻译”成三维模型,沟通成本相当高。
Blender 的价值在于它把所有环节放进了一个免费开源的软件里:建模、材质、灯光、渲染、后期,甚至 Python 脚本和几何节点。你不需要在多个软件之间来回导文件,也不用担心格式转换破坏拓扑结构。
更重要的是,Blender 的“几何节点(Geometry Nodes)”系统非常适合做参数化结构。卷曲材料本质上是一种“从平面到卷绕”的几何变换,而几何节点可以把这种变换拆成“半径”“圈数”“螺距”“厚度”等参数。改一个数,整体结构随之更新,这在科研绘图中几乎是刚需,因为审稿人可能会问“半径减小到 10 nm 是什么样?”,你不会想重新建模一次。
从适用人群看,这篇文章适合三类读者:
- 需要绘制材料结构示意图的研究生和科研人员;
- 需要批量生成不同参数结构图、用于论文对比的实验人员;
- 刚接触 Blender、想从具体案例入手而不是刷教程的初学者。
对新手我想说一句:不要被 Blender 密密麻麻的面板吓到。科研绘图用到的功能其实非常收敛,核心就是建模、材质、渲染三块。本文所有操作都会标注菜单入口和快捷键,跟着走一遍,你就能建立起自己的操作套路。
2. 卷曲材料的建模核心:表面看是画形状,本质是定义几何
在动手打开 Blender 之前,先把卷曲材料的结构想清楚。
卷曲材料在科研中常见的有三类:
| 类型 | 典型例子 | 几何特征 |
|---|---|---|
| 完全卷绕 | 碳纳米管、卷曲薄膜圆柱 | 平面卷成圆筒,边缘相接 |
| 部分卷曲 | 卷曲石墨烯片、MoS₂ 卷曲带 | 平面一端卷起,另一端平展 |
| 螺旋卷曲 | 螺旋纳米带、卷曲薄膜弹簧 | 绕轴旋转并同时沿轴向推进 |
这三类结构有一个共同点:它们都可以用“平面 + 弯曲”来描述。所谓卷曲材料建模,本质上是把一张平面几何体,按照一个或多个卷曲参数变换成三维形状。这个变换里有三个最关键的数字:
- 卷曲半径,决定卷绕的松紧程度;
- 圈数或卷绕角度,决定卷了几圈;
- 螺距(如果是螺旋结构),决定相邻两圈之间的轴向距离。
打开 Blender 之前,先把这三个数字定下来。不要“边做边调”到想当然,否则渲染出来的图很容易出现比例失衡,比如卷曲半径大得不像纳米结构。
在 Blender 里实现卷曲结构,有三条技术路径,各自的适用场景完全不同:
| 技术路径 | 核心操作 | 适合场景 | 学习成本 |
|---|---|---|---|
| 曲线 + 倒角 | 画曲线路径,用剖面曲线生成实体 | 单层卷曲片、碳纳米管 | 低 |
| 几何节点 | 程序化生成网格 | 参数可调的多圈卷曲、批量对比 | 中高 |
| 曲面修改器 | 对平面网格施加弯曲修改器 | 部分卷曲、半卷结构 | 低中 |
接下来,我会从最简单的方法开始,逐步过渡到程序化方案。
3. 基础方案:曲线 + 倒角做出单层卷曲片
曲线 + 倒角是 Blender 里生成管状、带状结构最直观的方法,也是新手最容易出效果的方式。
核心理念:先画一条代表“卷曲路径”的曲线,再给这条曲线指定一个剖面形状,Blender 就会沿着路径生成三维实体。对于碳纳米管,剖面是一个圆;对于卷曲薄膜带,剖面是一个细长的矩形。
3.1 创建卷曲路径曲线
打开 Blender,删除默认的立方体。按Shift + A,选择“曲线 -> 螺旋(Spiral)”。这个曲线默认是平面螺旋,可以在右侧“曲线属性”中调节圈数、半径、高度等参数。这里需要注意,Blender 4.x 版本的螺旋曲线在“曲线属性”里提供了 Growth、Radius、Height 等参数,不同版本名称略有差异,但都能找到圈数和半径的设置项。
如果你想要更自由的卷曲路径,可以改用贝塞尔曲线:按Shift + A -> 曲线 -> 贝塞尔曲线,然后按Tab进入编辑模式,选中控制点后按E挤出并沿 Z 轴旋转,手动拉出卷曲路径。这个方法更灵活,但精确控制半径和螺距不方便。
3.2 设置倒角剖面
选中创建好的螺旋曲线,在右侧“曲线属性”面板中找到“几何数据(Geometry)”卷展栏:
- 将“倒角(Bevel)”中的“深度(Depth)”设为 0.02,管道为正圆截面;
- 如果要做出带状效果,不设置深度,而是点击“物体(Object)”旁的吸管图标,选择一条自定义剖面曲线。
自定义剖面曲线的做法是:新建一条极短的贝塞尔曲线,进入编辑模式,把控制点拉成一条线段,这段线段就会作为剖面轮廓被沿路径挤出。这一步是曲线建模做出“卷曲片”而不是“卷曲管”的关键。
3.3 转为网格并检查法线
曲线倒角生成的对象本质上是曲线物体,虽然可视化为实体,但严格来说还不是网格。为了后续赋予材质、编辑顶点,需要右键选择“转换为网格(Convert to Mesh)”。
这里真正容易踩坑的地方是:转换后很可能会出现法线翻转,也就是部分面反了,渲染出来后表面发黑。解决方式是在编辑模式下全选所有顶点,按Shift + N重新计算外侧法线。
曲线 + 倒角的优点是快、直观,适合画单根碳纳米管或者几条卷曲带。缺点是参数化程度低——如果想对比“3 圈”和“5 圈”的效果,你还得手动调整螺旋曲线的圈数,无法像几何节点那样批量生成。
4. 进阶方案:几何节点把卷曲变成可调参数
如果你需要反复调整卷曲半径、圈数、螺距,或者要生成一批不同参数的卷曲材料图,几何节点是最省力的方案。
几何节点是 Blender 3.0 引入的程序化建模系统。你可以把它理解成一个“数据处理流程图”:从输入开始,经过一系列节点处理,最后输出为几何体。在这里,我不想写一个复杂的节点树然后让你照着连,那是教程式的背诵;我更建议先理解节点逻辑,再动手。
卷曲结构几何节点的核心逻辑是:
- 生成一条基础曲线(螺旋线);
- 用“曲线转网格(Curve to Mesh)”节点,把曲线变成实体;
- “剖面曲线”决定横截面形状;
- 用“设置材质(Set Material)”节点赋予材质;
- 用“组输入(Group Input)”暴露关键参数。
下面是一套可以直接照着接的节点树。
在几何节点编辑器中新建“几何节点修改器”后,搭建以下节点链:
| 节点 | 关键参数 | 作用 |
|---|---|---|
| 组输入(Group Input) | 定义 Radius、Turns、Height、Thickness | 作为外部可调参数 |
| 螺旋曲线(Spiral) | Curve Dimensions=3D,Radius 连组输入,Turns 连组输入,Height 连组输入 | 生成三维螺旋路径,同曲线模式下,环宽、轴、高度需要选择“三维” |
| 曲线转网格(Curve to Mesh) | Curve 接入螺旋曲线,Profile Curve 接入圆形曲线或矩形曲线 | 把曲线路径转成实体网格 |
| 设置材质(Set Material) | 选择指定材质 | 控制卷曲片的颜色和质感 |
| 组输出(Group Output) | — | 输出最终的几何体 |
“剖面曲线”可以用Shift + A -> 曲线 -> 圆环生成。选中圆环后,也可以进入编辑模式,将圆环压扁成椭圆或矩形,从而得到扁带状卷曲结构。
这套节点树接好后,回到“修改器属性”面板,你会看到“几何节点修改器”中暴露出来的 Group Input 参数:Radius、Turns、Height、Thickness。你只需要拖动这几个数值,卷曲片就会实时更新。
下面是一个可用的节点树连接示例(节点编辑器的操作路径):
Group Input └─ Radius → Spiral.Radius └─ Turns → Spiral.Turns └─ Height → Spiral.Height └─ Thickness → Curve Circle.Radius(剖面圆半径) Spiral (Curve) └─ Curve → Curve to Mesh.Curve Curve Circle (剖面曲线) └─ Curve → Curve to Mesh.Profile Curve Curve to Mesh └─ Mesh → Set Material └─ Material → 材质节点中新建的“卷曲材料” Set Material └─ Geometry → Group Output实际操作中需要注意一个细节:如果只接入“螺旋曲线”而不接入剖面曲线,Curve to Mesh 会生成不完整的网格,因为默认没有可用的 profile。所以“剖面曲线”必须始终存在。
几何节点的优势在使用时才能真正体会到:你不需要理解曲线的法线方向、顶点顺序,系统会基于逻辑自动连接。而这里最需要留意的,反而是参数之间的单位一致性。螺旋曲线默认半径单位是米(Blender 默认场景单位),如果你把 Radius 设为 1 而 Height 设为 0.01,那卷曲几乎是水平的,视觉上会非常扁。在科研绘图中,一般建议在 Blender 场景属性里把单位改为“毫米(Millimeter)”,这样更接近纳米结构在宏观尺度下的视觉比例。
5. 另一种常用思路:用曲面修改器做“半卷”状态
有些时候,你需要画的不是完整卷绕的碳纳米管,而是一片“一端卷起、另一端平展”的薄膜。这种结构用几何节点做当然可以,但最简单的是用“曲面修改器(Simple Deform)”中的弯曲(Bend)模式。
操作方法如下:
- 新建一个平面网格,按
S缩放成细长的矩形,分段数适当提高,比如长边设 64 段,否则弯曲后会出现棱角; - 选中平面,在“修改器属性”中添加“简单形变(Simple Deform)”修改器;
- 将形变方式设为“弯曲(Bend)”;
- 调整“角度(Angle)”参数到 90 度到 180 度之间,得到部分卷曲效果;
- 调整“轴(Axis)”为 Z 轴(或你需要的轴方向),Bend 修改器默认是沿 Z 轴弯曲,如果方向不对,可以旋转平面或在修改器里切换轴。
这种方法比较适合“薄膜卷曲的某个瞬间状态”。缺点是调整弯曲半径不够直观,但胜在操作少、上手快。如果你需要最终渲染图里同时出现半卷和平展两个状态,用曲面修改器再加一个复制物体,就已经足够了。
6. 科研风格渲染:材质、灯光与输出设置
模型建好后,渲染设置决定图像是“像截图”还是“像论文图”。科研绘图对渲染的要求较为简单:结构清楚、背景干净、色彩对比明确。
6.1 材质设置
在“着色器编辑器”中新建材质,在 Principled BSDF 节点中做如下调整:
| 属性 | 推荐值 | 说明 |
|---|---|---|
| Base Color(基础色) | 根据材料选择,推荐蓝灰色/青灰色 | 科研图不追求高饱和,接近材料原色 |
| Metallic(金属度) | 0.2 左右 | 金属材料可以适度调高 |
| Roughness(粗糙度) | 0.4 到 0.8 | 太光滑会出现大面积高光,影响结构观察 |
| Transmission(透射) | 0 或 0.1 | 只有透明材料如薄膜才需要 |
更关键的一个技巧是添加“边缘高光”。在 Principled BSDF 的 Roughness 输入端接入一个“菲涅尔(Fresnel)”节点,再把“混合(Mix)”节点作为 Roughness 的输入。这样卷曲结构的边缘会保留一定反射,中心部位保持哑光,能增强立体感。
6.2 灯光设置
科研绘图不需要复杂的 HDRI 环境贴图,默认的世界属性加一盏区域光(Area Light)就够。做法是:把世界属性中的“强度(Strength)”调到 0,然后添加两盏区域光,主光源从右上方照射,强度 1000 左右,辅助光源从左侧补光,强度 300 左右。打光的核心原则是“少而亮”,保证模型各个面都被照亮,而不是追求戏剧性阴影。
6.3 输出设置
在渲染属性中,将渲染引擎切换为 Cycles,采样数量 128 到 256 之间(视电脑性能而定)。在输出属性中:
- 将分辨率设为 1920 x 1080 或更高;
- “帧范围”保持默认即可;
- 文件格式选择 PNG;
- 如果需要在论文里叠加透明背景,勾选“胶片 -> 透明(Film -> Transparent)”。
关于渲染速度,有一个重要提示:Cycles 在 GPU 上会明显比 CPU 快。在“偏好设置 -> 系统 -> 渲染设备”中勾选自己的显卡(CUDA/OptiX),否则默认用 CPU 渲染,速度可能慢数倍。
7. 用 Python 脚本批量生成卷曲结构
如果你要做一组不同参数的卷曲材料对比图,手动调参数再渲染就比较烦了。Blender 内置 Python API(bpy),可以用脚本批量生成模型并自动渲染。
下面是一段可复制的脚本,用于创建一条带卷曲的曲线并设置倒角。在 Blender 中切换到 Scripting 工作区,新建文本,粘贴运行:
import bpy import math # 删除默认物体 bpy.ops.object.select_all(action='SELECT') bpy.ops.object.delete(use_global=False) # 创建贝塞尔曲线 curve_data = bpy.data.curves.new(name="CurlCurve", type='CURVE') curve_data.dimensions = '3D' curve_data.bevel_depth = 0.02 # 倒角深度,控制管径 # 添加一个贝塞尔样条 spline = curve_data.splines.new('BEZIER') spline.bezier_points.add(count=100) # 设置控制点,形成螺旋卷曲 points = spline.bezier_points for i, p in enumerate(points): t = i / (len(points) - 1) radius = 0.8 height = t * 2.0 angle = t * math.pi * 6 # 6圈 p.co = (radius * math.cos(angle), radius * math.sin(angle), height) # 把控制手柄也放到同一位置,形成平滑曲线 p.handle_left_type = 'AUTO' p.handle_right_type = 'AUTO' # 创建物体并添加到场景 curve_obj = bpy.data.objects.new(name="Curl", object_data=curve_data) bpy.context.collection.objects.link(curve_obj) bpy.context.view_layer.objects.active = curve_obj curve_obj.select_set(True)运行后,场景中会出现一根半径 0.8、高度 2、卷了 6 圈的管状卷曲结构,倒角深度为 0.02。这段脚本的核心逻辑是:用参数方程生成螺旋曲线的控制点坐标,再把控制手柄设为自动,让曲线保持平滑。你可以直接修改 radius、angle、height 的值,批量生成不同参数的结构。
如果你要做的是平板卷曲而不是管状,可以用 Simple Deform 修改器的 Python 版本:
import bpy # 创建平面网格 bpy.ops.mesh.primitive_grid_add(size=4, x_subdivisions=80, y_subdivisions=10) obj = bpy.context.active_object obj.rotation_euler[0] = math.pi / 2 # 可根据需要调整初始朝向 # 添加 Simple Deform 弯曲修改器 mod = obj.modifiers.new(name="Bend", type='SIMPLE_DEFORM') mod.deform_method = 'BEND' mod.angle = 1.8 # 弯曲角度(弧度),大约103度,形成半卷 mod.axis = 'Z' # 调整原点位置到边缘,以获得更规整的弯曲效果 bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY', center='MEDIAN')这里要注意一个常见误区:Simple Deform 弯曲的中心默认在物体的原点位置。如果你希望平面的一端固定、另一端卷起,应该先把 3D 游标移动到平面的一端,然后右键选择“设置原点 -> 原点到 3D 游标”,再添加修改器。否则平面会从中间向两边同时弯,出现对称卷曲,和预期可能不符。
最后是一段批量导出的脚本。假设你已经在场景中摆放好了一个模型,希望自动渲染 PNG 并保存到指定目录:
import bpy # 设置渲染参数 scene = bpy.context.scene scene.render.engine = 'CYCLES' scene.cycles.samples = 128 scene.render.image_settings.file_format = 'PNG' scene.render.image_settings.color_mode = 'RGBA' # 透明背景 # 设置相机视角:以视图作为渲染视角 for area in bpy.context.screen.areas: if area.type == 'VIEW_3D': override = bpy.context.copy() override['area'] = area bpy.ops.view3d.view_camera(override) break # 输出文件路径 scene.render.filepath = "//curl_render.png" bpy.ops.render.render(write_still=True)将脚本中的输出路径改为自己的项目目录即可。脚本的关键点是“view_camera”操作会把你当前三维视图的视角锁定到相机,这样你可以在 GUI 里摆好角度,再通过脚本渲染出当前视角。对批量生成不同角度图片的场景非常实用。
8. 常见问题与排查思路
在实操中,卷曲材料建模的坑主要集中在曲线方向、法线、参数比例和渲染性能上。下面这张表基本覆盖了最常见的问题:
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 卷曲带表面部分发黑 | 法线朝向错误 | 进入编辑模式,开启“面朝向”显示 | 全选顶点,按Shift + N重算法线 |
| 曲线倒角后模型特别粗/特别细 | 倒角深度与场景尺寸不匹配 | 查看右下角单位与数值 | 调整 Bevel Depth,或切换场景单位为毫米 |
| 几何节点中卷曲没有剖面 | Curve to Mesh 未接入 Profile Curve | 检查节点连接 | 新建圆环曲线并接入 Curves 输入 |
| 弯曲修改器弯出来的位置不对 | 物体原点不在预期位置 | 显示原点,查看坐标 | 使用 3D 游标重新设置原点 |
| Cycles 渲染很慢 | 使用 CPU 渲染 | 打开偏好设置检查渲染设备 | 切换到 CUDA/OptiX GPU 渲染 |
| 渲染输出透明背景无效 | 文件格式不是 PNG 或未开启透明 | 查看输出属性的文件格式 | 文件格式选 PNG,并勾选“胶片 -> 透明” |
| 螺旋曲线高度完全不均匀 | Height 参数为 0 或过小 | 检查曲线属性中的 Height | 调整螺旋曲线 Height 值 |
| 贝塞尔曲线控制点太密导致卡顿 | 控制点数量过多 | 减少 range 数值 | 把 count 从 200 降到 50 再观察 |
这些坑里,最隐蔽的是“原点位置”问题。很多新手做了一个卷曲,发现怎么旋转都歪的,其实是原点不在几何中心。在科研绘图中,原点位置还会影响后续的阵列、镜像等操作,建议建模一开始就养成“先设置原点再操作”的习惯。
9. 最佳实践与工程建议
9.1 建立自己的参数清单
开始建模之前,先写清楚卷曲半径、圈数、厚度、螺距四个值。这张图是要放进论文里的,每一个参数都要能讲出物理意义。没有意义的参数化结构,在审稿阶段很容易被指出来。
9.2 善用“集合”管理多结构
一篇文章往往不止一张图。建议把不同图用 Blender 的“集合(Collection)”分开:一个集合放碳纳米管,一个集合放卷曲薄膜,一个集合放对比图。每个集合里再按“模型”“灯光”“相机”分组。这样做的好处是,在渲染不同图时只需切换集合的可见性,不需要删掉重做。
9.3 材质命名与复用
给每个材质取有意义的名称,比如Curl_MoS2_blue、Curl_Graphene_gray,不要叫Material.001。科研绘图经常会比对一个系列的材料,材质如果混乱,比对你可能会迷失在哪个参数对应哪张图。
9.4 文件保存与备份
Blender 的.blend文件是单文件结构,这既是优点也是风险。建议使用“文件 -> 外部数据 -> 自动打包”功能,把所有贴图打包进文件。每完成一个关键阶段,另存一个新版本,比如curl_v01.blend、curl_v02.blend。这比手动撤销更可靠。
9.5 渲染前先检查三件事
每次出图前,依次检查三样东西:相机是否锁定在预览视角、解决旋转视角导致的空镜头;模型是否应用了全部缩放变换(Ctrl + A -> 全部变换),避免比例变形;材质是否应用到了模型的所有部件,避免因为材质名称不一致出现整体灰黑。
9.6 保持学习路径聚焦
Blender 功能很多,从建模到雕刻再到动画,学不完。科研绘图人员只需要聚焦“建模 + 材质 + 渲染”这条线,其他领域暂时不要碰。遇到需要新功能时,再针对性搜索学习。比如这篇文章覆盖了螺旋曲线、曲线倒角、几何节点、Simple Deform、Cycles 渲染,已经能覆盖 80% 的卷曲材料绘图需求。
10. 卷曲结构出图后的检查清单
模型做完、渲染输出后,还有最后一步:把图放大到 100%,检查结构细节。这一步的建议来自实际出图经验,请特别留意三处:
第一,卷曲边缘是否平滑。如果出现多边形棱角,说明曲线分段数不足,回到曲线属性中提高“预览分辨率(Preview Resolution)”或“渲染分辨率(Render Resolution)”。第二,相邻圈层之间是否存在意外重叠。这个只能用眼睛确认,重叠的区域会在视觉上产生“穿模”感,严重影响图的专业性。第三,横截面是否能看出厚度。如果卷曲材料是一张薄膜,横截面应该能看到一条细线或细带,必要时可以在剖面曲线中把圆压扁成矩形,做出薄膜厚度。
这三个检查点都过了,这张卷曲材料图才算真正完成。剩下的工作,就是放进论文、调整尺寸、和写作者反复确认参数是否符合实验数据。
绘图工具只是手段,真正的核心是清楚表达材料结构。用 Blender 做科研绘图,最值钱的不是你掌握了多少个快捷键,而是你能把实验里的真实结构,简洁、准确地还原成一张让人一眼看懂的三维图。建议把这篇文章收藏备用,下次画卷曲材料时,照着步骤推进即可。