启用Unity引擎开发Rokid主机应用的模型交互管理

系列文章目录

unity知识点



前言

Rokid Unity OpenXR Plugin 是为Unity 开发者提供的在 YodaOS-Master 空间计算操作系统上开发空间计算应用的器具。它基于OpenXR 标准开发,帮助开发者在 YodaOS-Master 上进行空间构建、虚实交互、空间感知,并最终构建完整的空间应用。

博客将会介绍如何实现 用Unity引擎开发Rokid主机的射线交互操作。希望这篇博客对Unity的开发者有所协助。
心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。就是大家好,我
欢迎点赞评论哦.下面就让大家进入正文吧 !


提示:以下是本篇文章正文内容,下面案例可供参考
在这里插入图片描述

效果实现

Rokid模型操作

一、基础环境配置

配置的话跟着官网配置就好了,就不过多赘述了。
研发环境搭建文档
SDK导入

一、先把Demo素材导入

导入示例demo步骤:
第一步先打开:Package Manager
第二步:选择Rokid UXR SDK 在选择Sampies 点击Install就可能了
在这里插入图片描述
第三步:如下图找到示例demo学习即可

在这里插入图片描述
里面一共20几个Demo

四、创建UI交互应用

  1. 新建场景scene,把主摄像机删除掉,切记先导入示例项目哦

  2. unity移动模型旋转缩放的插件下载插件直接导入即可,不导入下面脚本是无法采用的。

  3. 找到Packages里面的相机添加进去
    在这里插入图片描述

  4. 添加UI预制体(如下图)
    在这里插入图片描述

  5. 添加鼠标交互预制体(如下图)
    在这里插入图片描述

  6. 场景新建一个Plane,然后调整相机距离稍微调远一点,X轴的旋转角度也调一下,许可稍微俯视的视角。

  7. 通过把UI预制体放在相机的下面,UI就能够跟着镜头旋转了,相当于固定UI在镜头上。

  8. UI预制体下面新建五个按钮 场景结构如下图,
    在这里插入图片描述

  9. 场景搭建好之后开始编写脚本进行交互,代码如下

代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Battlehub.RTHandles;
public class ModelData : MonoBehaviour
{
public Transform carPrefab;
private Transform cartemporary;   //临时的
public PositionHandle positionHandle;
public RotationHandle rotationHandle;
public ScaleHandle scaleHandle;
// Start is called before the first frame update
void Start()
{
}
/// <summary>
  /// 生成模型
/// </summary>
public void CreateModel()
{
if (cartemporary==null)
{
Transform transfo = Instantiate(carPrefab);
cartemporary = transfo;
}
}
/// <summary>
  /// 移动模型
/// </summary>
public void PosModel()
{
CloseJH();
if (cartemporary != null)
{
cartemporary.GetComponent<PositionHandle>().enabled = true;
  }
  }
  /// <summary>
    /// 旋转模型
  /// </summary>
  public void RotModel()
  {
  CloseJH();
  if (cartemporary != null)
  {
  cartemporary.GetComponent<RotationHandle>().enabled = true;
    }
    }
    /// <summary>
      /// 缩放模型
    /// </summary>
    public void ScaModel()
    {
    CloseJH();
    if (cartemporary != null)
    {
    cartemporary.GetComponent<ScaleHandle>().enabled = true;
      }
      }
      /// <summary>
        /// 删除模型
      /// </summary>
      public void DesModel()
      {
      if (cartemporary != null)
      {
      Destroy(cartemporary.gameObject);
      }
      }
      void CloseJH()
      {
      if (cartemporary != null)
      {
      cartemporary.GetComponent<PositionHandle>().enabled = false;
        cartemporary.GetComponent<RotationHandle>().enabled = false;
          cartemporary.GetComponent<ScaleHandle>().enabled = false;
            }
            }
            // Update is called once per frame
            void Update()
            {
            }
            }
  1. 终于给按钮绑定事件,上面都有注释,按注释绑定即可。

  2. 最后运行点击即可看到效果,然后发布即可测试效果。

  3. 效果实现需要上面坐标轴的插件,切记记得导入,记得下载。

倘若想要更深,更复杂的场景,要求结合其他的Demo学习,就能编辑更多功能的应用


壁纸分享

在这里插入图片描述

总结

Rokid是一家专注于人机交互技术的产品平台公司,深耕5G+AI+AR领域的软硬件产品开发,为不同垂直领域的客户提供全栈式解决方案,打造智能时代的超级工人,有效提升用户体验、助力增效。
本次总结的就是运用Unity引擎开发Rokid主机的射线交互操作实现, 有需要会继续增加功能
如能辅助到你,就帮忙点个赞吧,三连更好哦,谢谢
你的点赞就是对博主的支持,有问题记得留言评论哦!
不定时更新Unity构建技巧,觉得有用记得一键三连哦。么么哒!

posted on 2025-11-06 10:59  blfbuaa  阅读(4)  评论(0)    收藏  举报