openVR的游戏手柄3d模型模型在运行时候可以切换吗

SteamVR 插件_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
SteamVR 插件
&&快速集成SteamVR,极速使用HtcVive
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩3页未读,
定制HR最喜欢的简历
你可能喜欢Unity中Vive&Controller手柄模型渲染流程和模型替换
一、手柄渲染总体流程
这篇来讨论和分析一下,steam&VR插件在unity中怎么渲染手柄的模型。&
很多人可能觉得vive 手柄很神秘,在steam
vr导入到unity中后,没有看到任何手柄或头盔的模型,手柄确确实实被渲染到场景中了,这是怎么回事?&
这篇文章就来抽丝剥茧的来说明,揭开其面纱。&
渲染一般的流程,就是模型读取然后加载,显示,这么多。&
根据代码流程绘制了简单的导图。
<img HEIGHT="100" FILE="http://img.blog.csdn.net/59300?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FydHpoYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" BORDER="0" ALT="" DATA-BD-IMGSHARE-BINDED="1" src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="http://img.blog.csdn.net/59300?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FydHpoYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" LAZYLOADED="true" STYLE="word-wrap: break- cursor:" NAME="aimg_W8KVb"
TITLE="Unity中Vive&Controller手柄模型渲染流程和模型替换" />
手柄渲染导图&
当前使用的是steam 1.1.1版本插件,而当前最新的插件版本为1.2.1版本,里面代码openvr
API做了不少细节的修改,这个修改有一些变化,最明显的的就是steam
中event事件调用不在使用字符串来处理,这个很多代码就可能需要修改。
二、steam VR 渲染
首先来看看,在unity中检视板内的排列
<img HEIGHT="100" FILE="http://img.blog.csdn.net/10863?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FydHpoYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" BORDER="0" ALT="" DATA-BD-IMGSHARE-BINDED="1" src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="http://img.blog.csdn.net/10863?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FydHpoYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" LAZYLOADED="true" STYLE="word-wrap: break- cursor:" NAME="aimg_aTS8g"
TITLE="Unity中Vive&Controller手柄模型渲染流程和模型替换" />
左右手柄节点,然后是相机节点。左右手柄下有一个模型节点。&
在不运行的情况下,是这样的。
<img HEIGHT="100" FILE="http://img.blog.csdn.net/21454?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FydHpoYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" BORDER="0" ALT="" DATA-BD-IMGSHARE-BINDED="1" src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="http://img.blog.csdn.net/21454?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FydHpoYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" LAZYLOADED="true" STYLE="word-wrap: break- cursor:" NAME="aimg_HrJRz"
TITLE="Unity中Vive&Controller手柄模型渲染流程和模型替换" />&
只有这一个rendermodel这个脚本。&
先给出个总的手柄渲染代码流程图。
<img HEIGHT="100" FILE="http://img.blog.csdn.net/39473?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FydHpoYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" BORDER="0" ALT="" DATA-BD-IMGSHARE-BINDED="1" src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="http://img.blog.csdn.net/39473?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FydHpoYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" LAZYLOADED="true" STYLE="word-wrap: break- cursor:" NAME="aimg_bbva9"
TITLE="Unity中Vive&Controller手柄模型渲染流程和模型替换" />
这个图我自己分析画的,不是很专业,但是足以说明。&
下面就会逐个分析来破解这个渲染流程,然后我们再通过代码来自己来修改,把手柄其他模型来看看。
三、代码分析
首先代码分析,我们可以看到有两个关键代码文件,一个是SteamVR_ContollterManager.cs,一个是SteamVR_RenderModel.cs。他们分别在[CamearRig]和LeftiControl和RightController的
Model上。如下图。
<img HEIGHT="100" FILE="http://img.blog.csdn.net/49754?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FydHpoYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" BORDER="0" ALT="" DATA-BD-IMGSHARE-BINDED="1" src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="http://img.blog.csdn.net/49754?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FydHpoYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" LAZYLOADED="true" STYLE="word-wrap: break- cursor:" NAME="aimg_ojjZv"
TITLE="Unity中Vive&Controller手柄模型渲染流程和模型替换" />
<img HEIGHT="100" FILE="http://img.blog.csdn.net/21454?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FydHpoYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" BORDER="0" ALT="" DATA-BD-IMGSHARE-BINDED="1" src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="http://img.blog.csdn.net/21454?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FydHpoYW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" LAZYLOADED="true" STYLE="word-wrap: break- cursor:" NAME="aimg_UL7PP"
TITLE="Unity中Vive&Controller手柄模型渲染流程和模型替换" />
1.SteamVR_ContollterManager.cs文件分析
我从SteamVR_ContollterManager来看看。&
第一,在OnEnable来注册硬件连接,也就是手柄连接上的事件。&
代码中写了注释可以看看,大概也说明了怎么回事。
C#]&纯文本查看&复制代码
OnEnable()
&&&&&&&&for
i = 0; i & objects.L i++)
&&&&&&&&&&&&var
obj = objects[i];
&&&&&&&&&&&&if
&&&&&&&&&&&&&&&&obj.SetActive(false);
&&&&&&&&OnTrackedDeviceRoleChanged();
&&&&&&&&for
i = 0; i & SteamVR.connected.L i++)
&&&&&&&&&&&&if
(SteamVR.connected[i])
&&&&&&&&&&&&&&&&OnDeviceConnected(i,
&&&&&&&&SteamVR_Utils.Event.Listen("input_focus",
OnInputFocus);
&&&&&&&&//
这个用来注册硬件连接事件。事件为steam 自己写的事件。
&&&&&&&&SteamVR_Utils.Event.Listen("device_connected",
OnDeviceConnected);
&&&&&&&&//
这个用来注册设备发生了互换事件。
&&&&&&&&SteamVR_Utils.Event.Listen("TrackedDeviceRoleChanged",
OnTrackedDeviceRoleChanged);
第二,在注册事件内,产生模型或更新模型。&
[C#]&纯文本查看&复制代码
OnDeviceConnected(params
这里只需要看Refresh()就可以了。&
第三,Refresh里面的调用了SetTrackedDeviceIndex,而当时被Index与之前不同的时候,会广播”SetDeviceIndex”,SteamVR_RenderModel中最后一个函数就是
[C#]&纯文本查看&复制代码
SetDeviceIndex(int
&&&&&&&&this.index
= (SteamVR_TrackedObject.EIndex)
&&&&&&&&modelOverride
&&&&&&&&if
&&&&&&&&&&&&UpdateModel();
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)HTC VIVE基础开发文档(Unity3D)_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
HTC VIVE基础开发文档(Unity3D)
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
&#xe64e;加入VIP
还剩10页未读,
定制HR最喜欢的简历
你可能喜欢https://cowlevel.net
撰写了文章
<vm-game-related v-for="game in related_games" v-if="$index
查看所有相关游戏
dumb 的更多文章
<vm-edit-card-article v-for="article in other_article" v-if="$index
更多你可能感兴趣的文章}

我要回帖

更多关于 游戏手柄3d模型 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信