【2023 AR元宇宙过圣诞!】《Merry Meta Christmas》

news2024/11/17 17:51:46

啥也不说了,先看最终效果

3D场景资源、EasyAR_Plugin、图片与安卓App资源均已上传,点击该处下载

一、前言

圣诞节的真正含义是为了纪念耶稣诞生,象征着团圆美满,万物复苏,日子变得愈发美好

2021年是元宇宙的元年,而2022年的圣诞节,元宇宙已经2岁了,就像一个蹒跚学步的小孩,在不断的成长完善

他们都有着庆祝愈发美好的寓意,因此作者将二者进行结合,创造出了AR元宇宙版的庆祝圣诞,祝愿中国的元宇宙发展更上一层楼,也祝福大家来年快乐、幸运!

二、创意名

既然有着圣诞元素和元宇宙元素,不如就叫做《Merry Meta Christmas》吧

三、效果展示

四、实现步骤

首先创建一个3D工程

 将Unity圣诞3D资源包导入到场景后,进行DIY创造自己的AR展示场景

 导入EasyAR插件资源包

 

 进入EasyAR开发者中心进行申请EasyAR License Key

尤其注意这里的Package Name 是com.DefaultCompany.你的包名

 获取Sense Liicense Key

 将获取的Sense License Key填入其中

 在场景中放置EasyAR_ImageTracker-1和mageTarget对象

在Assets文件夹下创建一个StreamingAssets文件夹,并将所需识别的图片放置其中。

在ImageTarget的Image File Source中的Path填写图片的完整名字,场景便会自动出现该图片

 在EasyAR_ImageTracker-1中设置AR Session的Center Target为ImageTarget

将所创造的圣诞场景放置于ImageTarget对象下

 调整所识别图片与对象之间的距离和方向

 将背景色设置为纯色

到这一步,AR的工作就完成啦

接下来我们写一个脚本,实现手指触屏来旋转放缩控制对象,具体的脚本代码详看第五部分

 将写好的脚本代码拖放至对象中

最后,我们将其导出为安卓apk文件,就可以在手机上运行了

Run成功后,会在手机上产生一个软件,运行该软件扫描识别图即可

五、编码实现

该脚本可以实现手指触屏来放缩旋转物体

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class control : MonoBehaviour
{
    private Touch oldTouch1;  //上次触摸点1(手指1)
    private Touch oldTouch2;  //上次触摸点2(手指2)
    void Update()
    {
        //没有触摸,就是触摸点为0
        if (Input.touchCount <= 0)
        {
            return;
        }
        //单点触摸, 水平上下旋转
        if ( Input.touchCount ==1)
        {
            Touch touch = Input.GetTouch(0);
            Vector2 deltaPos = touch.deltaPosition;
            transform.Rotate(Vector3.down * deltaPos.x, Space.World);//绕Y轴进行旋转
            transform.Rotate(Vector3.right * deltaPos.y, Space.World);//绕X轴进行旋转,下面我们还可以写绕Z轴进行旋转
        }
        //多点触摸, 放大缩小
        Touch newTouch1 = Input.GetTouch(0);
        Touch newTouch2 = Input.GetTouch(1);
        //第2点刚开始接触屏幕, 只记录,不做处理
        if (newTouch2.phase == TouchPhase.Began)
        {
            oldTouch2 = newTouch2;
            oldTouch1 = newTouch1;
            return;
        }
        //计算老的两点距离和新的两点间距离,变大要放大模型,变小要缩放模型
        float oldDistance = Vector2.Distance(oldTouch1.position, oldTouch2.position);
        float newDistance = Vector2.Distance(newTouch1.position, newTouch2.position);
        //两个距离之差,为正表示放大手势, 为负表示缩小手势
        float offset = newDistance - oldDistance;
        //放大因子, 一个像素按 0.01倍来算(100可调整)
        float scaleFactor = offset / 75f;
        Vector3 localScale = transform.localScale;
        Vector3 scale = new Vector3(localScale.x + scaleFactor,
                                    localScale.y + scaleFactor,
                                    localScale.z + scaleFactor);
        //在什么情况下进行缩放
        if (scale.x >= 0.5f && scale.y <= 2f)
        {
            transform.localScale = scale;
        }
        //记住最新的触摸点,下次使用
        oldTouch1 = newTouch1;
        oldTouch2 = newTouch2;
    }
}

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

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

相关文章

UE5 狐獴演示Demo分析

1.特效的生成方式 1.1临时特效的生成&#xff1a;使用了已生成轨道临时创建该特效&#xff08;不用在场景中放入该特效&#xff0c;而是临时创建即可&#xff09;、系统生命周期轨道设置该特效的播放时长 1.2长期特效的生成&#xff1a;特效时长为该镜头片段长度 2.特效的类…

输出数组中每一行(列)中的最小值(最大值)numpy.amin()numpy.amax()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 输出数组中每一行&#xff08;列&#xff09;中的最小值&#xff08;最大值&#xff09; numpy.amin() numpy.amax() [太阳]选择题 对下面代码中np.amin(myList, 0)输出的结果为&#xff1f;…

java基于ssh的旅游系统

本项目主要发西安各个旅游景点和附近酒店信息的网站&#xff0c;用户可以根据旅游团一起旅游&#xff0c;可以也可以自驾游&#xff0c;还可以发布旅游活动等。 演示视频 https://www.bilibili.com/video/BV1wv411x7cg/?share_sourcecopy_web&vd_sourceed0f04fbb713154db…

【Vue】七、Vue-cli工程化开发

后端程序员的vue学习之路一、 Vue-cli安装Vue-cli1、安装node.js2、配置node.js环境变量3、 Npm仓库设置淘宝源4、全局安装 vue-cli5、创建vue应用程序1、 创建vue项目基础骨架&#xff1a;2、 运行项目&#xff1a;6、vue项目结构二、Vue.js项目运行逻辑分析1、 npm run dev命…

3.11.2、虚拟局域网 VLAN 实现机制

虚拟局域网 VLAN 技术是在交换机上实现的&#xff0c;需要交换机能够实现以下两大功能 能够处理带有 VLAN 标记的帧&#xff1a;IEEE 802.1Q 帧交换机的各端口支持不同的端口类型&#xff08;帧的处理方式有所不同&#xff09; 1、IEEE 802.1Q 帧 IEEE 802.1Q 帧&#xff08…

Java项目:SpringBoot美容院预约管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本系统分为管理员与普通用户两种角色&#xff1b; 管理员角色包含以下功能&#xff1a; 登录,首页,新增管理员,管理员信息列表,网站用户信息列表…

node.js+uni计算机毕设项目基于微信小程序校园心理咨询(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等…

RabbitMQ 第一天 基础 1 MQ的基本概念 1.1 MQ 概述 1.2 MQ的优势和 劣势 1.3 MQ的优势

RabbitMQ 【黑马程序员RabbitMQ全套教程&#xff0c;rabbitmq消息中间件到实战】 文章目录RabbitMQ第一天 基础1 MQ的基本概念1.1 MQ 概述1.1.1 MQ 概述1.1.2 小结1.2 MQ的优势和 劣势1.2.1 概述1.3 MQ的优势1.3.1 应用解耦1.3.2 异步提速1.3.3 削峰填谷1.3.4 小结第一天 基础…

【SpringMVC】SpringMVC模型数据+视图解析器

目录 一、模型数据-如何将数据存入request域 二、模型数据-如何将数据存入session域 三、ModelAttribute 四、视图解析器 相关文章 【SpringMVC】入门篇&#xff1a;带你了解SpringMVC的执行流程【SpringMVC】入门篇&#xff1a;带你了解SpringMVC的执行流程 【SpringMVC】使用…

springboot整合swagger

特别说明&#xff1a;本次项目整合基于idea进行的&#xff0c;如果使用Eclipse可能操作会略有不同&#xff0c;不过总的来说不影响。 springboot整合之如何选择版本及项目搭建 springboot整合之版本号统一管理 springboot整合mybatis-plusdurid数据库连接池 springboot整合…

node.js+uni计算机毕设项目儿童健康成长档案小程序(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等…

暂时性死区以及函数作用域

暂时性死区 暂时性死区也就是变量声明到声明完成的区块&#xff0c;这个区块是一个封闭的作用域&#xff0c;直到声明完成。 如果在变量声明之前使用该变量&#xff0c;那么该变量是不可用的&#xff0c;也就被称为暂时性死区。 var 没有暂时性死区&#xff0c;因为var存在变…

Python编程 递归函数

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.函数执行注意点 二.递归函数 1.递归的介绍 2.例子 前言 本章将会讲解…

新版H5微信网页JS-SDK自定义分享功能实现

1.先用 微信官方文档demo&#xff0c;下载下来去改就行&#xff0c; 概述 | 微信开放文档 2.&#xff08;后端&#xff09;填写上认证后的&#xff0c;公众号appid&#xff0c;appsecret。 3.&#xff08;前端代码&#xff09; 配置好需要的接口&#xff08;调试打开debug&a…

自研框架(Webx)整合Zuul网关工作总结

写在前面&#xff0c;最近被分配了一个技术任务&#xff0c;简单描述为自研框架&#xff08;类比Spring&#xff09;整合一个微服务网关&#xff0c;并且能用就行。 有人可能会问&#xff0c;想用微服务网关&#xff0c;不是直接引入zuul或者gateway相关的依赖&#xff0c;然后…

【Pandas入门教程】如何合并多个表中的数据

如何合并多个表中的数据 来源&#xff1a;Pandas官网&#xff1a;https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html 笔记托管&#xff1a;https://gitee.com/DingJiaxiong/machine-learning-study 文章目录如何合并多个表中的数据导包数据准备【1】…

Linux系统基础——文件子系统

title: Linux系统文件子系统 date: 2022-12-18 15:48:24 modify: 2022-12-18 16:48:43 author: wangjianfeng tags: 001-computer-technology, OS, Linux aliases: Linux系统文件子系统 特此说明: 刘超的趣谈linux操作系统是比较重要的参考资料&#xff0c;本文大部分内容和图…

腾讯云轻量应用服务器搭建LAMP 开发环境

LAMP&#xff08;LinuxApacheMySQLPHP&#xff09;是目前国际流行的 Web 应用框架&#xff0c;包括了 Linux 操作系统、Apache Web 服务器、MySQL/MariaDB 数据库和 PHP 编程语言环境以及相关组件支持。 说明 LAMP 应用镜像底层基于 CentOS 7.6 64位操作系统。 登录 轻量应用服…

做一个极简 UI 库之代码 lint

eslint, prettier, stylelint 的配置 这三个规则的配置思路&#xff1a;代码美化用 prettier&#xff0c;逻辑代码用 eslint 校验&#xff0c;样式代码用 stylelint 校验。有跟代码美化冲突的以 prettier 为主 为什么要用这么多呢&#xff0c;因为 eslint 不能解析样式代码&a…

数据结构---LRU算法

LRU算法哈希链表自己的JAVA实现LRU全称Least Recently Used&#xff0c;也就是 最近最少使用的意思&#xff0c;是一种内存管理算法&#xff0c;该算法最早应用于Linux操作系统。这个算法基于一种假设&#xff1a;长期不被使用的数据&#xff0c;在未来被用到的几率也不大。因此…