产品经理:你能不能在网页里实现裸眼3D

简介: 最近产品经理在掘金社区的出镜率很高,看来大家都很喜闻乐见工程师与产品经理的相爱相杀。这次他让我调研一下在网页里实现裸眼3D这是故意为难我把?搞什么调研影响我摸鱼现在的我想拿枪打他拿弓箭射他点火烧他诶,如果我在3D场景中刻意加上一些框框,会不会看上去更立体呢?

方案一:造个框框,再打破它


现在我们用一个非常简单的立方体来试试看


image.png


image.png


立体感是稍微提升一点,但就这?那怕是交不了差的...


不过,大家发挥一下想象力,框框可以不全是直的,这个B站防遮挡弹幕是不是也让你产生了些裸眼3D的效果呢?


方案二:人脸识别


不行,谁都不能耽误我摸鱼。


此时我又想起另一个方案,是不是可以通过摄像头实时检测人脸在摄像头画面中的位置来模拟裸眼3D呢。我找到了tracking.js,这是一款在浏览器中可以实时进行人脸检测的库。


github.com/eduardolund…


var tracker = new tracking.ObjectTracker('face');
  tracker.setInitialScale(4);
  tracker.setStepSize(2);
  tracker.setEdgesDensity(0.1);
  tracking.track('#video', tracker, { camera: true });
  tracker.on('track', function(event) {
    context.clearRect(0, 0, canvas.width, canvas.height);
    event.data.forEach(function(rect) {
      context.strokeStyle = '#a64ceb';
      context.strokeRect(rect.x, rect.y, rect.width, rect.height);
      context.font = '11px Helvetica';
      context.fillStyle = "#fff";
      context.fillText('x: ' + rect.x + 'px', rect.x + rect.width + 5, rect.y + 11);
      context.fillText('y: ' + rect.y + 'px', rect.x + rect.width + 5, rect.y + 22);
    });
  });


image.png


我们可以看到,画面中呈现了人脸在摄像头视角画布中的坐标,有了这个坐标数据,我们就可以做很多事情了。


接着把它接到threejs中,我们仍然拿这个立方体来试试看


image.png


实际体验还有点意思,但录屏的感受不太明显,请自行下载demo源码试试看吧


方案三:陀螺仪


W3C标准APIDeviceOrientation,用于检测移动设备的旋转方向和加速度。通过这个API,我们可以获取到三个基础属性:


  • alpha(设备平放时,水平旋转的角度)


image.png


  • beta(设备平放时,绕横向X轴旋转的角度)


image.png


  • gamma(设备平放时,绕纵向Y轴旋转的角度)


image.png


这个API的使用非常简单,通过给window添加一个监听


function capture_orientation (event) { 
    var alpha = event.alpha; 
    var beta = event.beta; 
    var gamma = event.gamma; 
    console.log('Orientation - Alpha: '+alpha+', Beta: '+beta+', Gamma: '+gamma); 
}
window.addEventListener('deviceorientation', capture_orientation, false);


现在我们把这个加入到咱们的立方体演示中,在加入的过程中,这里需要注意的是,在IOS设备上,这个API需要主动申请用户权限。


window.DeviceOrientationEvent.requestPermission()
    .then(state => {
        switch (state) {
            case "granted":
                //在这里建立监听
                window.addEventListener('deviceorientation', capture_orientation, false);
                break;
            case "denied":
                alert("你拒绝了使用陀螺仪");
                break;
            case "prompt":
                alert("其他行为");
                break;
        }
});


返回的是一个promise,所以你也可以这么写


var permissionState = await window.DeviceOrientationEvent.requestPermission();
if(permissionState=="granted")window.addEventListener('deviceorientation', capture_orientation, false);


还有几点需要注意的事,requestPermission必须由用户主动发起,也就是必须在用户的行为事件里触发,比如“click”,还有就是这个API的调用,必须在HTTPS协议访问的网页里使用。


结语


至此,我能想到在网页里实现裸眼3D的几种方法都在此文中,你还能想到别的方法吗?请在评论区一起讨论吧。


