| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Python 三维姿态估计+Unity3d 实现 3D 虚拟现实交互游戏 -> 正文阅读 |
|
[游戏开发]Python 三维姿态估计+Unity3d 实现 3D 虚拟现实交互游戏 |
作者 | 李秋键 出品 |?AI科技大本营(ID:rgznai100) 引言随着人机交互技术飞速发展,人体姿态估计技术越来越受到重视。姿态估计作为人体行为识别的重要组成部分,近年来逐渐成为计算机视觉领域的一个重要的研究热点。由于人体结构和姿态的复杂性以及视觉理论的局限性,最初人体姿态估计算法仅从图像或者视频当中预测人体二维骨架节点的坐标位置。2015年马普所提出了由姿态与体型参数驱动的蒙皮多人线性模型,由于该模型具有出色的建模效果与快速的计算效率,许多团队提出了利用该模型进行人体姿态估计的方法。目前基于人体形变模型的姿态估计方法可以根据两个标准进行分类:一类是基于优化的方法,另一类是基于回归的方法。而最终发展到现在三维人体姿态估计也随之发展越来越成熟。 今天我们就将使用Python+Unity3d实现一个基于ThreeDPoseUnityBarracuda(Digital- ?Standard Co., Ltd.)的3D虚拟现实交互游戏。这里通过Unity3d结合python三维姿态估计模型,实时获取人体三维坐标,然后将坐标与人体模型骨骼绑定从而达到控制3D角色的目的。在这步基础上加入3D模型,设置基本的触碰逻辑即可达成我们设置的简单游戏的目的。这里使用到的模型可以通过3Dmax和Blender进行绘制,最终的演示效果如下: 三维姿态控制介绍在三维姿态估计的基础上,使用unity对实时获取的三维骨骼坐标和角色骨骼绑定,控制角色动画,达到交互的效果。 1.1 ?三维姿态估计介绍 人体姿态估计的主要任务是预测出人体关节点的三维坐标位置和角度等信息。由于人体姿态标记数据集的缺乏,使得大多数研究方法都基于2D人体姿态估计方法之上,因此2D人体姿态估计研究的发展也为3D人体姿态估计奠定了基础,使得3D人体姿态估计研究有着巨大的潜力。 在实际应用中,由于3D姿态估计在2D姿态估计的基础上加入了深度信息,其对于人体姿态的表述比2D更为精准,因此其应用范围和研究价值都要高于2D人体姿态估计,但是3D姿态估计的难度也更高,存在着遮挡,单视角2D到3D的映射中固有的深度模糊性、不适定性,缺少大型的室外数据集等挑战。 在目前的研究中,三维人体姿态估计方法可以划分为传统方法和深度学习方法两类。在深度学习方法得到广泛应用之前,3D人体姿态标注数据集和具有高运算能力的GPU还没有普及,研究人员主要通过一些应用在传统计算机视觉或机器学习领域的方法来进行3D人体姿态的估计。传统三维人体姿态估计和基于深度学习的姿态估计之间最明显的特征在于是否使用了多层神经网络的学习方法,因为建模方式不同,在估计精确性、计算复杂度等方面也有着较大的差别。其中建模是三维人体姿态估计一个很重要的方面,目的是表示从输入数据中提取的关键点和特征。在解决实际问题时由于实验个体所处环境的复杂性,很大程度上增加了模型的建立难度,因此选取适当且有效的图像特征来简化模型建立过程十分重要。传统方法很多是采用基于人体模型的方法来描述和推断人体姿态,通过算法提取图像姿态特征,因此对特征表示和关键点的空间位置关系这两个维度有比较高的要求,除去边界、颜色这类低层次特征,典型的有尺度不变特征变换、梯度直方图等表达能力更强、可有效压缩特征空间维度的高层次特征,它们虽然在时间效率方面具有优势,但依然是由人工设计的传统特征,存在着较大的不足。 1.2 ?ThreeDPoseUnityBarracuda介绍 ThreeDPoseUnityBarracuda通过读取Barracuda的onnx三维姿态估计模型,可以在Unity上做三维姿态估计。 程序设计这里三维姿态估计使用Resnet34_3inputs_448x448_20200609.onnx模型,unity3D是对onnx模型的调用,同时搭建三维场景和设计逻辑规则。 2.1?三维姿态估计模型解析 这里需要使用的三维姿态估计在之前文章“3DPose实现三维人体姿态识别”有所介绍,不进行太多描述。 通过使用onnxruntime读取“Resnet34_3inputs_448x448_20200609.onnx”模型文件,实时对需要识别的图片数据,获取每一张图片的offset图和heatmap图。通过找到第j个关节的28个特征图,并找到最大值的索引来获取个点坐标。并把坐标按照一定比例缩放。使得图像变形较为符合人体规律。
2.2 unity3D程序设计 Unity3D这里主要使用到了三维场景搭建和CS脚本制定逻辑,这里场景搭建,在搭建好模型后手动规划即可。主要介绍程序部分。 1、读取模型,按照下图配置即可: 2、随机从天空掉落物体CS脚本:
完整代码: 链接: https://pan.baidu.com/s/1hZ5f-4Vv12rpJXK5XL_t5A 提取码:7q6o
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 22:43:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |