基于Three.js和MindAR实现的网页端摄像头头部帽饰、头盔3D虚拟试穿戴功能(含源码)

news/2024/11/24 14:13:22/

前言

研究学习、使用Mind AR有一段时间了,发现它的虚拟试穿戴功能还是比较好玩的,对售卖头部佩戴相关产品的公司还是有一定的应用价值的。例如:耳环、口罩、眼镜、头盔和帽子等都是适用的。
于是我收集了很多头部佩戴相关的3D模型进行测试,感觉效果还是不错的,本案例是基于“examples/face-tracking/example2.html”修改而来,本案例在电脑浏览器中完美运行。

效果

在这里插入图片描述

切换:
在这里插入图片描述

猛男头盔:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

实现过程

3D模型是通过锚点的形式挂接在面部的某个点,具体面部的点参照面网图:
在这里插入图片描述

例如帽子一般挂在头顶(10)、额头(151)或者眉间(9)都可以,因为这里我的模型都是帽子,所以我们直接把它们都挂接在了头顶:

mindar-face-target="anchorIndex: 10"

如眼镜的话,锚点设置为168属于两眼之间,耳环的话分别设置锚点为127、356。其它的模型如口罩可以设置13/14.

其它的属性需要运行起来对比效果,再对模型的大小、缩放和旋转进行调整:
scale大小(这个参数根据模型比例来,如果看不见模型,多尝试设置几次):

scale="0.05 0.05 0.05"

rotation旋转:

rotation="0.1 -0 0"

position位置:

position="0 -0.3 -0.3"

由于都是帽子模型,所以将它们的选择逻辑设置为互斥的:

  const setVisible = (button, entities, visible) => {if (visible) {button.classList.add("selected");} else {button.classList.remove("selected");}entities.forEach((entity) => {entity.setAttribute("visible", visible);});}const setAllDisvisible = () => {list.forEach((item, index) => {visibles[index] = false;const button = document.querySelector("#" + item);const entities = document.querySelectorAll("." + item + "-entity");setVisible(button, entities, visibles[index]);});}list.forEach((item, index) => {const button = document.querySelector("#" + item);const entities = document.querySelectorAll("." + item + "-entity");setVisible(button, entities, visibles[index]);button.addEventListener('click', () => {setAllDisvisible();visibles[index] = !visibles[index];setVisible(button, entities, visibles[index]);});});

源码工程

https://download.csdn.net/download/qq_33789001/87855234
(打不开说明暂未通过审核,审核队列过长)


http://www.ppmy.cn/news/175438.html

相关文章

iframe跨框架脚本攻击,安全问题解决办法

跨框架脚本(XFS)漏洞使攻击者能够在恶意页面的 HTMLiframe 标记内加载易受攻击的应用程序。攻击者可以使用此漏洞设计点击劫持攻击,以实施钓鱼式攻击、框架探查攻击、社会工程攻击或跨站点请求伪造攻击。个人理解就是其他网站会在他的iframe中调用我的网站内容&…

网络层:地址解析协议ARP

网络层:地址解析协议ARP 笔记来源: 湖科大教书匠:ARP协议 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 B知道C的IP地址但如果不知道其对应的MAC地址,就无法将数据包发送给C,如何解决这个…

istio证书异常

istio有时会出现证书异常的问题,例如证书校验失败,证书过期等,此时需要我们手动处理istio证书问题。 一、我的istio版本 client version: 1.3.3 control plane version: 1.3.3二、开始处理 1、先查询istio的密钥istio-ca-secret&#xff1a…

学习韩语字母表 - 24小时快速学会韩语口语发音

韩语字母表由21个元音和19个辅音组成,可以组成许多音节。它既简单又具系统性,能全面的记录韩语的语音。 本软件涵盖最全的字母发音表,同时附带相对应字母例句,提供听力训练,让初学者在最短的时间内快速掌握韩语发音。 …

柯桥韩语学习,怎样学好韩语呢

柯桥韩语学习,怎样学好韩语呢,怎样开始学韩语呢 最近很多咨询韩语课程同学问了比较多的问题,现在简单给大家讲解下 怎样学好韩语呢 零基础的韩语学习者先要掌握韩语字母的发音,建议可以报一个韩语辅导班或者在线上学习一段时间。…

Emacs之magit提交代码(一百零八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

韩语翻译入门

在语言学习中,韩语算得上现在比较常见的语言了,而不同语言之间都有不同,同时也会对翻译产生很大的影响。那么怎么做好韩语的翻译呢?从业20年的专业翻译公司“彼岸译云”跟你分享一些关于韩语翻译的经验。 一、韩语特点 韩语与汉语…

翻译机

大家好,今天我要交大家如何制作一个翻译机。 中文 EN 法语 输入框 输出框 谢谢大家游览