APP下载

职业病防治虚拟现实系统的设计与实现

2024-05-19张竞波孔娅妮肖华亮凌榛

电脑知识与技术 2024年7期
关键词:VR技术

张竞波 孔娅妮 肖华亮 凌榛

摘要:目前,计算机虚拟现实(VR) 技术主要应用在高危行业和医疗行业的虚拟仿真化工作中,其沉浸式体验感和真实还原现场的特点极大降低了高危行业和医疗行业在生产和技术培训方面的风险。在职业病防治领域VR技术暂未涉及。本项目通过计算机虚拟现实(VR) 技术与职业病防治工作的结合,把原本需要花费大量人力、物力才能开展的现场开展的职业病防治培训、防治设备演示等工作利用VR技术虚拟仿真化。在经济上降低了职业病防治的成本,更可以利用互联网+技术打破地域空间的限制,提高职业病防治的覆盖面、规范化和工作效率。

关键词:计算机虚拟现实技术;职业病防治;计算机平台设计;VR技术

中图分类号:TP311      文献标识码:A

文章编号:1009-3044(2024)07-0110-04

开放科学(资源服务)标识码(OSID)

1 背景

职业病危害涉及各行各业,其危害因素繁多,多种健康影响因素交织,各行业职业人群健康面临多重疾病威胁。传统的职业病防治工作中需要通过相关单位不定期组织专业人员到现场开展职业病防治相关培训,需要耗费大量人力、财力、不利于监督和落实情况的自查自纠。同时,职业病防治培训过程中职业病防护器具穿戴展示、职业病危害宣传、职业病防治过程考核、职业病防治规范培训等相关工作知识技能覆盖面广,对处于工作状态的企业而言也面临巨大负担。

课题团队通过调研发现,在职业病防治宣传和培训过程中,相关职业病防治法律法规、职业病防护器具穿戴展示等可以通过短视频的形式进行演示,职业病防治场所布置、设备使用体验可以通过计算机虚拟现实(VR) 技术实现。行政监督部门和相关职业病防治实施企业可以在现有的软硬件基础上,定制职业病防护器具VR体验系统、定制基于WEB的VR职业病防治网络体验馆、定制职业病防治宣传视频等,以提高职业病防治的工作效率,并协助培养基层职业健康监管人员和专业技术人员,有效提高其专业知识和技能水平,提升职业病危害治理能力。

为实现计算机虚拟现实技术(VR) 在职业病防治工作中的应用,课题团队拟开发职业病防治虚拟现实系统,采用包括3DMAX、MAYA等三维软件构建相关三维模型。采用Unity3D中进行三维注册,编写C#、C++脚本语言实现交互,结合数据头盔、立体眼镜、数据手套等硬件,使参与者在空间上能够自由移动、旋转、实现六自由度体验。同时采用外置力反馈输出设备,在体验中感知力度的存在。考虑到行政监督部门的统一宣传和管理,课题团队拟采用全景拍摄技术把实景环境制作成可交互的虚拟现实VR视频,结合WEB服务器可实现多平台进行全面管理和推广。

2 系统整体设计

课题组团队通过对职业病防治虚拟现实系统的调研,拟从三维建模、Unity3D三维注册、全景视频拍摄、虚拟现实WEB系统设计、WEB服务器搭建等方面进行系统建设。

3 系统功能设计

职业病防治虚拟现实系统包括虚拟场景搭建和真实场景虚拟化两个部分。

3.1 虚拟场景搭建

虚拟场景搭建是为了把具有高危險性和高成本的演示环节,通过虚拟现实技术的沉浸式体验让体验者在保证安全的前提下,更加真切地感受到实际生产中导致职业病产生的原因,同时,利用虚拟场景中的交互技术,让体验者通过使用数据头盔、立体眼镜、数据手套等硬件正确的穿戴防护用品。该项功能不仅可以用作体验和技能培训,还可以作为上岗安全培训的模拟实操环节,进一步降低企业的生产风险和保障培训员工的工作安全。

3.1.1 三维模型设计

职业病防治中需要建立三维模型的对象是根据具体的应用场景来建立,如:防毒面罩是在员工需要接触到吸入型有毒物质时使用。在具有光污染的工作环境时,则需要使用护目镜。因此,为保障不同工种在不同环境使用的具体需求,课题团队将包括:降噪耳塞、防噪耳罩、防毒面罩、护目镜、防护服、防护手套、防尘口罩等专业防护设备在3Dmax软件中进行了建模(如图2所示)。

