三维仓库的研究及实现

2022-02-20 01:29王笑红
电脑知识与技术 2022年34期
关键词:三维仓库

王笑红

摘要:医疗卫生行业在物资库房中需要存入大量的物资以备使用,然而物资库房管理人员难以对库房中大量的不同规格、不同批次,甚至不同品种的物资进行准确、直观的管理。文章结合网络图形库(WebGL)、空间剖分法和层次包围盒法结合的碰撞检测算法,对三维仓库进行了研究及实现,通过建立三维库房的方式解决了上述问题的同时也为其他同类系统的开发提供了借鉴。

关键词:三维;仓库;WebGL;空间剖分法;层次包围盒法

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

文章编号:1009-3044(2022)34-0088-03

医疗卫生行业在诊疗工作中,需要使用相应的物资配合诊疗工作,因此会有大量的物资被存入库房中以备使用。然而医疗行业所用大部分物资会有同一品种多种规格、多批采购批次,但外形大体相同的情况,导致物资库房管理人员难以对库房中不同规格、不同批次,甚至不同品种的物资进行准确、直觀的管理。

现有的库房中库存物资分辨方式大多采用人工翻找、人工记录物资库位、在产品外添加RFID或二维码等方式实现对外形大体相同的物资进行分辨,然而因库房空间不足导致物资乱叠乱放、对库位进行编号的方式过于粗放,不够详细、对库存摆放情况的了解不够准确直观等原因,库房管理者往往无法准确、直观地对库房中物资进行分辨和管理。在物资外添加RFID或二维码的方式虽能够准确分辨外形大体相同的不同物资,然而二维码的识别距离有限,RFID的识别距离与RFID的价位挂钩,成本较高,且外形大体相同的物资在库房中大多因品种相似或相同等原因相邻摆放或堆叠,在产品外添加RFID的方式无法解决相邻摆放或堆叠的物资中某一种特定物资的识别问题。

为解决上述库房中物资管理存在的诸多问题,本文对三维仓库进行了研究及实现,使管理人员对库房中物资更为准确、直观地管理,也为同类系统的开发提供了借鉴。

1 系统设计

目前较为流行、轻便的三维仓库建模技术是基于浏览器/客户端(B/S)模式的WebGL技术,且B/S模式相对于客户端/服务器(Client/Server)模式来说在便捷性上具有更高的优势。然而原生的WebGL语言用于三维仓库建模过于复杂,因而选用WebGL的一个功能强大的类库Three.js来进行三维建模。

1.1 三维物资入库

在对物资进行入库时,因不同物资外形差异较大,且不断有新的不同外形的物资入库,旧有物资因淘汰而不再使用等情况发生,对每一种物资做三维模型成本高且收益低,因此通过使用外形简单的立方体代替外形复杂的实际物资在三维仓库中进行入库。在入库时,需人工指定该物资的存放位置,在指定物资存放位置时,该物资可能会与其他已有物资产生穿刺或者重叠,这明显与现实不符。因此添加碰撞检测功能防止物资存放在不符合现实的错误位置。

当前针对碰撞检测,比较常见且有效的方法是GPU[1]加速和HBV[2]。其中GPU加速虽然能够摆脱对CPU的消耗,提升图像处理效果,但是成本较高,且灵活性和扩展性受限。HBV是层次包围盒,通过一个相对规则的三维体包围盒包裹可能较为复杂的实际物体[3],从而降低碰撞检测的计算量,从策略和算法角度提高了碰撞检测的适应性[4],因此选择层次包围盒法进行碰撞检测。

层次包围盒中,有包围球、轴对齐包围盒(AABB包围盒)、方向包围盒等,其中球形包围盒包裹的紧密性较差,方向包围盒的构造过程复杂,而轴对齐包围盒构造容易、检测较快[5],且与实际物资外形大致相符因而包裹紧密性较好,因此在使用立方体代替实际物资时,通过填写入库物资的长宽高等参数,在三维场景中生成代替实际物资的轴对齐长方体包围盒,并用该包围盒采用投影法进行碰撞检测。投影法是通过检测新添加的物资的包围盒与其他物资的包围盒在X,Y,Z坐标轴上的投影是否重合来判断是否存在碰撞。如果新添加的包围盒与其他包围盒在X,Y,Z坐标轴上的投影全部重合,则该包围盒与其他包围盒存在碰撞,也即新添加的物资与其他物资存在碰撞,否则认为与其他物资不存在碰撞[6]。

随着仓库中存放的物资增多,在进行碰撞检测时,需判断是否与新入库物资产生碰撞的物体也在增多,进行碰撞检测的速度也会降低,而部分物体实际上与新入库物资相距较远,不会与新入库物资发生碰撞。因此,为增快碰撞检测速度,使用空间剖分法对三维立体空间进行空间剖分,仅检测与新入库物资处于同一空间区间的物资而不再检测与新入库物资处于不同空间区间从而不会与新入库物资产生碰撞的物资。设定一个空间内最大物资数量的阈值,如空间中物资数量超过阈值,则坐标轴上的剖分点生成垂直于坐标轴的分割面对空间进行剖分,将空间一分为二。在对空间进行剖分时,为避免空间占用浪费和减低计算效率,要选择合适的剖分点[7],剖分点需满足以该点进行剖分后,剖分出的两个子空间中的物资数量相近且总和最少。设剖分点为x,物资e上坐标点最小值为a,最大值为b,当a>x或者b<x时,e上坐标点都在x的一侧,e全部位于以x为剖分点剖分出的其中一个子空间,否则e上坐标点在x两侧,e同时存在于以x为剖分点剖分出的两个子空间内,因此,如果想让剖分出的两个子空间中的物资数量总和最少,则a>x和b<x的e数量最大。对a和b进行混合排序,生成序列N,剖分点x从N的最小值开始逐步增大,直到x等于N中的最大值。当x为N的最小值时,a>x的e数量为n,b<x的e数量为0,总和为n。在x逐步增大期间,a>x的e数量减小,b<x的e数量增加。设a>x的e数量为a,b>x的e数量为b,则a>x和b<x的e数量总和为:

