Buy+技术是首个购物+VR的结合,而这个结合自然会出现一些难题,那么到底有哪些难题呢。
1、图片识别
作为技术人员,我们首先想到的是做图片识别。有一个标定的图片,然后跑算法,一帧一帧去算,看每张图片里是不是有你想要的物品。
但是这个方案经过讨论以后很快就被否定,也没有去尝试,因为走到每个位置时看到的物品的面都不一样,这给图像识别带来很大难度。
而且很多商品在场景中看上去并不是那么大,对图像识别的要求实在太高,按照目前的技术无法实现。
2、颜色识别
于是我们想到了一个办法,把整个全景视频拍两遍,第一遍正常拍,第二遍在有商品的位置用一个有特殊颜色的物品代替。
然后用颜色的识别来取出商品相应的位置;
这里有两个难点,首先两次拍摄的速度必须是一样的,另外需要把场景中特殊颜色的位置全部用图像算法抠出来。
我们真实尝试时发现了两个问题,一是如果代替物很小,在整个图片中的像素表现是不够的;二是很容易被其它颜色干扰。
比如灯光,每个商店的灯光不一样,而且环境中可能会有与物体颜色一样的东西。
经过多次尝试后发现,这个方案也是不可行的。因为我们对现场的灯光跟环境基本没有控制力。
3、转换坐标系
这时我们又尝试了另外一个方案,我们开始拍的时候把视频的第一帧拿出来,所有物体离摄像头的距离都测出来。
然后根据摄像头的匀速运动判断商品下一帧会在什么位置。
这个方案理论上蛮通的,但实现的时候也遇到很大技术困难,首先是匀速运动的问题,这个用轨道车可以解决。
第二点,整个坐标系转化的问题,测量时一个很小的误差会导致坐标系转化(平面坐标转化为三维坐标)产生很大的误差。
还有,每个摄像头的参数不一样,这导致每次坐标系转化的参数都要重新通过数据去训练。
我们尝试去训练Insta 360的一个设备,最后训练完拿到坐标系的参数,误差还可以。但是后来尝试其它摄像头,发现这个参数是完全不可用的。
到此我们的第三种方案也基本可以认为是不可行的。
4、空间移动方案
这次我们完成了两个方向的全自由移动,原理也是蛮简单的,我们把一个视频拍完以后,转成一个倒播的视频。
只需要在正向走动的时候播正向的视频。
5、3D商品的展示和交互体系
3D商品的展现,我们选择了一个蛮实用的方案,就是每个物品环拍一圈,然后每隔一定度数取一张照片,把它形成一个连播的文件。
用户进来的时候,就默认先播一圈,但这里也有蛮坑的事情。如果商品和背景需要融合得很好的话,需要把背景抠成透明的。
我们做了几百个商品,每个商品都有很多张图片,基本上属于不能完成的工作量。
我们通过绿幕的手段,结合一些图片提取的方法让效率变得很高,最终把这件事情完成。
刚才提到功能上线在手淘,像这种超级app对包的大小非常敏感,导致我们没法用一些现成的游戏引擎。
里面所有UI和交互都是我们自己用Open GL研发的。
我们构建了自己的坐标体验,事件的调度体系,UI复用还有粒子系统,动画系统和事件检测机制。
网友评论