完成三维建模以后,还需要对模型进行三维渲染。三维渲染是一种将虚拟场景转化为二维图像的过程,其中光的应用起到了至关重要的作用。其原理是通过模拟光线在虚拟场景中的传播和交互来创建逼真的图像。过程涉及多个关键步骤,包括场景建模、光照计算、材质表现和最终图像生成。其中,光照计算是实现真实感的关键步骤之一,它决定了场景中各个物体的明暗、阴影和反射效果[1]。

3.1.2 使用3D引擎实现交互

建好的三维模型是只能观看不能利用硬件进行交互的,因此,需要使用3D引擎实现交互。3D引擎是虚拟现实软件系统开发的核心工具,负责场景搭建、交互程序设计、业务逻辑控制、前后端数据通信等功能的实现,主流的常用软件为Unity3D、UE4,这两款3D引擎软件最初主要用于三维游戏的设计、开发,其中Unity3D具有跨平台部署、多种编程语言的程序库支持、物理属性模拟、粒子特效等技术优势,且匹配有丰富的第三方资源库和多种第三方软件工具的通信接口,使其在虚拟现实技术领域也快速得到了广泛应用,此外针对数据通信,Unity3D还提供了MySQL与SQLite两类数据库接口[2]。在此使用到了Unity3D中的input类和手势控制的相关函数,实现对模型的平移、旋转、放大和缩小等功能。

通过在Unity3D中使用C#脚本绑定模型可以实现电脑鼠标对模型的控制,但是,沉浸式体验中需要使用到VR眼镜、控制手柄等VR设备,在此,需要使用Unity3D中添加Actions动作来连接手柄等硬件。如:需要使用手柄控制模型的移动和选择,则需要新建并绑定“move”和“rotate”两个动作。具体代码如下:

Vector move;

Vector rotate;

void Awake()

}

controls =new PlayerControls();

controls.Gameplay.Grow.performed +=ctx >Grow();

controls.Gameplay.Reduce.performed +=ctx =>Reduce();

controls.Gameplay.Move.performed +=ctx =>move =ctx.ReadValue();

controls.Gameplay.Move.canceled +=ctx =>move =Vector2.zero;

controls.Gameplay.Rotate.performed+=ctx =>rotate =ctx.ReadValue();

controls.Gameplay.Rotate.canceled +=ctx =>rotate =Vector2.zero;

}

3.2 真实场景虚拟化

根据课题团队的前期调查发现,地方行政执法监督部门一般设置有专门的职业卫生监督实训基地,该基地的主要功能包括:职业病防治法律法规宣传栏、职业病防治设备使用展示空间、具体职业病防治措施图文介绍、具体职业病防护用品展示视频展播、现场模拟执法教学、执法文书培训等。该基地占地面积不大,若要定期开展企业员工和兄弟单位执法人员开展培训,一次性接纳人数有限,且参培人员需要前往基地才可开展。另外,地方行政执法监督部门一般会设置具有代表性的企业作为职业病防治科普基地,该科普基地一般为在生成的规模级以上企业,前往企业进行科普培训也在一定程度上影响企业生产和安全。

因此,课题团队拟采用虚拟全景视频技术,把真实的培训、生产、执法环境通过全景视频技术制作后通过自主搭建的全景WEB服务器在互联网上进行实景还原。

3.2.1 全景视频制作

全景视频制作是把具体空间利用720度全景图片拍摄,再利用全景WEB系统形成可交互的全景视频。

720度全景图制作有别于360度全景图,它包含顶部和底部空间展示,需要使用到全景相机或全景云台进行拍摄。其基本原理是根据使用相机的镜头角度拍摄能够覆盖被摄空间的照片。拍摄的可以使用大疆如影系列的稳定器中的全景拍摄功能配合超广角镜头进行拍摄,一般选用10-16mm镜头最佳,视镜头视角可拍摄8-16张不等的照片用于后期合成。该拍摄方案拍摄精度高、衔接度好,但是其设备使用较高,不利于后续系统使用企業自主更新。根据这一情况,课题团队使用手动拍摄云台加华为手机进行拍摄同样可以达到制作效果。其优点是拍摄成本低,设备上手难度低。但使用手动云台加华为手机拍摄会因为广角不够大的原因,导致需要拍24-48张照片进行后期合成,合成难度相对较高。

拍摄完成后的多张照片需要利用全景合成软件PTGui合成为一张完整的全景图片。PTGui软件可以根据单张照片中的衔接点自动对齐照片拼接为一张全景图,但是,在拼接过程中经常会出现自动识别错误导致的画面错误,因此需要使用PTGui软件中的控制点工具,手动精准地把2张拼接图中的控制点对齐。同时,PTGui还支持通过对对比度、曝光补偿、白平衡等调节对不同曝光量照片在拼接时的自动曝光调整。