相关文章
|
机器学习/深度学习 数据可视化 算法
ECA-Net:深度卷积神经网络的高效通道注意力
最近,**通道注意力机制**已被证明在提高深度卷积神经网络 (CNN) 的性能方面具有巨大潜力。然而,大多数现有方法致力于开发更复杂的注意力模块以获得更好的性能,这不可避免地增加了模型的复杂性。为了克服性能和复杂性权衡的悖论,**本文提出了一种高效通道注意 (ECA) 模块,该模块仅涉及少量参数,同时带来明显的性能增益**。通过剖析 SENet 中的通道注意模块,我们凭经验表明**避免降维对于学习通道注意很重要**,**适当的跨通道交互可以在显着降低模型复杂度的同时保持性能**。因此,**我们提出了一种无需降维的局部跨通道交互策略,可以通过一维卷积有效实现**。此外,**我们开发了一种自适应选
3947 0
ECA-Net:深度卷积神经网络的高效通道注意力
|
6月前
|
机器学习/深度学习 测试技术 数据中心
九坤量化开源IQuest-Coder-V1,代码大模型进入“流式”训练时代
2026年首日,九坤创始团队成立的至知创新研究院开源IQuest-Coder-V1系列代码大模型,涵盖7B至40B参数,支持128K上下文与GQA架构,提供Base、Instruct、Thinking及Loop版本。采用创新Code-Flow训练范式,模拟代码演化全过程,提升复杂任务推理能力,在SWE-Bench、LiveCodeBench等基准领先。全阶段checkpoint开放,支持本地部署与微调,助力研究与应用落地。
1663 2
|
7月前
|
弹性计算 人工智能 数据可视化
阿里云轻量应用服务器指南:省钱购买、远程连接及使用全教程
阿里云轻量应用服务器,2核2G配置,200M峰值带宽仅38元/年,新用户专享。支持一键部署WordPress、宝塔面板等,适合个人建站、学习测试。操作简单,管理便捷,提供可视化远程连接。高阶需求可选云服务器ECS。
|
11月前
|
监控 数据挖掘 API
利用拼多多 API 接口,实现拼多多店铺物流时效优化
在电商竞争激烈的今天,物流时效直接影响拼多多店铺的客户满意度与复购率。本文介绍如何通过拼多多开放平台的 API 接口,自动化获取订单与物流数据,分析时效瓶颈并制定优化策略。内容涵盖 API 基本功能、物流数据分析、智能优化方法及 Python 实现示例,帮助商家提升配送效率,降低退货率,增强用户体验与店铺竞争力。
1410 0
|
人工智能
智能体(AI Agent)开发实战之【Coze】(一)治愈和疗愈系图文一键量产
智能体(AI Agent)开发实战之【Coze】(一)治愈和疗愈系图文一键量产(附保姆级工作流)
智能体(AI Agent)开发实战之【Coze】(一)治愈和疗愈系图文一键量产
|
资源调度
安装项目的时候老是报错:Command failed.
安装项目的时候老是报错:Command failed.
577 122
|
人工智能 自然语言处理 API
ComfyUI-Copilot:阿里把AI助手塞进ComfyUI:一句话生成工作流,自动布线/调参/选模型,小白秒变大神!
ComfyUI-Copilot 是阿里推出的基于 ComfyUI 的 AI 智能助手,支持自然语言交互、智能节点推荐和自动工作流辅助,降低开发门槛并提升效率。
5560 9
ComfyUI-Copilot:阿里把AI助手塞进ComfyUI:一句话生成工作流,自动布线/调参/选模型,小白秒变大神!
|
消息中间件 Java Kafka
flowable6.8.0正式发布了
flowable6.8.0正式发布了
1333 0
|
SQL 数据采集 数据挖掘
Pandas数据合并:concat与merge
Pandas是Python中强大的数据分析库,提供灵活高效的数据结构和工具。本文详细介绍了Pandas中的两种主要合并方法——`concat`和`merge`。`concat`用于沿特定轴连接多个Pandas对象,适用于简单拼接场景;`merge`则类似于SQL的JOIN操作,根据键合并DataFrame,支持多种复杂关联。文章还探讨了常见问题及解决方案,如索引对齐、列名冲突和数据类型不一致等,帮助读者全面掌握这两种方法,提高数据分析效率。
1022 8