a+n-b=n-(b-a) (1)

因为b为e上坐标最大值,a为e上坐标最小值,所以b>x的e数量大于等于a>x的e数量,如想让n-(b-a)最大,则b=a。因此在剖分点x逐步增大期间,记录序列中b=a的点,取最靠近中心的b=a的点作为剖分点x的取值。

该算法类似于空间剖分法中的K-d树,然而K-d樹是取子空间中物体数量的最小值作为阈值,小于阈值则停止剖分,然而这种剖分的方法会增加子空间的数量和空间剖分的计算量,本文所用的空间剖分算法在K-d树的基础上将子空间中物体数量的最大值作为阈值,减少了子空间的数量和空间剖分的计算量。

1.2 三维物资管理

通过对库房和物资进行三维建模并将物资信息绑定于三维模型上,库房管理员能够准确、直观地了解库房中物资的情况,而不必人工进入库房内部翻找,并能够通过绑定于三维模型上的物资信息准确、直观地分辨出外形相似的不同物资。

鼠标点选物资后标明所选中的物资并显示物资所绑定的相关信息。由于计算机屏幕只能显示二维图形,因此在表示三维模型时,会将三维场景转换为二维场景[8],并显示在计算机屏幕上。在用户与三维模型做交互时,用户是在二维场景进行操作,而三维模型处于三维场景中,因此需做二维场景和三维场景之间的坐标转换。使用Three.js进行三维场景构建时,三维模型在一个“画布”中进行二维呈现,二维场景的坐标原点在“画布”左上角,向右为X轴正向,向下为Y轴正向,三维场景的坐标原点在“画布”中点,向右为X轴正方向,向上为Y轴正方向,X、Y的取值范围均为[-1,1],且二维场景坐标系与三维场景中X、Y轴在同一平面上。设二维场景中画布长宽分别为X、Y,三维场景中坐标原点为(X,Y),则有:

X=(X-0)/2 (2)

Y=(Y-0)/2 (3)

设二维场景中画布上任一点坐标为(X1,Y1),其所对应的三维场景中的坐标为(X2,Y2),则有:

X=(X-X)/(X/2)=(2X/X)-1 (4)

Y=(Y-Y)/(Y/2)=1-(2Y/Y) (5)

用户在二维场景点选三维模型时,通过将用户点击的二维场景坐标转换为三维场景坐标后,在三维场景里以用户的视点与所点击的点做出一条射线,将射线第一个接触到的三维模型认为是用户想要在二维场景中点选的三维模型,并将模型上绑定的信息显示给用户。

为页面添加物资搜索功能,输入物资名称进行搜索,搜索到该物资后,将物资的颜色变更为绿色并将视角拉到搜索到的物资处,并显示物资所绑定的相关信息。

2 系统实现

输入物资参数,生成物资的包围盒如图1所示。

碰撞检测如图2所示。

入库如图3所示。

三维模型绑定物资信息如图4所示,便于物资库房管理人员对物资进行准确、直观的管理。

物资搜索功能如图5所示,使物资库房管理人员能够快速检索想要寻找的物资及物资信息。

3 结论

为实现医疗行业物资库房的准确、直观管理,本文对三维仓库进行了研究、设计和开发,实现了物资的三维入库和管理,并通过对空间分解法和包围盒法的集成应用,在充分地发挥了二者优点的同时,解决了不同三维物资实体之间的碰撞问题。本文对三维仓库进行的研究、设计和开发,同时也为其他同类软件的开发提供了借鉴。

参考文献:

[1] de Lucas E,Marcuello P,Parcerisa J M,et al.Ultra-low power render-based collision detection for CPU/GPU systems[C]//2015 48th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO).Waikiki,HI,USA.IEEE,2015:445-456.

[2] 靳雁霞,任超,李照,等.融合智能算法的变形体碰撞检测算法研究[J].计算机工程与应用,2017,53(19):130-135.

[3] 李照.融合智能优化算法的Snake模型变形体碰撞检测算法研究[D].太原:中北大学,2017.

[4] 惠学武,孟祥宇.融合包围盒智能算法的虚拟场景碰撞检测研究[J].计算机仿真,2021,38(7):209-213.

[5] 付丽敏.基于BIM的综合管线碰撞检测技术研究[D].西安:西安建筑科技大学,2017.

[6] 彭晏飞,卢真真.基于空间剖分和包围盒的快速碰撞检测算法[J].计算机应用与软件,2015,32(8):150-153,165.

[7] 程燕飞.基于WEB的三维厂区漫游的技术研究与系统实现[D].杭州:浙江工业大学,2016.

[8] 朱玲玲.自动化立体仓库虚拟仿真系统的开发与设计[D].保定:河北大学,2014.

【通联编辑:梁书】

猜你喜欢
三维仓库
四行仓库的悲壮往事
三维数字化移交技术在化工项目工程设计中的应用剖析
消防设备