谷动谷力

 找回密码
 立即注册
查看: 1103|回复: 0
打印 上一主题 下一主题
收起左侧

让你的 PCB “炫”起来: KiCad 中的 3D 渲染

[复制链接]
跳转到指定楼层
楼主
发表于 2024-3-29 22:37:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sunsili 于 2024-3-29 22:46 编辑

让你的 PCB “炫”起来: KiCad 中的 3D 渲染


本文会介绍如何使用 KiCad 自带的 3D 查看器渲染 PCBA,使用 Raytracing 光线追踪技术生成逼真的效果图。



PCBA 渲染图
PCBA 渲染图可以帮助设计师在实际制造之前查看 PCB/A 的外观和布局,提供了一种直观的方式来展示产品的功能和造型,有助于赢得客户的信任和兴趣。以下是一些渲染图的实例:



这些渲染图几乎可以与实物媲美,甚至比实拍的照片更酷炫,非常适合在市场营销时使用。

KiCad 中渲染 PCB

我们来看一下怎么用 KiCad 进行渲染。以自带的 video 为例,先打开 PCB,然后使用快捷键 Alt+3 切换到 3D 模式。
默认使用的是实时渲染模式,可以打开“设置->偏好设置”,查看实时渲染的一些配置:
换一个视角,以便观察:
可以在右侧的外观面板中修改层的颜色并配置是否需要显示器件模型、位号等文本信息。
默认的设置是“使用电路层叠颜色”,取消该选项,点击层左侧的颜色图标,即可修改显示的颜色。我们尝试将 F.Mask顶层阻焊改成红色:
对于要求不高的场合,这样子的图片勉强也可以凑合。但对我们来说,这样是绝对不够的!直接打开 Raytracing 光线追踪效果(工具栏第三个图标,或者点击设置->光线追踪),和之前的图对比一下:
直观的感觉是图片变亮了(设置了环境光为白色),但细看的话,会发现图片更真实了,器件有了阴影。我们局部放大看一下:
观察到器件的阴影/倒影了吗?我们将阻焊层的透明度调低,露出导线,这样的效果更真实:

光线追踪设置详解

打开偏好设置,找到 3D查看器中的“光线追踪渲染器”设置页面。我们最需要关心的是“灯光配置”,这将直接影响显示的效果:

默认情况下,所有的光线都为“暗黑色”,光线非常暗,因此看不出什么效果:

直接将环境光设为“白色”,可以明显看到区别:
这里的“顶部光线”、“底部光线”代表了光源的位置。以PCB平面为参考,顶部光线就在PCB顶层正上方的光源。举例来说,我们将顶部光线设为蓝色:
此时将试图设为“顶视图”(快捷键 Z),就可以看到下图光线从PCB中心向周围扩散的效果:
同样的,如果将光线1(仰角 67度 + 方位角 45度)改成蓝色,效果是如下所示,大家可以做个对比。

下方的光线1~8定义了8种不同的光源,您可以随意设置光源的位置及颜色。再来一种。再来一个不同光源组合的视图(顶部蓝光、左下黄光、右上粉色光),方便大家理解:

仰角和方位角

在三维空间中,光线的传播方向可以用两个角度来描述: 仰角(Elevation)和方位角(Azimuth)。下图中假设 PCB 初始位置在 xy 平面中,且 x 轴为 PCB 的水平方向对称轴。
仰角(Elevation)
仰角是指光线与水平面的夹角(这里指PCB所在平面),范围在0°到180°之间。仰角为0°时,光线与水平面平行;仰角为90°时,光线垂直向上或向下。
例如:
  • 正中午的太阳光线的仰角约为90°(假设地面平坦)
  • 日出和日落时分,太阳光线的仰角接近0°
方位角(Azimuth)
方位角是指光线在水平面上的方向,相对于参考方向(通常为正北)的角度(这里可以理解为光源投影到PCB平面与PCB中心的连线与PCB水平轴的夹角),范围在0°到360°之间。
例如:
  • 正东方向的光线方位角为90°
  • 正西方向的光线方位角为270°
  • 正北方向的光线方位角为0°或360°