通过PTGui导出的720度全景图可能存在如:污点、鬼影、虚影等失真情况,还需要再经过photoshop等软件的精修和调色才可以完成静态的720度全景图片制作。

3.2.2 全景WEB服务器搭建

根据课题团队前期调研,拟结合相关部门现有网络环境,采用B/S模式,利用PHP+MYSQL开发相应的全景WEB系统,可以实现用户管理及访问权限管理、720度全景图上传、全景图编辑、图像视频素材上传、下载权限设置、分享二维码生成等主要功能。

(1) 服务器端功能描述

服务器端的功能设计包括资源管理、全景生成、图形处理与数据库服务等模块。资源管理模块主要负责管理端对全景照片、素材文件、视频文件、音频文件等资源的上传。全景生成模块负责对全景图片进行格式转换与信息解析等。在图形处理模块中,可以实现图片信息编辑、链接热点生成等。数据库服务模块则负责服务器与数据库的通信、数据库的备份与恢复,当服务器解析的任务请求涉及数据库操作时,由服务器对数据库进行读写访问,并将最终结果返回至客户端[3]。

(2) 部分系统功能

①上传全景照片

前期拍摄的全景照片需要根据展播顺序上传全景WEB系统。具体代码如下:

$act = Common::sfilter($_REQUEST['act']);

if ($act == 'list') {

$page = intval($_REQUEST['page']);

$page = $page<1?1:$page;

$size =  27;

$list = get_ring_projects($page,$size);

echo $Json->encode($list);

exit;

}else{

}

$tp->assign('host',$_lang['cdn_host']);

function get_ring_projects($page,$size){

$sql = "select * from ".$GLOBALS['Base']->table('ring_around')." order by id desc limit ".($page-1)*$size.",".$size;

$res = $GLOBALS['Db']->query($sql);

foreach ($res as $k => $v) {

if(empty($list[$k]['img_path'])){

$list[$k]['img_path'] = $GLOBALS['Db']->query("SELECT img_path FROM ".$GLOBALS['Base']->table('ring_around_img')." WHERE rid=".$v['id'],"One");

$list[$k]['img_path'] = $list[$k]['host'].'/'.$list[$k]['img_path'];

}}

return $res;

}

②生成全景視频

拍摄形成的720度全景图是一张静态的jpg图片,在线下本地访问只能通过左右拖动观看,720度的全景观看有很大的变形问题。因此必须利用程序代码将其转换为可拖动查看的720全景影像。具体代码如下:

$act = Common::sfilter($_REQUEST['act']);

if ($act == 'list') {

$page = intval($_REQUEST['page']);

$page = $page<1?1:$page;

$size =  24;

$recommend = isset($_REQUEST['recommend']) ? intval($_REQUEST['recommend']) : 1;

$list = get_video_projects($recommend,$page,$size);

echo $Json->encode($list);

exit;

}

$tp->assign('video_top_ad',Transaction::get_ad_by_postion(4));

function get_video_projects($recommend,$page,$size){

$sql = "select id,vname,thumb_path,browsing_num from ".$GLOBALS['Base']->table('video')." where 1 ";

if($recommend>0){

$sql .= "and recommend=1 ";

$GLOBALS['tp']->assign('recommend',1);

}

$sql.=' limit '.($page-1)*$size.','.$size;

$res = $GLOBALS['Db']->query($sql);

return $res;

}

③提取全景图片进行编辑

对需要进行编辑的全景照片系统可以实现照片尺寸、页面层叠顺序、标题、描述等信息的编辑。具体代码如下:

if(!defined('IN_T')){

die('hacking attempt');

}

$act = Common::sfilter($_REQUEST['act']);

if ($act == 'list') {

$tag = intval($_REQUEST['tag']);

$page = intval($_REQUEST['page']);

$page = $page<1?1:$page;

$size =  27;

$list = get_picture_projects($tag,$page,$size);

echo $Json->encode($list);

exit;

}else{

$tp->assign('picture_tags',get_picture_tags());

$tp->assign('picturs_top_ad',Transaction::get_ad_by_postion(3));

}

function get_picture_tags(){

$sql = "select * from ".$GLOBALS['Base']->table('tag')." where type=1 order by sort asc, id asc";

$res = $GLOBALS['Db']->query($sql);

return $res;

}

