网页也能裸眼3D?只需一个电脑摄像头就能完成

news2024/11/18 5:59:50

和2D显示屏、手机屏幕相比,VR图像为什么看起来更加沉浸、立体呢?一方面是透镜将左右眼图像结合,形成3D视觉效果,而另一方面则归功于屏幕画面与头部追踪的同步作用。

简单来讲,就是VR会根据用户头部的位置和朝向来改变其眼前的画面,每一帧画面对应了用户观看眼前场景的不同视角,从而模拟人眼3D视觉效果,营造一种立体、沉浸的感觉。

换句话说,假如你看传统电脑显示屏,不管从哪个角度看它,屏幕上的图像观感都是静止的。当然,我们也可以通过动态渲染和模拟,来营造一种裸眼3D的感觉,比如任天堂3DS就通过双摄像头,来捕捉人眼双目视差,从而形成3D观感。近期,电商平台Shopify的“空间商务项目”团队就研发了一种类似的技术,该技术名为WonkaVision,特点是用2D显示器实现裸眼3D视觉效果,且成本低,通过电脑摄像头来追踪用户头部,从而将电脑屏幕的静止画面变得立体。

据青亭网了解,WonkaVision灵感来自于谷歌工程总监Johnny Lee在15年前的一个发明,当时Lee经过改装,将任天堂Wii控制器变成了红外头部追踪装置,用来定位穿戴在用户头上的传感器,并利用捕捉到的头部信息,将2D屏幕变成了跟随头部变化的裸眼3D效果(宣称是“VR效果”)。尽管Lee的改装发明获得网友普遍好评,给人留下了深刻的印象,但它几乎从未被商用。据悉,Lee此前曾参与过微软Kinect项目,也曾是Google Tango的负责人,而现在则在谷歌从事AR设备和体验管理。

改进的裸眼3D方案

为了改进Lee的设计,Shopify想用电脑摄像头来取代Wii控制器,并将裸眼3D程序在浏览器中运行。Shopify表示:如果使用电脑摄像头就能实现Lee的方案,那么它将被更多人使用,甚至可能带来全新的网络交互体验。未来可以和电商平台很好的结合,比如打造虚拟界面、立体的商品预览等等,如将品牌网站打造成立体的虚拟店面,允许消费者查看店面中的商品,就像是在线下逛商场的感觉。

值得注意的是,WonkaVision并非通过红外信号定位头部,而是通过摄像头来追踪用户的眼球。通常电脑摄像头为单目方案,于是项目组采用谷歌MediaPipe Iris眼球追踪模型,它使用单个RGB摄像头就能定位人眼的位置,以及瞳孔的特征点,无需借助专门的硬件。基于此,WonkaVision可预测出人眼和摄像头之间的相对位置,相对误差小于10%。

不过由于MediaPipe Iris并没有开源的JavaScript,所以不能在网页端运行。于是,Shopify改用MediaPipe Face Mesh,来测量摄像头与人眼之间的距离,经验证其准确性对WonkaVision足够用。以下是它的流程:

  • 1)MediaPipe Face Mesh检测瞳孔周围四个点(上下左右);
  • 2)结合四个点距离,以及瞳孔平均宽度(11.7毫米),来预测用户瞳孔参数;
  • 3)结合瞳孔参数和摄像头参数,通过简单的针孔相机模型方程,来计算出人眼在空间中的深度/距离,从而推算出其X、Y坐标。

通过检测黑白棋盘四角,来计算摄像头参数

利用DIY方式验证瞳孔距离预测的准确度

将屏幕变成虚拟窗口

通过WonkaVision,Shopify希望那个将2D显示屏变成一个“窗口”,就像是当你透过窗户查看外面立体景色那样,屏幕显示的画面会跟随你的视角、距离而变化,看起来就像窗外的景色。

在解决眼球追踪功能后,Shopify团队在游戏引擎中建立了一个3D场景,并将该场景与屏幕边缘对齐,将摄像头的位置作为起始点。也就是说,该场景显示在屏幕上的每一帧,都是根据人眼和屏幕/摄像头的距离来改变。

为什么要将虚拟场景和物理屏幕对齐呢?Shopify解释,为了让屏幕有窗户的效果,则需要假设屏幕边框存在于虚拟世界中。与此同时,还在人眼(右眼)的位置设置了一个虚拟相机,这样虚拟相机就能捕捉到,在人眼位置看3D场景的效果(看起来具有远近深度)。

同轴和离轴透视投影

在这个方案中,Shopify还探索了3D成像的同轴、离轴投影问题。

如果WonkaVision的虚拟相机使用轴上透视投影方案,那么视椎体看起来像是形状不变的金字塔,它的问题是窗框外边的虚拟场景也会透出来。那么如果使用离轴透视投影矩阵,虚拟相机的视椎体则看起来像是不对称的金字塔,底部固定在虚拟窗口上,从正面看起来视觉效果理想,虚拟场景的内容会根据视角和距离而变化,窗口边缘外的虚拟内容不可见。

另外,WonkaVision的虚拟相机位于右眼,而非双眼中间。这是因为它追踪双眼位置来渲染3D效果,而非定位整个头部。但它有一个局限,就是只能将虚拟相机放在一只眼睛的位置,观看时需要闭上另一只眼睛。而如果将虚拟摄像头放在双眼中间,则无法准确计算双目视差,导致深度错觉感消失。Shopify表示:虚拟摄像头放在双眼中间时,依然能生成有趣的效果,但立体感不够理想。

实际上,VR头显就基于类似原理。VR会将同一个场景渲染两次,分别对应左右眼,并分别显示在屏幕左侧或右侧(或是左右两块屏幕)。而对于WonkaVision来讲,由于只有一块屏幕,因此便仅从一只眼的角度来进行渲染。

最终原型

经过验证,WonkaVision视觉效果自然,看起来就像从屏幕中冲出来一样。未来,除了虚拟商品、店面展示外,WonkaVision也可以为动画、游戏等内容带来有趣的3D视觉体验,比如用肉眼感知僵尸从屏幕里面走出来的感觉。

不过与Lee的方案类似,WonkaVision也存在一些局限,导致其难以被广泛应用。Shopify指出,虽然解决了硬件成本问题,但摄像头参数很难计算,而且屏幕的尺寸各不相同,因此难以适配。此外,它还有一些局限,比如需要闭上一只眼才有好的效果,这无疑为用户体验带来了门槛。

尽管WonkaVision可以在网页端运行,但它依然不适合广泛使用,因为目前仅适用于一种屏幕尺寸,和一种固定的摄像头参数。除非能够轻松获得任何摄像头参数,以及屏幕尺寸,否则这种3D模拟方案将很难成为主流。参考:Shopify

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/681999.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高工奖项|如何破解智能汽车「缺芯少魂」?破冰者已经出现

对于智能驾驶赛道来说,2023年将是至关重要的一年。芯片短缺影响正在逐步得到缓解,但车市不确定性正在加剧,同时,车企在智能化普及上的成本压力也在凸显。 高工智能汽车研究院监测数据显示,2022年度中国市场&#xff08…

JS--一

三目运算 :用于赋值 switch case return 遍历数组: 一般不用for...in 遍历数组,是因为 for...in 遍历的数组下标,是 字符串形 而是用for...in 遍历 对象 时间监听--addEventListener 时间类型 一定加引号!&#xf…

[Web程序设计]实验: 请求与响应

一、实验目的 (1)掌握浏览器请求时数据的传递和获取。 (2)掌握服务端响应时数据的传递及获取。 二、实验内容 (1)编写一个类,该类能够实现在访问完Servlet后,还能在浏览器地址栏…

OSPF快速收敛之FRR

一、实验 OSPF IP FRR(Fast ReRoute,快速重路由) OSPF IP FRR是动态IP FRR,利用LFA(Loop-Free Alternates)算法预先计算出备份路径,保存在转发表中,以备在故障时将流量快速切换到备…

编码规范之命名规范

前言: \textcolor{Green}{前言:} 前言: 💞这个专栏就专门来记录一下寒假参加的第五期字节跳动训练营 💞从这个专栏里面可以迅速获得Go的知识 今天的笔记是昨天的补充,对编码规范中的命名规范进行总结。主要…

管理类联考——逻辑——知识篇——形式逻辑——六、假言——haimian

假言 考点分析 假言 年度 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023题量106312461345 定义分类 假言命题是断定一全事物情况的存在是另一个事物情况存在的条件的命题,又称条件命题。假言命题可以分为三类:充分条件假言命题、必要…

WPF开发txt阅读器19:加载json格式的配置文件

