虚拟实验室-Unreal 版本

虚拟实验室的Unreal 版本,第一个版本主要是以《探究通电螺线管外部的磁场分布》颗粒为例,设计和开发一个正式版本。


未来实验-步骤套路蓝图开发说明

<h1><strong>Git仓库</strong></h1> <h3><strong>步骤套路插件</strong></h3> <p>git@gitlab.ndaeweb.com:app-code/vlab-unreal-structsteps-plugin.git</p> <p>备注:由于目前播放器的资源加载流程未开发完成,步骤套路蓝图直接作为资源添加在工程里,对应的文件路径在\Content\Blueprints\Steps。</p> <p>分支:当前最新的特性分支为feature/Labplayer_v2,稳定版本会定期合并到develop</p> <h3><strong>播放器工程</strong></h3> <p>git@gitlab.ndaeweb.com:app-cpp/vlab-ue532-labplayer.git</p> <p>分支:当前最新的特性分支为feature/Labplayer_v1(实际开发时需重新确认可用分支)</p> <h1><strong>开发流程</strong></h1> <h3><strong>创建蓝图类</strong></h3> <p>新建蓝图类,从AStepRoutineBase继承。(也可以直接复制现有的步骤套路蓝图进行修改,更方便一点)</p> <h3><strong>配置输入参数</strong></h3> <p>新建蓝图类的成员变量,变量类型支持string、float、int32、int64、bool、Vector。变量名需与步骤套路元数据的json配置的名称一致。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=b68566f08bc3860c8483b888a29b2665&amp;amp;file=file.png" alt="" /></p> <h3><strong>重载实现步骤套路执行生命周期函数</strong></h3> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=7e128ebdea665c1b5d89487049ffe918&amp;amp;file=file.png" alt="" /></p> <h4><strong>Start函数</strong></h4> <p>步骤套路执行的入口是Start函数,因此可在Start中执行一些初始化操作 由于EventStart是override基类的Start函数,因此最后需要调用执行Parent:Start节点 参数的初始化也可以放在下文提到的BindParameter函数中执行 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=74907aa914a8e1d8774ef147791b7434&amp;amp;file=file.png" alt="" /></p> <h4><strong>Stop函数</strong></h4> <p>停止步骤套路的入口函数,一般在此处停止正在自动运行的操作、销毁引导提示等。由于目前播放器还没实现相关功能,所以目前还没实现该函数。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=bbba204083b99d9fef7c5de41b377ac7&amp;amp;file=file.png" alt="" /></p> <h4><strong>StartAutoPlayMode函数</strong></h4> <p>自动播放模式的执行入口,如果实验颗粒中配置当前步骤套路的执行模式是AutoPlay,则会执行该函数。 自动播放模式下,一般是在此处依次调用所有要执行的自动操作,然后结束当前步骤。如下图所示,步骤套路-拼接的自动模式,直接调用拼接接口即可完成当前步骤套路。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a4f3982c64147a548013bb47cfea0e59&amp;amp;file=file.png" alt="" /></p> <h4><strong>StartStepByStepMode函数</strong></h4> <p>自动播放模式的执行入口,如果实验颗粒中配置当前步骤套路的执行模式是StepByStep,则会执行该函数。 引导模式下,一般是在此处执行引导模式的一些前置的初始化操作,如器材的交互禁用等。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=e0cd1854ca2e2f1d0d80944c5a369740&amp;amp;file=file.png" alt="" /></p> <h4><strong>StartSemiOpenMode函数</strong></h4> <p>半开放模式的执行入口,如果实验颗粒中配置当前步骤套路的执行模式是SemiOpen,则会执行该函数。 与引导模式类似,一般是在此处执行引导模式的一些前置的初始化操作。</p> <h4><strong>TickImplementationAutoPlayMode函数</strong></h4> <p>自动模式的Tick执行入口。已有的需求里,自动模式暂时没有用到这个函数,不实现即可。</p> <h4><strong>TickImplementationStepByStepMode函数</strong></h4> <p>引导的Tick执行入口。一般在此处判断引导模式的完成条件是否已满足,如果已满足,则结束当前步骤套路。 为了提高性能,可根据业务需要手动设置Tick的时间间隔。</p> <h4><strong>TickImplementationSemiOpenMode函数</strong></h4> <p>半开放的Tick执行入口。与引导模式类似,在此处判断完成条件是否已满足。部分套路的需求里,引导和半开放的Tick函数实现可能相同。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=623a25a59519c45ded6c203a200637d7&amp;amp;file=file.png" alt="" /></p> <h4><strong>VerifyParameter函数</strong></h4> <p>用于校验参数是否合法,如果返回false,则当前步骤套路不会执行,会调用Fail,同时输出错误日志。 该函数主要是为了方便排查bug,对业务功能没有实际意义,可根据需要实现。如果不实现该函数,则默认返回true。</p> <h4><strong>BindParameter函数</strong></h4> <p>VerifyParameter执行后,会执行BindParameter函数,可用于做一些参数初始化操作 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=23cdd1af0b9a46bb02f7c82aa2c40321&amp;amp;file=file.png" alt="" /></p> <h4><strong>Finish/Success/Fail函数</strong></h4> <p>调用后当前步骤套路即结束运行。步骤套路执行失败时调用Fail,执行完成调用Finish。考虑到半开放模式的特殊需求,用户操作符合正确要求可使用Success,不正确但是不阻塞后续流程使用Finish。 由于目前这块需求不明确,且播放器也没有实现对应的交互功能,目前调用这3个函数在功能上是相同的表现。</p> <h4><strong>SetStepOutputParameterValue函数</strong></h4> <p>用于将参数值保存到步骤套路播放器的上下文中,用于跨步骤套路使用参数值,与Unity版本中的步骤套路输出参数需求一致。目前已有的步骤套路需求中还没用到。</p> <h3><strong>步骤套路的嵌套调用</strong></h3> <p>目前的设计以及没有mini步骤的概念,但是允许在步骤套路中调用颗粒度更小的步骤套,如移动、拼接、旋转等基础能力步骤套路。 基础能力步骤套路已封装成蓝图异步任务节点,可直接搜索: <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=26a85894cd5807f5a5f1deaf61acdde6&amp;amp;file=file.png" alt="" /></p> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a91e6bd37cedf4c496d18525bb472a54&amp;amp;file=file.png" alt="" /></p> <p>鼠标移动到节点上时会有相关参数的说明 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=6242c92ba7e79b1dcf938278d3c3ceb4&amp;amp;file=file.png" alt="" /></p> <p>备注: <em> 使用OnCompleted输出节点,是在步骤套路执行完成时才被异步调用 </em> 在目前的已有需求里,一般是自动播放模式才嵌套使用步骤套路,其他模式理论上也支持,只是实际意义不是很大。 * 现已提供了 播放表演语料和切换相机的步骤套路蓝图节点,可以在步骤套路内部使用对应的功能。但是由于其对应的能力是属于表演,目前功能未完整实现,播放表演语料只支持字幕显示,TTS语音未实现;切换镜头只定义了接口,功能未实现。 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=dd8cc3b3901332cc290520b467377d4b&amp;amp;file=file.png" alt="" /></p> <h1><strong>交互能力接口</strong></h1> <p>交互组件提供的能力由c++实现,提供相关接口直接触发交互能力。其对应的接口分类实现在如下代码中,可以直接查看函数的定义和注释说明。</p> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=0f618bd6a08e905c539588ac8b637825&amp;amp;file=file.png" alt="" /></p> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=dbb7342d1f2a5c8c2b2c2d366d5c3e43&amp;amp;file=file.png" alt="" /></p> <p>使用示例:</p> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=8069129e6a1168a60f21dc025c81556a&amp;amp;file=file.png" alt="" /></p> <h1><strong>判定查询能力接口</strong></h1> <p>主要用于引导和半开放模式,用于判定是否满足完成条件,其对应能力由c++实现,实现在UStepEquipmentQueryHelper中,后续会根据业务需求陆续补充</p> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ac014224efb9da9846d5804d724930fb&amp;amp;file=file.png" alt="" /></p> <p>使用示例:</p> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=dd12f4631a37727459c4735c28a8e985&amp;amp;file=file.png" alt="" /></p> <h1><strong>步骤套路元数据</strong></h1> <p><em> 步骤套路元数据示例如下,与Unity版本大致相同,只是删除了一些不再需要的字段 </em> 步骤套路的Code为蓝图的文件名去掉&quot;BP_&quot;前缀,如蓝图文件名为BP_StepPour,则Code为StepPour. * 参数的Code需与蓝图类中的成员变量名保持一致</p> <pre><code class="language-json"> { &amp;quot;code&amp;quot;: &amp;quot;StepPour&amp;quot;, &amp;quot;version&amp;quot;: &amp;quot;1.0.0&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;【药品添加】-倾倒&amp;quot;, &amp;quot;parameters&amp;quot;: [ { &amp;quot;code&amp;quot;: &amp;quot;Equipment&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;倾倒容器&amp;quot;, &amp;quot;type&amp;quot;: &amp;quot;equipment&amp;quot; }, { &amp;quot;code&amp;quot;: &amp;quot;TargetEquipment&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;被倾倒的目标容器&amp;quot;, &amp;quot;type&amp;quot;: &amp;quot;equipment&amp;quot; }, { &amp;quot;code&amp;quot;: &amp;quot;Volume&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;液体添加量&amp;quot;, &amp;quot;type&amp;quot;: &amp;quot;float&amp;quot;, &amp;quot;default_value&amp;quot;: &amp;quot;5&amp;quot; } ] }</code></pre> <h1>附:</h1> <p>【腾讯文档】未来实验-步骤套路-已开发的步骤套路清单 <a href="https://docs.qq.com/sheet/DSnVlYmZxWHlkTVNa?tab=BB08J2">https://docs.qq.com/sheet/DSnVlYmZxWHlkTVNa?tab=BB08J2</a></p>

页面列表

ITEM_HTML