ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Blender科研绘图:稳定创建卷曲材料模型的参数化建模方法

Blender科研绘图:稳定创建卷曲材料模型的参数化建模方法 Blender 做科研绘图最容易被问到的不是球棍模型而是“卷曲材料”这种看起来简单、上手却容易变形失控的结构。无论是卷成管的石墨烯、螺旋纳米带还是波浪状薄膜其实都可以用少量修改器和几何节点完成。这篇经验帖主要解决一个问题在 Blender 里稳定做出能放进论文示意图的卷曲材料模型。我会从建模路线选择讲起给出可复现的参数逻辑和排查顺序适合正在做材料、生物、物理方向示意图的同学。如果你只是想把一个平面卷成圆柱最快的是 Simple Deform 修改器如果想做螺旋纤维就用曲线加 Bevel如果想做周期性波浪片材几何节点最方便。下面按实际落地顺序拆一遍先判断结构类型再选建模路径然后分别做两个案例最后处理材质、渲染和常见问题。1. 先判断你要画的是哪一种“卷曲”1.1 螺旋管/螺旋线关键词是曲线半径和螺距科研图里的卷曲材料很多不是真的“卷成筒”而是螺旋形。比如碳纳米管、DNA 双链、螺旋纳米带、纤维缠绕。这类结构最关键的控制参数是直径、螺距、圈数和旋转方向。在 Blender 里建议优先用曲线对象做路径再通过几何节点或修改器把截面沿路径生成网格。不要直接在编辑模式里手工拉伸顶点那样看起来快但后面想改螺距或圈数几乎等于重做。举个例子。我想做一根螺旋纤维先加一条贝塞尔曲线再用一个圆作为 Bevel Object曲线就会变成管状。曲线本身可以通过数学方式生成也可以在几何节点里使用螺旋曲线节点。不同 Blender 版本菜单名称不太一样但思路一致路径决定走向截面决定粗细。控制螺距的参数不在曲线的 Bevel 里而在生成螺旋路径的节点或修改器里所以建模前要先把两件事分开路径归路径截面归截面。很多初学者把圆管做出来后直接旋转复制最后得到一堆互相穿插的对象很难看。更稳的方式是保留曲线参数随时可以修改螺旋直径、圈数和螺距。后面如果要做 DNA 双螺旋只需要复制一条曲线并偏移 180 度再把两条曲线一起生成管状比手动布线快很多。1.2 弯曲片材关键词是弯折轴和分段数如果你的卷曲材料是“一张平面弯成弧形”或“一个圆柱壳展开”比如卷起来的薄膜、弯曲的纳米片、细胞膜截面这类结构用网格加 Simple Deform 修改器最方便。它不像曲线路径那样需要精确计算中心线只要给一个平面网格设置弯曲角度和轴向即可。这里最容易忽略的是分段数。Simple Deform 的 Bend 模式本质是让顶点沿某个轴旋转网格顶点数越少弯出来的表面越像折纸。以一张宽度为 1 的长方形片材为例我一般沿宽度方向至少给 64 段沿长度方向给 8 到 16 段。如果只需要做示意图32 段也能看但卷到 360 度时可能出现明显棱角。预先细分比卷完后用平滑修改器去救更可靠因为平滑修改器只是把表面光影“骗”过去几何上仍然是折线渲染特写时容易露馅。还有一个容易踩的坑Simple Deform 的轴向判断。Bend Axis 用的是对象本地坐标不是全局坐标。如果你的平面旋转过或者缩放不对称直接选 Bend Axis 可能怎么试都不对。我的习惯是在添加修改器前先 Ctrl A 应用旋转和缩放把对象摆正再加修改器。这样调轴时变量少出问题时容易定位。1.3 波浪/褶皱结构关键词是周期偏移第三种常见的“卷曲材料”其实是周期性波浪结构比如波纹板、褶皱石墨烯、超材料表面。它和前面两种最大的区别是表面起伏是按照数学规律重复的手工拉点根本拉不齐必须用参数化方法。几何节点是最合适的工具。网格每个顶点都有自己的位置把 X 或 Y 坐标输入给正弦函数再用结果去偏移 Z 轴就能得到一个干净的波浪面。频率决定波纹密度振幅决定起伏高度相位可以控制波纹的起点。后期要调整只需拖动修改器上的参数不需要进入编辑模式改点。如果你是第一次用几何节点不要被“节点”两个字吓到。它的本质就是把“对每个顶点做什么操作”拆成一个小流程图。很多科研绘图里的复杂变形比如梯度波浪、局部卷曲、噪声褶皱基本都是在这个流程上叠加数学公式实现的。结构类型核心控制参数推荐建模方案螺旋管/螺旋纤维直径、螺距、圈数、旋向曲线 Bevel或 Screw 修改器卷成管/弧面的片材弯曲角度、弯折轴、分段数Simple Deform 修改器周期性波浪/褶皱片材周期、振幅、相位、噪声强度几何节点2. 能直接落地的三种建模路径2.1 平面网格加 Simple Deform 弯曲最快如果目标是一段弧面、半圆管、或 360 度卷纸用平面加 Simple Deform 是速度最快的路径。具体流程分四步Shift A 添加一个平面进入编辑模式按需要把长度和宽度改成实际尺寸。用右键 Subdivide 或 Ctrl R 环切给平面增加足够分段。分段数量按“卷越紧、分段越多”的原则。回到物体模式添加 Simple Deform 修改器Mode 选择 Bend。调整 Angle 角度再切换 Bend Axis 或正负值直到卷曲方向符合预期。为什么这里是“调整再切换”因为新手最容易把轴设成全局坐标。Blender 的修改器面板里默认是本地坐标所以对象如果有旋转同一个轴在不同视角下表现完全不一样。判断标准只有一个看弯曲后顶点的运动方向而不是看面板里的字母。如果角度已经调到了 300 度以上方向还是不对先应用旋转再试。这个方案的优点是直观缺点是不够“参数化”。比如你卷到 360 度首尾不会自动焊接交界处会有重叠或裂缝。如果只是做开口管问题不大如果要闭合无缝需要把管的两条边用 Merge 或桥接处理。辅助工具是 Weld 修改器但闭合接缝最好在编辑模式下完成。2.2 曲线加 Bevel 和 Screw适合管状纤维管状、纤维状、绳索状的卷曲材料不太适合用平面去弯因为在弯曲过程中管壁的扭转很难控制。更好的思路是用曲线做中心路径用 Bevel 给路径一个圆形截面或者用一把小轮廓去绕轴旋转生成螺旋体。先说“曲线 Bevel”。添加贝塞尔曲线把它编辑成任意走向然后在曲线属性里找到 Bevel 的 Depth深度设置一个数值曲线立刻变成圆管。如果希望截面是方形或自定义截面可以在场景里准备一个封闭曲线把它指定为 Bevel Object。这里的核心是曲线决定“沿什么方向”截面决定“管子长什么样”。两个对象分开管理后面修改互不干扰。再说“螺旋带”这类扭转结构。如果你的卷曲材料是扁带绕成弹簧比如扭曲的纳米带可以准备一个小矩形面把它放在原点一侧添加 Screw 修改器。Screw 修改器会沿指定轴旋转并向上推进产生类似螺纹的效果。调整 Steps 可以控制每一圈的平滑度调整 Screw 参数可以控制螺距。矩形宽度控制带材宽度矩形的高度控制厚度。这个方法很老但稳定对低配机器也友好因为它的网格可以精确控制。Screw 修改器生成的对象默认是一条连续的螺旋带但首尾不会自动封口。如果科研图需要表现“被截断的螺旋带”可以在生成后加一个布尔或直接编辑端点。这里建议保留修改器不到导出前不要应用因为应用后网格会变成几万甚至几十万个顶点再想改参数就麻烦了。2.3 几何节点做参数化波浪适合批量调整几何节点的最大优势是“参数外置”。同样是波浪片材手工做减法要改几十次用几何节点只需要在修改器面板里拖动 Frequency、Amplitude 两个参数所有变化实时显示。对于科研绘图这种需要反复试错的场景非常合适。节点思路并不复杂Group Input - Grid - Set Position - Position (0, 0, A * sin(X * f phase)) - Group OutputGrid 生成一个矩形平面分辨率用 Vertices X/Y 控制。Set Position 会把网格每个顶点的位置做一次计算。先拿到原始位置把 X 分量取出来乘以频率套上正弦函数再乘以振幅得到 Z 轴的偏移。Combine XYZ 最后把新坐标组合回去。这样得到的是没有厚度的片材。如果科研图里希望它是薄板而不是薄片可以在几何节点中先 Grid再用 Extrude Mesh 节点给一个厚度。不过 Extrude 会改变顶点拓扑计算量变大先用纯平面把结构形状确定好再考虑厚度更稳妥。几何节点并不是只能画波浪。你可以在偏移公式里叠加多个正弦、余弦或噪声形成更复杂的卷曲表面。比如二次谐波可以做出“波浪上再叠加小波浪”这个在材料粗糙度或褶皱示意图里很常见。判断标准是公式复杂度增加后视图刷新是否还能接受。如果很卡就先降低 Grid 的 Vertices 数量。3. 实操案例从片材卷成圆柱管3.1 基础网格的准备这个案例的目标很简单把一张长方形片材卷成一个带开口的圆柱管用来表示卷起来的薄膜材料。我先建一个平面把宽度设为 3高度设为 1宽度方向对应将来圆柱的周长高度方向对应管长。然后在编辑模式里选择所有顶点用 Subdivide 分割左下角弹出的面板里把切割次数调到 5 到 7确保宽度方向有足够分段。高度方向其实可以少一些比如 8 段就够。为什么宽度方向要多因为 Simple Deform 的弯曲是绕轴转顶点要分布在圆周方向。如果圆周方向只有 8 个顶点弯出来的不是圆而是八边形。即使渲染时开了平滑着色轮廓边缘仍然会有明显的折线感。你要看的是线框不是最终效果。设置完成后Shift A 再添加一个合适的对象不需要直接应用旋转和缩放Ctrl A 应用全部变换。这一步很重要。很多人的平面看起来是正的但属性面板里 Rotation 已经是乱七八糟的值Simple Deform 就很难预测方向。3.2 Simple Deform 参数和轴的调整在修改器面板里添加 Simple DeformMode 选 BendAngle 先填 360。如果卷的方向不对切换 Bend Axis 的三个选项X、Y、Z每切换一次观察哪个方向会开始卷。通常平面在 XY 平面、长边沿 X 时Bend Axis 选 Z 或 X 会有明显差异这个取决于 Blender 版本的坐标习惯。判断标准很简单不要盯着数字看网格形状。你希望片材的宽度方向卷成圆周那就看顶点是不是沿着宽度方向围绕某个轴旋转。如果方向反了把 Angle 改成负数就行不需要重新建模。卷到 360 度时首尾会重叠或留下一条缝。科研图里如果不想完全闭合可以把 Angle 调到 300 到 350 度做出开口管。如果你要的本来就是完整的圆管那么 360 度之后两个边基本接触但不会自动焊接。你可以应用修改器进入编辑模式选中两条边用 Mesh Merge By Distance 把缝隙焊起来。如果顶点数量不同无法对应说明宽度方向的分段不是整数可以检查网格信息。属性作用建议起点Angle弯曲角度360开口管用 300 到 350Bend Axis绕哪个轴弯曲按对象本地坐标试 X/Y/ZLimits限制弯曲范围默认关闭局部卷曲时再开网格分段弯曲方向顶点数宽度方向至少 64 段3.3 卷成螺旋带的后续处理片材卷成圆柱后如果还希望它整体继续“扭转”或“螺旋”最好不要在 Simple Deform 上继续叠弯曲因为多个 Bend 的效果很难预测。更建议直接用 Curve 修改器把已经卷好的带子绑到一条螺旋路径上。具体思路先创建一条螺旋曲线作为带子的中心路径再准备一段细长片材把它卷成管状或螺旋带给片材添加 Curve 修改器把 Curve Object 指向螺旋路径调整片材的长度使它和路径长度大致匹配。否则片材会在路径上被拉伸或压缩出现不均匀的粗细。另一个更稳定的替代方案是用 Screw 修改器。做法是新建一个矩形面尺寸 0.5 x 0.02把它放在原点旁边长边沿 X 或 Y添加 Screw 修改器把 Steps 设成 128 或 32 的倍数把 Screw 设成 0.2选择 Screw Axis 为 Z它将绕 Z 轴旋转并向上推进生成一个绕了若干圈的螺旋带。矩形的高度决定厚度矩形的宽度决定带材宽度。这两种方案对比下来如果你画的是一段圆管用 Simple Deform 更好如果你画的是扁带绕成弹簧用 Screw 修改器更快。曲线加 Curve 修改器适合路径不是标准螺旋的情况比如不规则弯曲的纤维。4. 实操案例用几何节点做可调波浪片材4.1 几何节点基本框架先新建一个平面给它添加“几何节点修改器”。进入几何节点编辑器后Shift A 添加节点。节点框架一共四层输入、生成、变形、输出。Group Input拿到原始对象数据也用来传递外部参数。Grid生成一张矩形网格替代原来的平面。Set Position对每个顶点重新设置位置。Group Output输出网格。不要被 Grid 节点的 Vertices X/Y 吓到它们就是网格在两个方向上的顶点数。比如 Vertices X 128Vertices Y 32意味着 X 方向有 128 个点Y 方向有 32 个点整个网格总面数约 128*32。数值越大越平滑但越吃资源。连接方式Group Input 的 Geometry 接到 Grid 的输入Grid 的 Mesh 接到 Set Position 的 GeometrySet Position 的 Geometry 接到 Group Output 的 Geometry。Position 输入暂时不接网格就是原始平面。为什么要用 Grid 而不是直接拿平面的网格因为 Grid 可以独立控制分辨率不会破坏原对象的网格。你可以在节点外保留一个低模做参考在节点内用高分辨率生成最终网格这个习惯在处理卷曲材料时很有用。4.2 卷曲、周期、振幅和材质 ID接下来把“从平面变成波浪”的公式接起来。Set Position 节点的 Position 输入需要一个坐标加偏移。先添加 Position 节点拿到每个顶点的原始位置用 Separate XYZ 把 X 抽出来X 乘以频率后进入 SineSine 结果乘以振幅作为 Z 方向的偏移最后用 Combine XYZ 把 X、Y、新 Z 组合回去。如果你想同时控制波纹的横向周期可以把正弦里的参数写得更直观比如 offset amplitude * sin(2 * pi * x / wavelength)。在节点里可以用“波长”作为输入通过数学运算转换为频率。这个公式比“频率”更贴近科研人员的习惯因为你脑子里想的是周期长度而不是每秒周期数。另外如果你希望波浪片材带一点“卷曲感”可以在偏移公式里再加一个弯曲项。例如把 Z 偏移改成 amplitude * sin(... ) - x^2 * curvaturex^2 项会让两端往下压中间稍微拱起。这个技巧适用于画受到应力弯曲的薄膜。材质 ID 不需要额外做给网格指定材质时整个几何节点输出会继承材质。如果你想让波浪顶部和底部颜色不同可以在几何节点里用“存储命名属性”按 Z 值大小给顶点标一组权重再在材质中使用颜色渐变读取。这个操作在后期做分区着色时会比反复选面方便很多。4.3 如何批量复制随机变化科研示意图经常会放多个卷曲结构做对比比如不同周期的波浪片材排成一排。手动复制修改器参数会很累尤其要模拟随机变化。可持续用“实例化于点上”节点把已经生成好的波浪片材作为一个子几何体放在一组三维点上。然后给每个实例单独传入随机参数。具体做法是在几何节点里先创建一组点比如 Grid 或 Points再用 Attribute Randomize 或 Random Value 节点生成随机振幅和随机相位将这些值通过“实例化于点上”的实例属性输入给子实例。这需要一点节点编程基础但初学不必一次做到位。你可以先做出一个可调波浪片材复制成多个对象各自修改参数。等需要大量排列时再升级为实例化写法。随机化的判断标准不是每个实例都不同就好而是差异要符合科研图的需求。比如你要对比“波长对卷曲程度的影响”就应该固定振幅只让波长等差变化如果你想要“随机的褶皱表面”才让振幅、频率、相位同时随机。否则很容易画出一张信息混乱的示意图。5. 材质、光照和科研风格输出5.1 科研图适合的材质设置卷曲材料一般很薄材质重点要表现“轻、薄、透明或金属感”不能像游戏道具一样自带粗糙纹理。常见有几种透明薄膜Principled BSDF 里 Transmission 拉到 0.8 到 1.0Roughness 0.1 左右厚度感靠边缘高光表现。金属管Metallic 设为 1.0Roughness 0.2 到 0.4颜色可以偏灰或带一点蓝。半透明纤维可以用 Principled BSDF SSS 或 Transmission纤维较细时材质靠边缘光而不是固有色。如果是通过修改器或几何节点生成的卷曲结构材质工作正常但 UV 可能有问题。尤其是 Simple Deform 和 Screw 生成后UV 沿圆周方向和螺旋方向拉伸严重。建议在修改器面板把“输出材质槽”放进网格后应用修改器然后进入编辑模式 U Reset 或 Smart UV Project 重新展开。如果不想应用修改器可以在材质节点里使用 Texture Coordinate 的 Object 输出配合 Math 节点做简单的重复平铺。这种对象坐标方案比纠缠 UV 方便。5.2 光照和背景科研绘图不适合太强的阴影。我一般把渲染引擎设为 Cycles采样 128 左右开去噪如果只是临时调整角度切换到 EEVEE 快速看构图。布光不要只放一盏灯否则卷曲结构的暗部直接死黑。推荐三盏灯主光从左上 45 度照亮结构补光从右侧低强度回补背光从后面勾亮边缘。背景分为两种。如果图片要放进论文里当示意图建议用白色或非常浅的灰渐变背景金属材质放白背景下容易拍出轮廓如果要用透明背景给 PPT就在渲染属性里勾选 Film Transparent输出 PNG 时得到 RGBA。这里有一个坑透明背景往往和辉光效果冲突。如果你用 Bloom 或 Freestyle 线条保存透明背景时容易出现黑边或白边。最好在输出后放到黑白背景上检查一遍确认边缘干净。5.3 透明背景、尺寸与标注渲染输出时先设置输出格式为 PNG、RGBA。分辨率我一般用 1920×1080 或 2048×1536采样 128 到 256 足够。如果画的是很细的螺旋纤维可以适当提高到 3000 像素因为细线条在高分辨率下才不至于发虚。标注尽量不在 Blender 里做。用 Blender 的 Text 对象加中文字体容易乱而且后期换字、改字体都不方便。更好的流程是在 Blender 里渲出干净模型图把图导入 PPT、AI 或排版软件统一加文字、箭头和标尺。这一步能让图片风格和论文其他图保持一致。如果确实要在 Blender 里标注也可以给 Text 对象加 Extrude 厚度用透明阴影材质但这只适合做封面图不适合正式论文。6. 常见报错和排查顺序6.1 模型变形扭曲、破面、穿插很多卷曲模型失败不是修改器不会用而是修改器顺序和对象变换出了问题。比如一个平面已经应用了多个修改器先 Solidify 加厚度再 Simple Deform 弯曲两者的顺序不同弯曲效果截然不同。我一般把产生形变的修改器放在前面把增加厚度的修改器放在后面或者反过来——没有固定答案因为这取决于最终效果。关键是你需要知道修改器是从上往下执行的所以顺序就是计算顺序。如果破面出现在弯曲处首先检查该方向的分段数。分段数足够但仍有棱角再看是否开了 Auto Smooth 或添加了 Subdivision Surface 修改器。卷曲结构的边缘建议不加 Subdivision因为会大幅增加面数而且可能让尖角变圆。穿插问题最常见于螺旋带或 Screw 生成对象。螺距太小、带材太宽两圈之间就会互相穿过去。解决办法很简单增大螺距或减小带宽度。不要尝试用布尔去除穿插那个只会带来更多破面。6.2 UV 和贴图方向不对如果材质看起来花掉了先用棋盘格纹理排查。在材质节点里把 Principled BSDF 的 Base Color 接一个棋盘格纹理然后看模型如果棋盘格在卷曲方向上被拉长说明 UV 展开没有匹配弯曲方向或者纹理坐标用的是默认的 Generated 坐标在动态修改器作用下会“滑”。解决办法有三种应用所有修改器进入编辑模式重新展开 UV。使用 Texture Coordinate 的 Object 坐标让纹理贴到整个对象空间而不是沿着 UV。用 Mix 节点控制局部区域的材质避免用一张完整贴图覆盖整个卷曲表面。科研绘图不像游戏不需要每一处贴图都完美无瑕但方向不能乱。至少要在最终渲染里能认出图案的排列规律。6.3 渲染慢或内存占用高渲染变慢时很多人第一反应是提高采样其实先看看模型有多少面。几何节点的 Grid 如果 Vertices X512、Vertices Y256那就有 13 万个面加上材质和曲线细分后很容易达到几十万面。配合 Cycles 渲染普通笔记本会明显卡顿。优化顺序降低视图用分辨率在几何节点修改器里把 Grid 的 Vertices 降为四分之一观察阶段用。渲染前再提高分辨率。尽量不用 Subdivision Surface用更高分辨率的原始网格代替。关闭不相关的对象显示和体积。Cycles 采样没必要一开始就 512先用 64 看构图最终图再拉高。判断“卡顿是否正常”的一个标准物体旋转视角时如果视图 FPS 低于 10肯定需要降低面数如果只是最终渲染慢但视图流畅可以先不改几何节点只优化采样和场景。6.4 排错顺序清单最后给一个我自己用下来的排查顺序。遇到卷曲材料效果不对不要急着删了重做按这个顺序过一遍先看线框检查分段数是否足够是否有非流形面、重叠点。再看修改器列表确认应用了旋转/缩放修改器顺序是否符合预期。检查参数Simple Deform 的角度、Bend AxisScrew 的 Steps、Screw 值几何节点的 Grid 分辨率。检查材质把贴图换成棋盘格确认 UV 方向和拉伸情况。检查渲染设置是否开了透明背景、采样是否过低、是否有光晕遮挡。最后才考虑换成另一种建模路径。大部分问题其实出在前三步。尤其“应用旋转和缩放”这一项理论上很简单但实际项目里一半以上的卷曲变形异常都和对象变换没清理有关。只要你把这一步养成习惯后面能省很多时间。真正落到项目里你会发现关键还是先把结构类型想清楚再选一条克制且参数化的路径。卷曲材料不难画难的是每次调整都有迹可循。把这些修改器和几何节点当作可调参数来用你的科研绘图会稳定很多。
返回列表