文章目录 系统参数字典加载参数自动加载配置文件 txt阅读器系列: 需求分析和文件读写目录提取类💎列表控件与目录💎快捷键翻页字体控件绑定💎前景/背景颜色书籍管理系统💎用树形图管理书籍语音播放💎播放进…

大数据从0到1的完美落地之Flume模型

Flume的模型 数据模型 - 单一数据模型 - 多数据流模型 复制代码 单一数据模型 在单个 Agent 内由单个 Source, Channel, Sink 建立一个单一的数据流模型,如下图所示,整个数据流为 Web Server --> Source --> Channel --> Sink --> HDFS。…

ViewModel进阶 | 使用SavedState实现数据复用的另一种方式

前言:金风玉露一相逢,便胜人间无数。 前言 本文需要有上一篇文章基础,如果不了解的可以先看看《由浅入深,ViewModel配置变更的复用详解》 前面我们了解到,ViewModel 它只能做到因为配置变更页面被销毁而导致重建数据…

ModaHub AI模型开源社区:向量数据库Milvus向量索引是什么?

目录 向量索引 索引创建机制 数据段建索引 用户主动创建索引 闲时建索引 索引概览 FLAT IVF_FLAT IVF_SQ8 IVF_SQ8H IVF_PQ RNSG HNSW ANNOY 选择索引 常见问题 参考文献 向量索引 向量索引(vector index)是指通过某种数学模型&#xf…

软路由系统 --- OpenWrt网络配置(LAN口、WAN口)

这里使用的 OpenWrt 是一台虚拟机安装的. 配置LAN口IP等信息 编辑修改网络配置文件 rootOpenWrt:~# vi /etc/config/network config interface lanoption type bridgeoption ifname eth0option proto staticoption ipaddr 192.168.100.4option netmask 255.255.255.0option i…

Servlet(下篇)

哥几个来学 Servlet 啦 ~~ 这个是 Servlet(上篇)的链接, (2条消息) Servlet (上篇)_小枫 ~的博客-CSDN博客https://blog.csdn.net/m0_64247824/article/details/131229873主要讲了 Servlet的定义、Servlet的部署方式、…

【总结】网页状态码——200正常、302重定向、304客户端有缓存、400浏览器请求传参异常、404未找到、405方法不允许、500服务器异常

目录 200正常500异常--服务器异常Java代码400异常----传参相关的异常get方法长度限制400异常,加了RequestParam(value "name") 必须传值400异常,后端类型是Integer,前端传的是string,转换失败400异常,日期格…

一文带你学习“国密算法”

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌ Java知识图谱点击链接:体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收…

ES6--一

1、ES6之includes()方法 Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似。 一般常用这种写法 : [1,2,3].includes(2) 表示2在不在 前面的数组里 项目里 参数 1)第一个参数是要…

VUE L 计算监视属性 ⑥

目录 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持✨ V u e j s Vuejs Vuejs计算属性 C o m p u t e d Computed Computed监视属性 W a t c h Watch Watch总结 文章有误请指正,如果觉得对你有用,…

SpringBoot 实现 elasticsearch 索引操作(RestHighLevelClient 的应用)

文章目录 0. 引入依赖1. 实例创建与关闭2. 创建索引3. 测试索引库存在不存在4. 删除索引库5. 遍历导入数据6. 批量导入数据(推荐) RestHighLevelClient 是 Elasticsearch 官方提供的Java高级客户端,用于与Elasticsearch集群进行交互和执行各种…

基于Java+Swing实现中国象棋游戏

基于JavaSwing实现中国象棋游戏 一、系统介绍二、功能展示三、其他系统四、获取源码 前言 中国象棋是起源于中国的一种棋,属于二人对抗性游戏的一种,在中国有着悠久的历史。由于用具简单,趣味性强,成为流行极为广泛的棋艺活动。 …

操作系统之死锁详解

本文已收录于专栏 《自考》 目录 背景介绍死锁的前提死锁的概念死锁的分类死锁的产生原因条件 死锁的解决预防避免检测与恢复 死锁的实现总结提升 背景介绍 最近一直在做操作系统的测试题,在做题的过程中发现有很多地方涉及到了关于死锁的知识点。今天就回归课本来自…

机器学习——手写数据集的介绍以及案例讲解

系列文章目录 机器学习聚类——DBSCAN(Density-based spatial clustering of applications with noise,基于密度的聚类算法) 机器学习集成学习——Adaboost分离器算法 机器学习聚类算法——BIRCH算法、DBSCAN算法、OPTICS算法 机器学习的…