function get_picture_projects($tag,$page,$size){

$sql = "select w.name,w.thumb_path,w.view_uuid,w.profile,w.browsing_num ".

"from ".$GLOBALS['Base']->table('worksmain')." as w ";

if($tag>0){

$sql .= "right join (select works_id from ".$GLOBALS['Base']->table('tag_works')." where tag_id=$tag group by works_id) as t on t.works_id=w.pk_works_main ";

}

if($tag==-1){

$sql .= "where w.recommend=1 ";

}

$sql .= "order by w.pk_works_main desc limit ".($page-1)*$size.",".$size;;

$res = $GLOBALS['Db']->query($sql);

return $res;

}

④上传的视频在线播放

实际拍摄的全景视频中往往会连接部分如:操作演示、政策解读等内容的短视频,浏览者通过全景WEB系统浏览全景视频的同时,可以点击在线播放相应的视频文件实现在线浏览。具体代码如下:

function get_time(cur_time,total_time,seekpos){

console.log("拖动之前:"+parseInt(cur_time));

console.log("拖动之后:"+parseInt(total_time*seekpos));

}

function update_title(title){

document.title = title;

}

⑤文件下载功能

若浏览者需要获取全景WEB系统中的相关文件、图片、视频等,可以通过下载功能获得。具体代码如下:

define('IN_T',true);

require_once " ";

$act = Common::sfilter($_REQUEST['act']);

if ($act=='project') {

$filename = Common::sfilter($_REQUEST['filename']);

$filename = str_replace('.','',$filename).'.zip';

$url = ROOT_PATH.'temp/down/'.$filename;

if (!file_exists($url)) {

die('找不到该文件');

}

createDowanload($url,$filename);

exit;

}

function createDowanload($url,$filename,$isDelete=false){

@ini_set("max_execution_time", "1800");

ob_clean();

header('Cache-control: private');

header("Content-type:application/x-zip-compressed");

header('Content-Length: '.filesize($url));

header('Content-Disposition:attachment; filename='.$filename);

flush();

$fh = @fopen($url, 'r');

while(!feof($fh)){

print fread($fh, 1024);

flush();

}

@fclose($fh);

if($isDelete)

unlink($url);

}

4 職业病防治虚拟现实系统存在的不足

职业病防治虚拟现实系统采用VR技术让使用者在职业病防治培训过程中身临其境,除了逼真的视觉效果,良好的触觉反馈也是十分重要的[4]。这包括噪声信息采集、气体带来的视觉、触觉感受、软硬物体对皮肤触感的影响等均有待进一步的开发和研究。

其次,企业职业病产生的环境和因素较多,采用VR技术逐一实现也有教改的生产成本和技术难度要求。因此,目前比较可行的方案是将普识性的内容通过VR技术实现,将较为特殊的案例用传统方式进行展现。

第三,有研究表明,VR设备会导致一系列精神神经症状如恶心、眩晕、幻视等[5]。对于不适宜使用VR设备的人员而言,强制要求通过职业病防治虚拟现实系统反而会适得其反。

职业病防治虚拟现实系统能够模拟出真实的场景与真实的设备,能够有效提升职业病产生场景的真实性与沉浸性。其推广和应用能使得相关政府执法监督部分提高职业病防治宣传、监督和培训的效率,降低企业和相关单位的培训经费,让参培人员的培训时间更加灵活,缩短了培训周期,降低了参培人员在培训过程中造成安全风险的可能性,为基层卫生执法工作提供了有力帮助,也为一线企业员工的身体健康和生产安全提供能支持。

参考文献:

[1] 姚又龙.虚拟现实交互设计中光的应用研究[J].鞋类工艺与设计,2023,3(20):36-38.

[2] 高强.基于Unity3D虚拟空间交互系统[J].信息记录材料,2023,24(9):176-178.

[3] 周叶平,汪有韬,兰清生,等.基于VR技术的电梯限速器校验培训系统设计[J].机械管理开发,2023,38(10):134-136.

[4] 熊冉,黄华兴,曹月洲.浅谈虚拟现实技术在模拟医学教育中的应用[J].科技风,2023(31):124-126.

[5] 周颖,石思洁.虚拟现实在实验室建模设计中的应用[J].集成电路应用,2023,40(10):419-421.

【通联编辑:光文玲】

猜你喜欢

VR技术
虚拟现实技术在新闻报道中的应用
手机载体下VR技术的发展及应用
VR技术现况及其未来对游戏设计的影响
解析AR技术在动画电影中的应用
VR(虚拟)技术在电影制作中的实际应用及影响研究
VR技术在网购中的应用及相关问题阐述
视频直播模式下的新闻生产方式
VR技术的军事化运用浅探
VR技术对古陶瓷修复和展示的研究和运用
VR技术在实战化教学中的应用研究