(个人)太极拳学习系统创新实训第八周(二)

本周任务:

完成输出成绩,将二维界面转为三维界面并实现用户通过动作控制射线交互。


我已经完成了输出成绩和将二维界面转换为三维界面,下面我将介绍如何实现用户通过动作控制射线交互。

制作过程:

在二维界面中的界面可以通过鼠标左键的点击实现,鼠标点击可以分解成两部分。

第一部分,鼠标光标移动到目标位置。

第二部分,用户按下左键触发。

在VR状态下,界面是三维界面不能通过鼠标交互。为了解决这个问题我选择使用自定义动作代替左键触发,这个解决方法是基于用户在学习过程中一直穿带诺亦腾设备,通过诺亦腾设备可以捕捉到用户的动作,当识别到用户有右手接触头部的动作就代表用户按下左键。用户可以触发,但是没有光标确定目标位置并不能正常交互。因此我们使用射线来确定用户想要触发的事件。



通过射线代替光标锁定要点击的对象。

首先需要画出射线:

要画出射线首先要得到射线的起点,方向和长度。

在这里头盔的位置就是射线的起点。

然后是方向和长度:


用加号将两者相加得到的是终点信息:

起点的信息也就是头盔的位置:


调用Line Trace By Channel绘制射线并通过 Channel进行射线查询:

获取碰撞结果:


存在一个节点里:


有了射线确定目标之后还要有触发操作。

在这里我比较右手和头是否有接触,如果有则认为有按下按键事件,将按键事件设为鼠标左键。

判断右手是否和头有接触:


从组件和视图可知,stu_RH为右手,stu_Haed为头。

用On Component Begin Overlap检测左右手的碰撞:

判断是否有头部和右手的靠近的动作。


如果有,则触发鼠标左键按下。

到现在我已经完成通过用户自身的肢体动作触发按钮。


为了使用户可以清晰的看到射线当前悬浮在那个按钮上,我将所有ui的按钮Hover和Press的按钮背景改为与normal模式下不同的背景。

这样在射线碰撞到按钮,按钮就会产生 hover 的按钮颜色变浅的效果,提示用户射线已经碰撞到按钮,然后用户通过手摸头的动作触发按钮事件,完成触发按钮的全部操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值