Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪

附件下载

联系工作人员获取附件

简介

在本示例中,我们将向您展示如何基于Speos中创建的动画场景生成视频。本文将首先介绍搭建动画场景所需的全部要求;随后,将讲解如何借助一套基于Python自动化的专用工作流,轻松快速地完成视频生成。该工作流的设计目标是无需用户直接操作脚本,因此无需任何Python/编程基础。本文的内容基于以下文章中介绍的 Timeline(时间轴)功能:《Speos时间轴最佳实践——ANSYS光学》

Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图1



注意事项:软件运行前置条件

  • 要正常使用本示例,您的计算机需安装以下工具及相关组件:
  • Ansys Speos 2024 R2或更高版本
  • Python OpenCV(工作流执行过程中会自动安装)
  • Python 3.10:无需额外安装,Speos 2024 R2已内置Python 3.10版本
  • 非管理员权限的Windows用户,请以管理员身份运行一次Virtual Photometric Lab 2024 R2(确保Speos API可正常调用)


概述


了解仿真工作流及关键结果


Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图2



本文提出一个汽车领域用例,演示交通信号灯频闪对车载前摄的影响。若您对脉冲宽度调制(PWM)用例感兴趣,请参考本文,了解如何从仿真结果生成视频。


步骤1:场景描述


搭建场景与静态元素


步骤2:设置运动对象


设置运动元素及其运动轨迹


步骤3:设置光源信号


设置交通信号灯光源及其光通量变化文件


步骤4:设置仿真


设置时间轴仿真


步骤5:设置视频自动化工作流


运行基于Python的流程,生成输出短视频


运行与结果


模型运行说明及关键结果分析


步骤1:场景描述


本示例采用极简场景,所有三维对象均通过Lightbox格式导入。采用该方案的原因有三点:


  1. 场景及工况包含运动车辆模型,而仅Lightbox格式支持几何模型的动态运动。CAD几何模型无法通过时间轴轨迹文件实现运动控制。
  2. 场景已为Speos仿真完成“网格就绪”预处理,因此仿真初始化阶段无需额外进行网格划分。该方式可优化视频生成的迭代流程,尽可能减少计算时间以外的无效耗时。
  3. 减小文件体积,便于文件共享。


本用例的文件/文件夹结构如下图所示:


Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图3



END文件夹中的特殊目录结构与本文最后一节描述的视频生成工作流相关联。


打开START.scdocx或END.scdocx文件后,3D视图中应显示以下元素:


Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图4



如果未正常显示,请按以下步骤操作:


  1. 进入「Simulation(仿真)」>「START」>「Components(组件)」
  2. 按住Ctrl键并点击,同时选中“Tunnel(隧道)”、“Cross_Road(十字路口)”和“Ego_Car(自车)”
  3. 右键点击并选择「compute(计算)」


三个Lightbox模型将按顺序完成计算,随后 3D 视图中会显示以下三维对象:


Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图5



START模型由以下Speos元素构成:


Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图6


END模型由以下Speos元素构成:


Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图7



步骤 2:设置运动对象


START工程中提供了两类可设置运动的对象:车身(Lightbox格式)和相机模型。我们已在SPEOS输入文件文件夹中提供了预定义的运动轨迹文件。如需了解轨迹文件的创建方法,建议参考《Speos Timeline Best Practices–Ansys Optics》一文。


要为Speos元素设置运动属性,请按以下步骤操作:


针对运动几何模型:


  1. [Optional]双击Ego_Car(自车模型)。
  2. 在“轨迹文件”栏中浏览并导入Trajectory_40kmh.json(时速40km/h的轨迹文件)。
  3. 轨迹文件导入完成后,3D视图中将显示一条运动轨迹线:
Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图8

针对运动相机:


  1. 双击Camera.Car(车载相机模型)。
  2. 在“轨迹文件”栏中浏览并导入Cam_Trajectory_30kmh.json(时速30km/h的相机轨迹文件)。
  3. 轨迹文件导入完成后,3D视图中将显示一条运动轨迹线:
Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图9


步骤 3:设置灯光信号

START工程中包含3个待编辑的面光源:红灯(RED_LED)、黄灯(ORANGE_LED)和绿灯(GREEN_LED)。每个光源都需配置对应的光通量变化文件。本示例的目标是模拟交通信号灯从绿灯→黄灯(短暂过渡)→红灯的LED频闪效果。如需了解时间轴与面光源的配合方式,建议参考《Speos Timeline Best Practices–Ansys Optics》一文的最后一节。


如何为面光源应用光通量变化文件:


  1. 双击Red_LED(红灯面光源)。
  2. 在「定义」选项卡中,点击右上角的齿轮图标,进入RED_LED的参数设置界面。
  3. 在「时间轴>光通量变化文件」中,导入Speos输入文件目录下的LED_Red.json文件。
  4. 对Orange_LED和Green_LED重复上述步骤,分别导入LED_Orange.json和LED_Green.json文件。


要实现交通信号灯的灯光切换效果,红、黄、绿灯的光通量变化文件必须采用统一的时间基准,且结束时间需与驾驶场景的结束时间同步。

Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图10