我们可以用一个例子来说明:
假设现在是下午3点,太阳位于西南方向,仰角约为45°,方位角约为225°。这意味着太阳光线与地面的夹角为45°,在水平面上的方向是从正北开始的第225°方向。
利用仰角和方位角两个角度,我们就可以精确描述一束光线在三维空间中的传播方向。这在计算机图形学、影视特效、航空航天等领域中都有广泛应用。
当然,阴影效果除了和仰角、方位角相关外,还与光源距离物体的距离及物料本身的角度相关。
可以反复调整光源方向及颜色,直到效果满意为止。
修改默认的光线追踪参数
KiCad 中设置了光线追踪的默认参数,每次打开一个新的 PCB,都会使用这些默认参数。比如,光源的默认颜色为(43,43,43),非常接近黑色。
如果希望修改默认配置,需要找到 Appdata 下的 KiCad 配置文件路径,比如 Windows 在类似以下的路径:C:\Users\admin\AppData\Roaming\kicad\8.0找到名为 3d_viewer.json 的文件。 打开后可以修改其中的默认参数:
每次打开 3D 查看器时,系统都会加载配置文件中的设置。

使用 CLI 输出渲染图(光线追踪)


除了在 KiCad 中的 3D查看器中进行图片渲染之外,还可以使用 CLI(命令行)接口直接输出渲染图。使用 CLI 的优点是不用打开 KiCad,且使用固定的参数进行图像输出。也就是说无论什么设计,都可以按预定义旋转角度、光源完成渲染。CLI 的使用方式如下:
  1. Usage: render [--help] [--output OUTPUT_FILE] [--define-var KEY=VALUE] [--width WIDTH] [--height HEIGHT] [--side SIDE] [--background BG] [--quality QUALITY] [--preset PRESET] [--floor] [--perspective] [--zoom ZOOM] [--pan VECTOR] [--pivot PIVOT] [--rotate ANGLES] INPUT_FILE

  2. Renders the PCB in 3D view to PNG or JPEG image

  3. Positional arguments:
  4.   INPUT_FILE        Input file

  5. Optional arguments:
  6.   -h, --help        Shows help message and exits
  7.   -o, --output      Output file [nargs=0..1] [default: ""]
  8.   -D, --define-var  Overrides or adds project variables, can be used multiple times to declare multiple variables.
  9.                     Use in the format of '--define-var key=value' or '-D key=value' [nargs=0..1] [default: {}]
  10.   -w, --width       Image width [nargs=0..1] [default: 1600]
  11.   -h, --height      Image height [nargs=0..1] [default: 900]
  12.   --side            Render from side. Options: top, bottom, left, right, front, back [nargs=0..1] [default: "top"]
  13.   --background      Image background. Options: transparent, opaque. Default: transparent for PNG, opaque for JPEG [nargs=0..1] [default: ""]
  14.   --quality         Render quality. Options: basic, high, user [nargs=0..1] [default: "basic"]
  15.   --preset          Color preset. Options: follow_pcb_editor, follow_plot_settings, legacy_preset_flag, ... [nargs=0..1] [default: "follow_plot_settings"]
  16.   --floor           Enables floor, shadows and post-processing, even if disabled in quality preset
  17.   --perspective     Use perspective projection instead of orthogonal
  18.   --zoom            Camera zoom [nargs=0..1] [default: 1]
  19.   --pan             Pan camera, format 'X,Y,Z' e.g.: '3,0,0' [nargs=0..1] [default: ""]
  20.   --pivot           Set pivot point relative to the board center in centimeters, format 'X,Y,Z' e.g.: '-10,2,0' [nargs=0..1] [default: ""]
  21.   --rotate          Rotate board, format 'X,Y,Z' e.g.: '-45,0,45' for isometric view [nargs=0..1] [default: ""]
复制代码

举例来说,对 video 的文件使用以下命令:
  1. kicad-cli pcb render --floor --zoom 1.4 --rotate '-45,0,45' -o render.png video.kicad_pcb
复制代码

就可以得到如下旋转后的渲染图:

使用 CLI 还可以将背景设为透明。该功能已经 Merge 到主干,有望在后续的版本中支持。

结束语


虽然 KiCad 自带的光线追踪渲染已经有了不错的功能,但对追求卓越的工程师来说还是不够:KiCad 无法为不同类型对象添加材质、纹理;无法设置图形背景;光源的调整也不是很灵活等等...
如果希望达到专业级的效果,还必须配合专业的渲染工具,比如 Blender。
在后面的推文中,会详细介绍如何使用 KiCad + Blender 完成专业级别的渲染,敬请期待!


+10
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-12-28 04:52 , Processed in 0.092656 second(s), 42 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表