当前位置: 首页 > news >正文

Ultraleap 3Di新建项目之给所有的Joint挂载物体

工程文件

Ultraleap 3Di给所有的Joint挂载物体

前期准备

参考上一期文章,进行正确配置
Ultraleap 3Di配置以及在 Unity 中使用 Ultraleap 3Di手部跟踪

新建项目

初始项目如下:
在这里插入图片描述
新建Create Empty
在这里插入图片描述
将新建的Create Empty,重命名为LeapProvider,并添加新的组件
在这里插入图片描述
新添加的组件如下,参数默认,不需要修改
在这里插入图片描述
继续新建Create Empty,并重命名为HandModelManager,接着添加新的组件:
在这里插入图片描述
添加组件如下:
在这里插入图片描述
单击HandModelManager,展开各个子选项,在Wrist和Palm下新建Sphere:
在这里插入图片描述
连接Ultraleap 3Di,并单击【play】查看运行结果:
在这里插入图片描述
成功运行。

编写脚本,实现对所有关节进行挂载物体

单击HandModelManager,继续添加新的组件,如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打开该脚本,输入如下代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor; /// 命名空间public class AddObjToJoint : MonoBehaviour
{// 拿到想要挂载的物体public GameObject addObj;public List<GameObject> addList = new List<GameObject>();// 把我们想要挂载的物体,挂载到所有的Joint下面public void Add(){// 遍历所有集合,将所有子物体销毁掉foreach(var item in addList){DestroyImmediate(item);}addList.Clear();// 方法1:foreach(Transform item in transform) // 遍历当前物体下面的所有子物体{//遍历所有子物体,也包含自身的foreach(var child in item.GetComponentsInChildren<Transform>()){// 排除自身if(child == item) continue;// 添加,通过实例化的方法传进去GameObject temp = Instantiate(addObj, child);// 把addObj生成在对应的child下面addList.Add(temp);}}//    // 方法2://    for(int i = 0; i < transform.childCount; i++)//    {//         print(transform.GetChild(i).name);//    }} 
}[CustomEditor(typeof(AddObjToJoint))]// 添加标签
// 实现:在脚本这边添加一个按钮
// 添加按钮,需要继承Editor
public class AddObjToJointEditor : Editor  // 创建一个类
{public override void OnInspectorGUI()  // 重写OnInspectorGUI方法{base.OnInspectorGUI();if(GUILayout.Button("挂载物体到所有的关节下面")) // 生成按钮{// 通过按钮点击,调用void Add()方法// target表示目标对象,也就是AddObjToJoint,是一个object类型,因此target.Add不可用// 将target强制转换成AddObjToJoint类(target as AddObjToJoint).Add();}}}

创建Scripts文件夹,将上一步创建脚本存放此处;并在Hierarchy中新建Sphere,将其拖拽到该文件夹下,作为给各关节挂载的物体
在这里插入图片描述
将新建好的Sphere拖转到HandModelManager中的Add Obj处,作为挂载的物体,并将手势的各个关节Joint全选中:
在这里插入图片描述
单击【挂载物体到所有的关节下面】,可见【Scene】中所有关节均挂载Sphere:
在这里插入图片描述
修改Sphere的大小,并连接Ultraleap 3Di进行Play,查看结果如下:
在这里插入图片描述
至此成功运行,所有的Joint挂载物体导致结束!

相关文章:

Ultraleap 3Di新建项目之给所有的Joint挂载物体

工程文件 Ultraleap 3Di给所有的Joint挂载物体 前期准备 参考上一期文章&#xff0c;进行正确配置 Ultraleap 3Di配置以及在 Unity 中使用 Ultraleap 3Di手部跟踪 新建项目 初始项目如下&#xff1a; 新建Create Empty 将新建的Create Empty&#xff0c;重命名为LeapPro…...

关于session每次请求都会改变的问题

这几天在部署一个前后端分离的项目&#xff0c;使用docker进行部署&#xff0c;在本地测试没有一点问题没有&#xff0c;前脚刚把后端部署到服务器&#xff0c;后脚测试就出现了问题&#xff01;查看控制台报错提示跨域错误&#xff1f;但是对于静态资源请求&#xff0c;包括登…...

【leetcode题解C++】150.逆波兰表达式求值 and 239.滑动窗口最大值 and 347.前k个高频元素

150.逆波兰表达式求值 给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意&#xff1a; 有效的算符为 、-、* 和 / 。每个操作数&#xff08;运算对象&#xff09;都可以是一个整数…...

【计网·湖科大·思科】实验三 总线型以太网的特性、集线器和交换机的区别、交换机的自学习算法

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…...

API设计模式:REST、GraphQL、gRPC与tRPC全面解析

一、引言 在现代Web和微服务架构中&#xff0c;API&#xff08;应用程序编程接口&#xff09;的设计和实现方式至关重要。本文将探讨四种流行的API设计模式&#xff1a;REST&#xff08;Representational State Transfer&#xff09;、GraphQL、gRPC以及新兴的tRPC。每种模式都…...

C/C++ protobuf与json互转

测试环境 ubuntu16.04 64bitprotocbuf&#xff1a;3.9.1 &#xff08;支持json转换需>3.0.0&#xff09; 协议 syntax "proto2";message Person{optional string name 1;optional uint32 age 2;optional string address 3; }测试代码 //protobuf > 3.0.0#…...

Open CASCADE学习|圆柱螺旋线绘制原理探究

1、圆柱螺旋线绘制原理 在OCC中&#xff0c;圆柱面的参数方程为&#xff1a; 设P为&#xff08;x0,y0,z0&#xff09;,则 xx0r*cos(u) yy0r*sin(u) zz0v 但u、v之间有关系时&#xff0c;此方程表达为圆柱螺旋线&#xff0c;u、v之间为线性关系时是等螺距螺旋线&#xff0…...

Python学习笔记--认识sys.argv

sys.argv 是 Python 的一个内置模块 sys 中的一个属性。它是一个列表&#xff0c;包含了从命令行传递给脚本的参数。 例如&#xff0c;如果你有一个名为 script.py 的脚本&#xff0c;并且你从终端窗口命令行这样运行它&#xff1a; >>>python script.py arg1 arg2 …...

【C++】入门基础

前言&#xff1a;C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式等。熟悉C语言之后&#xff0c;对C学习有一定的帮助&#xff0c;因此从今天开始们将进入&#xff23;的学习。 &#x1f496; 博主CSDN主页:…...

Nginx与keepalived实现集群

提醒一下&#xff1a;下面实例讲解是在mac虚拟机里的Ubuntu系统演示的&#xff1b; Nginx与keepalived实现集群实现的效果 两台服务器都安装Nginx与keepalived&#xff1a; master服务器的ip(192.168.200.2) backup服务器的ip(192.168.200.4) 将 master服务器Nginx与keepalive…...

初识MQRabbitMQ快速入门

一、同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&#xff0c;但是你却不能…...

javaMailSender 发送邮件,基于Spring Boot

目录 引入依赖 配置文件配置 具体代码 MultipartFile 转 File 工具类 引入依赖 <!--邮件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><!--日…...

【汇总】解决Spring-Web与Spring-WebFlux冲突

【汇总】解决Spring-Web与Spring-WebFlux冲突 问题发现问题解决问题一&#xff1a;The bean requestMappingHandlerMapping, defined in class path resource [org/springframework/web/reactive/config/DelegatingWebFluxConfiguration.class],问题二&#xff1a;The Java/XML…...

maven 依赖配置补充

依赖配置补充 依赖范围 import 管理依赖最基本的办法是继承父工程&#xff0c;但是和 Java 类一样&#xff0c;Maven 也是单继承的。如果不同体系的依赖信息封装在不同 POM 中了&#xff0c;没办法继承多个父工程怎么办&#xff1f;这时就可以使用 import 依赖范围。 典型案…...

Pandas ------ 向 Excel 文件中写入含有合并表头的数据

Pandas ------ 向 Excel 文件中写入含有合并表头的数据 推荐阅读引言正文 推荐阅读 Pandas ------ 向 Excel 文件中写入含有 multi-index 和 Multi-column 表头的数据 引言 这里给大家介绍一下如何向 Excel 中写入带有合并表头的数据。 正文 import pandas as pddf1 pd.D…...

kafka summary

最近整体梳理之前用到的一些东西&#xff0c;回顾Kafka的时候好多东西都忘记了&#xff0c;把一些自己记的比较模糊并且感觉有用的东西整理一遍并且记忆一遍&#xff0c;仅用于记录以备后续回顾 Kafka的哪些场景中使用了零拷贝 生产者发送消息&#xff1a;在 Kafka 生产者发送…...

【新书推荐】2.6节 原码、反码和补码

回顾上一节中&#xff0c;我们讲解了整数的编码规则。 无符号整数编码规则&#xff1a;无符号整数全部都是正数&#xff0c;是什么就存什么。 有符号整数编码规则&#xff1a;有符号整数最高有效位为0是正数&#xff0c;最高有效位为1是负数。 本节内容&#xff1a;原码、反…...

docker 网络及如何资源(CPU/内存/磁盘)控制

安装Docker时&#xff0c;它会自动创建三个网络&#xff0c;bridge&#xff08;创建容器默认连接到此网络&#xff09;、 none 、host docker网络模式 Host 容器与宿主机共享网络namespace&#xff0c;即容器和宿主机使用同一个IP、端口范围&#xff08;容器与宿主机或其他使…...

安装 nvm

前言&#xff1a; nvm 即 node 版本管理工具 (node version manager)&#xff0c;好处是方便切换 node.js 版本。 通过将多个 node 版本安装在指定路径&#xff0c;然后通过 nvm 命令切换时&#xff0c;就会切换我们环境变量中 node 命令指定的实际执行的软件路径。 使用场景…...

Redis解决方案:NOAUTH Authentication required(连接jedis绑定密码或修改redis密码)

Redis解决方案&#xff1a;NOAUTH Authentication required&#xff08;连接jedis绑定密码或修改redis密码&#xff09; Java使用jedis连接redis时出现错误NOAUTH Authentication required 一、问题报错和原因 本地设置了redis的密码&#xff0c;但在远程连接时并没有输入密…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...