当光源信号处于非激活状态时,场景起始时刻(此处为 0 秒)与光源信号开始激活时刻之间的时间戳和信号值,可通过直接归零的方式省略处理。

Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图11


步骤 4:设置仿真

要执行基于相机传感器的时间轴仿真,需启用逆向仿真(Inverse simulation),并将「Timeline(时间轴)」参数设置为True,如下图所示:


Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图12



启用时间轴模式后,仿真定义界面底部会弹出一个新的参数选项。


Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图13


动态仿真参数选项位于仿真定义界面的底部。


Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图14



动态仿真参数可启用时间轴关联参数与时间步长参数。


步骤5:设置视频自动化工作流


现在模型已配置完成,可以保存并关闭项目,也可直接关闭 Speos 软件。本文介绍的视频生成工作流基于以下原理:


Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图15


该工作流可在Ansys Optical-automation的GitHub库中获取,也可在本文的示例数据集中,名为Video_Workflow_Template的文件夹内找到。


整个流程分为两大模块:


  1. 后端(Back end):包含处理文件。该模块依赖两个 Python 脚本:一个用于执行Speos仿真并生成帧图像,另一个则基于第一个脚本生成的图像合成视频。
  2. 前端(Front end):包含输入和执行文件。用户通过运行批处理文件(Batch file),并在YAML配置文件(.yml)中提供工作流参数来执行流程。


用户无需打开或编辑.py脚本文件。该流程已适配各类用户,即使不熟悉Python也能直接使用。


如前文架构图所示,该流程依赖多个文件,并遵循特定的文件夹结构,其结构如下图所示:


Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图16


为确保流程正常运行,需遵循以下规则:


  1. 项目文件存放:用于视频生成的项目数据(Speos 场景文件.scdocx + 相关输入文件与输出文件夹)必须放在PROJECT文件夹中。首次使用Timeline_Template时,PROJECT文件夹为空,需通过复制粘贴等方式填入项目数据。
  2. 流程参数配置:需在SCRIPTS文件夹下的Animation_Inputs.yml文件中指定流程输入参数。 


用户需遵循模板格式填写参数。该工作流包含错误处理机制,若参数设置不当,流程可能无法正常运行,甚至生成错误结果。


用例1和例2的END文件夹中已包含可直接用于视频自动化工作流的正确文件模板。


重要模型设置


本部分介绍本模型中关键对象与设置的说明


最重要的一点:运行仿真前,必须确保逆向仿真(Inverse simulation)中已启用时间轴模式(Timeline mode),否则轨迹文件和/或光通量变化文件将不会被识别生效。


如果你的公司默认未授予你电脑管理员权限,请在首次运行本工作流时确保拥有管理员权限,原因如下:


  • 流程会对XMP光度图进行操作,这意味着会通过Python API命令行调用并打开虚拟光度实验室(Virtual Photometric Lab)。要允许此API调用,需在电脑上以管理员身份运行一次虚拟光度实验室。该操作仅需执行一次,之后用户即可在普通权限会话中运行工作流。
  • OpenCV安装:首次运行批处理文件后会自动安装OpenCV库,该过程可能需要管理员权限,因此建议在首次执行时获取管理员权限。


根据自身参数更新模型


根据设备参数更新模型的操作说明


对于两个示例场景,如果你想创建自定义轨迹文件或光通量变化文件,最佳方式是复制示例中的文件,在保持文件结构不变的前提下修改参数值。如果需要从零创建文件,建议参考《Speos Timeline Best Practices》一文。


模型进阶应用


为希望进一步自定义模型的用户提供的信息与建议


将Speos时间轴视频帧连接至SSS Exporter


如果需要更进阶的应用,你甚至可以将本流程外生成的视频帧导入到Speos Sensor System Exporter(SSS Exporter,传感器系统导出工具)中。


在深入此部分内容前,建议你具备SSS Exporter的使用经验。


SSS Exporter支持特定的视频输出模式。我们提供了额外的Python脚本Timeline_To_SSS.py”,它与其他Python脚本一同位于Video_Workflow_Template>SCRIPTS目录下。


该流程需要以下两项输入:

  • 工作目录文件夹:存储所有XMP格式视频帧的目录。

    可通过将Animation_Inputs.yml中的Keep XMP参数设为Yes,来启用XMP格式输出。

  • SSS Exporter 的Inputs.yaml文件:脚本会基于该文件的结构,生成一个包含所有视频帧路径的新配置文件。


Inputs.yaml文件需设置为Given Files模式,否则无法使用SSS Exporter的视频模式。


脚本最终会输出一个新的YAML文件,其中列出了所有视频帧路径。


Ansys Speos|视频制作时间轴模拟:红绿灯LED频闪的图17


完成此步骤后,你只需使用生成的新Inputs.yaml文件运行 SSS Exporter,视频文件就会输出到Output文件夹中。


  1. 第10行:硬编码包含所有XMP帧的工作目录的绝对路径。
  2. 第11行:硬编码你的Input.yaml文件的绝对路径。
  3. 第46行:硬编码你新生成的Input.yaml文件的绝对路径(建议使用新文件名,避免覆盖作为参考的原文件)。
  4. 执行脚本。
  5. 运行SSS Exporter。
  6. 视频将生成在Output文件夹中。
登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP