HTCVR手柄怎么认证头戴式雨伞

【原装】HTC Vive操控手柄htcvive无线控制器VR头盔遥控器配件单个装【图片 价格 品牌 报价】-京东
客户服务
【原装】HTC Vive操控手柄htcvive无线控制器VR头盔遥控器配件单个装
与行业相比
PLUS会员专享价
您购买此商品可享受专属价
--请选择--
规格与包装
本店好评商品
商品名称:【原装】HTC Vive操控手柄htcvive无线控制器VR头盔遥控器配件单个装
商品编号:
商品毛重:10.00g
商品介绍加载中...
型号vive手柄
类型VR周边配件
功能热点娱乐游戏
机身材质分类1
权利声明:京东上的所有商品信息、客户评价、商品咨询、网友讨论等内容,是京东重要的经营资源,未经许可,禁止非法转载使用。
注:本站商品信息均来自于合作方,其真实性、准确性和合法性由信息拥有者(合作方)负责。本站不提供任何保证,并不承担任何法律责任。
价格说明:
京东价:京东价为商品的销售价,是您最终决定是否购买商品的依据。
划线价:商品展示的划横线价格为参考价,并非原价,该价格可能是品牌专柜标价、商品吊牌价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品在京东平台上曾经展示过的销售价;由于地区、时间的差异性和市场行情波动,品牌专柜标价、商品吊牌价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:如无特殊说明,折扣指销售商在原价、或划线价(如品牌专柜标价、商品吊牌价、厂商指导价、厂商建议零售价)等某一价格基础上计算出的优惠比例或优惠金额;如有疑问,您可在购买前联系销售商进行咨询。
异常问题:商品促销信息以商品详情页“促销”栏中的信息为准;商品的具体售价以订单结算页价格为准;如您发现活动商品售价或促销信息有异常,建议购买前先联系销售商咨询。
心中疑惑就问问买过此商品的同学吧~
iframe(src='//www.googletagmanager.com/ns.html?id=GTM-T947SH', height='0', width='0', style='display: visibility:')HTC vive手柄怎么用 手柄按键说明_vr齐乐网
齐乐为您提供各类福利资源
HTC vive手柄怎么用 手柄按键说明
  HTC vive手柄怎么用?HTC vive手柄或许是目前为为止外形最奇葩的游戏手柄了,但是这款产品的功能极其强大,并且想要玩转HTC VIVE了解这台手柄的功能是必不可少的了那么下面就是VR齐乐网小编为大家带来的HTC Vive手柄使用及按键说明。
  相关推荐:|
  一、手柄按键说明
  如上图序号标识:
  1、菜单按钮
  2、触控板
  3、系统按钮
  4、状态指示灯
  5、Micro-USB端口
  6、追踪感应器
  7、扳机
  8、手柄按钮(左右手拇指指处各一,这大概也是分辨手柄左右的方法之一)
  二、手柄指示灯
  下面就为大家说说手柄指示灯在各种状态下的反应。
  1、 绿光:表示当前状况无异常可正常使用。
  2、 蓝光:表示该手柄已成功和VIVE配对。
  3、 橙光:表示正在充电。
  4、 红色闪光:表示手柄电池电量低,请及时充电。
  5、 蓝色闪光:手柄正在配对,耐心等待。
  以上就是VR齐乐网小编为大家带来的HTC vive手柄使用说明的部分教程希望能对你有所帮助。以上就是VR齐乐网小编为大家带来的关于HTC Vive的游戏推荐希望大家喜欢,如果还想要了解更多VR相关内容或者资源请继续关注我们VR齐乐网以及Q群哦(在下面&&&)。
关注VR齐乐微信号,你想要找的资源我们帮你收集,你想要发布的信息我们帮你发布整理
VR玩家交流群:
我的VR性感虚拟女友菲菲
女神宿醉出难题
可爱性感 酒吧兔女郎
宅男梦想 日本女优天海化身女仆服侍
劲歌热舞 韩国女团EXID上海粉丝见面会
性感妖娆的欧美美女 无法抑制住体内的洪荒之力了!
米多娱乐VR
暴风魔镜5怎么样 暴风魔镜5详细评测
暴风魔镜5怎么样?作为一款高端手机眼镜,暴风...Unity开发HTC vive(一):手柄按钮-腾讯游戏学院Unity HTC VIVE 手柄 接入(手柄上的按键都有说明)
一、资源导入
从asset store 下载 SteamVR Plugin。然后导入Unity。
将上图中的prefab拖入场景,然后在steam上装好steamVR,就可以运行了。
二、手柄按键使用说明
触控板的坐标如下图
直接上代码,哪里不懂看注解就好。controller在刚才拖进场景的prefab里,如下图。
using UnityE
using System.C
//检测手柄功能的脚本 这个脚本挂到手柄上(controller(right)和controller(left))上
public class HTCStick : MonoBehaviour {
SteamVR_TrackedObject trackdeO
void Awake ( ) {
//获取手柄上的这个组件
trackdeObjec = GetComponent&SteamVR_TrackedObject& ();
// Use this for initialization
void Start ( ) {
void FixedUpdate ( ) {
//获取手柄输入
var device = SteamVR_Controller.Input ((int)trackdeObjec.index);
//以下是api中复制出来的按键列表
public class ButtonMask
public const ulong System = (1ul && (int)EVRButtonId.k_EButton_System); // reserved
public const ulong ApplicationMenu = (1ul && (int)EVRButtonId.k_EButton_ApplicationMenu);
public const ulong Grip = (1ul && (int)EVRButtonId.k_EButton_Grip);
public const ulong Axis0 = (1ul && (int)EVRButtonId.k_EButton_Axis0);
public const ulong Axis1 = (1ul && (int)EVRButtonId.k_EButton_Axis1);
public const ulong Axis2 = (1ul && (int)EVRButtonId.k_EButton_Axis2);
public const ulong Axis3 = (1ul && (int)EVRButtonId.k_EButton_Axis3);
public const ulong Axis4 = (1ul && (int)EVRButtonId.k_EButton_Axis4);
public const ulong Touchpad = (1ul && (int)EVRButtonId.k_EButton_SteamVR_Touchpad);
public const ulong Trigger = (1ul && (int)EVRButtonId.k_EButton_SteamVR_Trigger);
//每种按键都有GetTouch、GetTouchDown、GetTouchUp、GetPressDown、GetPress、GetPressUp
//这里只有Trigger扳机键写了6种,其他的不再重复。
//Trigger的Touch触发条件是扳机键没有按到底,此时不会触发press。触发press时必定触发touch。
if (device.GetTouch (SteamVR_Controller.ButtonMask.Trigger)) {
Debug.Log (&轻按了扳机键&);
//右手震动
//拉弓类似操作应该就是按住trigger(扳机)gettouch时持续调用震动方法模拟弓弦绷紧的感觉。
var deviceIndex2 = SteamVR_Controller.GetDeviceIndex (SteamVR_Controller.DeviceRelation.Rightmost);
device.TriggerHapticPulse (1200);
if (device.GetTouchDown (SteamVR_Controller.ButtonMask.Trigger)) {
Debug.Log (&轻按了扳机键&);
if (device.GetTouchUp (SteamVR_Controller.ButtonMask.Trigger)) {
Debug.Log (&松开了扳机键&);
//左手震动
var deviceIndex = SteamVR_Controller.GetDeviceIndex (SteamVR_Controller.DeviceRelation.Leftmost);
SteamVR_Controller.Input (deviceIndex).TriggerHapticPulse (3000);
//右手震动
var deviceIndex1 = SteamVR_Controller.GetDeviceIndex (SteamVR_Controller.DeviceRelation.Rightmost);
SteamVR_Controller.Input (deviceIndex1).TriggerHapticPulse (3000);
if (device.GetPressDown (SteamVR_Controller.ButtonMask.Trigger)) {
Debug.Log (&用press按下了trigger扳机键&);
if (device.GetPress (SteamVR_Controller.ButtonMask.Trigger)) {
Debug.Log (&用press按了trigger扳机键&);
if (device.GetPressUp (SteamVR_Controller.ButtonMask.Trigger)) {
Debug.Log (&用press松开了trigger扳机键&);
//system键 圆盘下面那个键
// reserved 为Steam系统保留,用来调出Steam系统菜单 因此自己加的功能没用
下面的打印不会出现
if (device.GetTouchDown (SteamVR_Controller.ButtonMask.System)) {
Debug.Log (&按下了system系统按钮&);
if (device.GetPressDown (SteamVR_Controller.ButtonMask.System)) {
Debug.Log (&用press按下了系统按钮&);
//ApplicationMenu键 带菜单标志的那个按键(在方向圆盘上面)
//ApplicationMenu键 的Touch和Press没有区别,触发都要按下去
if (device.GetTouchDown (SteamVR_Controller.ButtonMask.ApplicationMenu)) {
Debug.Log (&按下了 ApplicationMenu菜单键&);
if (device.GetPressDown (SteamVR_Controller.ButtonMask.ApplicationMenu)) {
Debug.Log (&用press按下了ApplicationMenu菜单键&);
//Grip键 手柄两侧的按键 每个手柄左右各一且功能相同,同一手柄两个键是一个键。
//Grip键 的Touch和Press没有区别,触发都要按下去
if (device.GetTouchDown (SteamVR_Controller.ButtonMask.Grip)) {
Debug.Log (&按下了 Grip&);
if (device.GetPressDown (SteamVR_Controller.ButtonMask.Grip)) {
Debug.Log (&用press按下了 Grip&);
//Axis0键和Touchpad是等价的 与圆盘有关 详情看下面的TouchPad这里不再赘述
//触摸触发
if (device.GetTouchDown (SteamVR_Controller.ButtonMask.Axis0)) {
Debug.Log (&按下了 Axis0&);
//按动触发
if (device.GetPressDown (SteamVR_Controller.ButtonMask.Axis0)) {
Debug.Log (&用press按下了Axis0&);
等价于Trigger键详情看上面的Trigger按钮 这里不再赘述
//触摸触发
if (device.GetTouchDown (SteamVR_Controller.ButtonMask.Axis1)) {
Debug.Log (&按下了Axis1&);
//按动触发
if (device.GetPressDown (SteamVR_Controller.ButtonMask.Axis1)) {
Debug.Log (&用press按下了Axis1&);
//Axis2键 目前未发现按键位置
//触摸触发
if (device.GetTouchDown (SteamVR_Controller.ButtonMask.Axis2)) {
Debug.Log (&按下了 Axis2&);
//按动触发
if (device.GetPressDown (SteamVR_Controller.ButtonMask.Axis2)) {
Debug.Log (&用press按下了Axis2&);
目前未发现按键位置
//触摸触发
if (device.GetTouchDown (SteamVR_Controller.ButtonMask.Axis3)) {
Debug.Log (&按下了Axis3&);
//按动触发
if (device.GetPressDown (SteamVR_Controller.ButtonMask.Axis3)) {
Debug.Log (&用press按下了Axis3&);
目前未发现按键位置
//触摸触发
if (device.GetTouchDown (SteamVR_Controller.ButtonMask.Axis4)) {
Debug.Log (&按下了Axis4&);
//按动触发
if (device.GetPressDown (SteamVR_Controller.ButtonMask.Axis4)) {
Debug.Log (&用press按下了Axis4&);
//Touchpad键 圆盘交互
//触摸触发
if (device.GetTouchDown (SteamVR_Controller.ButtonMask.Touchpad)) {
Debug.Log (&按下了 Touchpad&);
//方法返回一个坐标 接触圆盘位置
Vector2 cc = device.GetAxis ();
Debug.Log (cc);
// 例子:圆盘分成上下左右
float angle = VectorAngle (new Vector2 (1, 0), cc);
Debug.Log (angle);
if (angle & 45 && angle & 135) {
Debug.Log (&下&);
if (angle & -45 && angle & -135) {
Debug.Log (&上&);
if ((angle & 180 && angle & 135) || (angle & -135 && angle & -180)) {
Debug.Log (&左&);
if ((angle & 0 && angle & 45) || (angle & -45 && angle & 0)) {
Debug.Log (&右&);
//按动触发
if (device.GetPressDown (SteamVR_Controller.ButtonMask.Touchpad)) {
Debug.Log (&用press按下了Touchpad&);
Vector2 cc = device.GetAxis ();
Debug.Log (cc);
// Update is called once per frame
void Update ( ) {
//方向圆盘最好配合这个使用 圆盘的.GetAxis()会检测返回一个二位向量,可用角度划分圆盘按键数量
//这个函数输入两个二维向量会返回一个夹角 180 到 -180
float VectorAngle (Vector2 from, Vector2 to) {
Vector3 cross = Vector3.Cross (from, to);
angle = Vector2.Angle (from, to);
return cross.z & 0 ? -angle :
看过本文的人也看了:
我要留言技术领域:
取消收藏确定要取消收藏吗?
删除图谱提示你保存在该图谱下的知识内容也会被删除,建议你先将内容移到其他图谱中。你确定要删除知识图谱及其内容吗?
删除节点提示无法删除该知识节点,因该节点下仍保存有相关知识内容!
删除节点提示你确定要删除该知识节点吗?【HTC VIVE】Unity中Vive Controller手柄模型渲染流程和模型替换 - 简书
【HTC VIVE】Unity中Vive Controller手柄模型渲染流程和模型替换
steam VR插件在unity中怎么渲染手柄的模型?下面就从这五点给大家介绍下Unity中Vive Controller手柄模型渲染流程和模型替换,一起来看看吧。版权声明:本文为cartzhang原创文章,未经允许不得转载。作者博客http://blog.csdn.net/cartzhang目录:一手柄渲染总体流程二steam VR渲染三代码分析1.SteamVR_ContollterManagercs文件分析2.SteamVR_RenderModelcs文件分析四修改模型示例1.修改纹理2.修改加载模型3.根据硬件编码直接修改vive手柄的原始模式匹配五参考一、手柄渲染总体流程这篇来讨论和分析一下,steamVR插件在unity中怎么渲染手柄的模型。很多人可能觉得vive手柄很神秘,在steam vr导入到unity中后,没有看到任何手柄或头盔的模型,手柄确确实实被渲染到场景中了,这是怎么回事?这篇文章就来抽丝剥茧的来说明,揭开其面纱。渲染一般的流程,就是模型读取然后加载,显示,这么多。根据代码流程绘制了简单的导图。
图 手柄渲染导图说明下:当前使用的是steam 1.1.1版本插件,而当前最新的插件版本为1.2.1版本,里面代码openvr API做了不少细节的修改,这个修改有一些变化,最明显的的就是steam中event事件调用不在使用字符串来处理,这个很多代码就可能需要修改。首先来看看,在unity中检视板内的排列
图0左右手柄节点,然后是相机节点。左右手柄下有一个模型节点。在不运行的情况下,是这样的。
只有这一个rendermodel这个脚本。先给出个总的手柄渲染代码流程图。
这个图我自己分析画的,不是很专业,但是足以说明问题。下面就会逐个分析来破解这个渲染流程,然后我们再通过代码来自己来修改,把手柄其他模型来看看。首先代码分析,我们可以看到有两个关键代码文件,一个是SteamVR_ContollterManager.cs,一个是SteamVR_RenderModel.cs。他们分别在[CamearRig]和LeftiControl和RightController的Model上。如下图。
图Render我从SteamVR_ContollterManager来看看。第一,在OnEnable来注册硬件连接,也就是手柄连接上的事件。代码中写了注释可以看看,大概也说明了怎么回事。voidOnEnable(){for(inti =0; i{varobj = objects[i];if(obj !=null)obj.SetActive(false);}OnTrackedDeviceRoleChanged();for(inti =0; iif(SteamVR.connected[i])OnDeviceConnected(i,true);SteamVR_Utils.Event.Listen("input_focus", OnInputFocus);//这个用来注册硬件连接事件。事件为steam自己写的事件。SteamVR_Utils.Event.Listen("device_connected", OnDeviceConnected);//这个用来注册设备发生了互换事件。SteamVR_Utils.Event.Listen("TrackedDeviceRoleChanged", OnTrackedDeviceRoleChanged);}第二,在注册事件内,产生模型或更新模型。在privatevoidOnDeviceConnected(paramsobject[] args)这里只需要看Refresh()就可以了。第三,Refresh里面的调用了SetTrackedDeviceIndex,而当时被Index与之前不同的时候,会广播”SetDeviceIndex”,SteamVR_RenderModel中最后一个函数就是publicvoidSetDeviceIndex(intindex){this.index=(SteamVR_TrackedObject.EIndex)modelOverride ="";if(enabled){UpdateModel();}}这样代码中就controllerManager文件到了RenderModel文件。进入这个文件里,代码执行的一件事情就是创建模型或更新模式。第一,UpdateModel(),打开这个文件你会发现好几个地方都会调用这个函数。分别为OnModelSkinSettingsHaveChanged(),OnDeviceConnected(),OnEnable(),再有就是刚才的SetDeviceIndex(int index),一般在开始的话,就是从这里开始调用创建的。第二,获取模型名称。怎么获取模型名称呢,这个名称在那里呢?就是在steam安装目录里。
==图片steam模型地址。==代码为://由当前硬件设备的index,来获取设备属性,在设备属性里面有对象的模型名称。varerror =ETrackedPropertyError.TrackedProp_Svarcapacity =system.GetStringTrackedDeviceProperty((uint)index, ETrackedDeviceProperty.Prop_RenderModelName_String,null,0,referror);if(capacity &=1){Debug.LogError("Failed to get render model name for tracked object "+ index);}varbuffer =newSystem.Text.StringBuilder((int)capacity);system.GetStringTrackedDeviceProperty((uint)index,ETrackedDeviceProperty.Prop_RenderModelName_String, buffer, capacity,referror);再说一遍,就是由当前硬件设备的index,来获取设备属性,在设备属性里面有对象的模型名称,也可以说是由硬件里面有标识码,然后根据标识码找到对应的模型名称。这是也做硬件的朋友学过vive开源lighthouse后给我讲述的,就这几行代码中得到验证。第三,有模型名称了,就加载模型。获取模型名称后,获取模型有多少个组件,然后获取组件模型名称。一个手柄模型有多个模型来组成的。可以看看这里,常规的就是用这个来组合的,每个fbx文件就是其中的一个组件。
==图 模型组件==第四,异步加载完模型,加载材质纹理。第五,SetModel(),给检视板中模型添加组件MeshFilter和MeshRender。gameObject.AddComponent().mesh= model.gameObject.AddComponent().sharedMaterial= model.当然,没有组件添加组件,然后把mesh和材质赋值上去。到这里vive手柄模型渲染的过程算是全部分析完毕。最重要的还是文章开始的两张图,一张是思维导图,一张是渲染流程图。修改手柄渲染模型,方法有多中,把新的模型放到场景节点下,直接隐藏显示也是一种方法。这里说几种常用方法。代码直接修改材质,这个需要重新材质texture。这个方法有什么问题呢,就是新版1.2.1的steamvr的插件中,不再是这个样子,而改用了宏,没有使用字符串来做事件监听的方法论。void OnEnable (){//Subscribe to theevent thatiscalledbySteamVR_RenderModel,whenthe controller mesh + texture, has been loaded completely.SteamVR_Utils.Event.Listen("render_model_loaded", OnControllerLoaded);}所以,旧版本steam vr 1.1.1版本的朋友还可以继续使用。参考的代码:这个不太推荐,当然若对你有用,你也记得点赞。在rendermodel代码中修改,模型名称,
这就搞定了。看结果,我的手柄成灭火器了:
图灭火器当然还弄了类似把关二爷的青龙偃月刀,您瞧一眼,手柄变成了大刀。
图 大刀只有做好了模型,这样是不是省心省力啊。神奇吧。这个是最根本上来做的,不需要unity或其他引擎软件,直接修改了手柄硬件 匹配码,这个得从lighthouse付费开源说起了,现在VR行业中百花齐放的手柄硬件应该说绝大多数都是这类产品了。不过,我只知道,没有付费学习过,还请高手赐教。【1】【2】
VR项目研发主管
VR行业讲师
全国三维数字化创新设计大赛特邀评审专家
“福建省青年岗位能手”称号
海峡两岸信息服务创新大赛暨福建省计算机软件设计大赛优秀指导老师
指导作品获得多项荣誉:
全国3D大赛一等奖1项
全国3D大赛三等奖4项
全国移动通信大赛 三等奖2项
中国大学生服务外包创新大赛三等奖1项
海峡两岸信息服务创新大赛暨福建省计算机软件设计大赛一等奖3项,二等奖4项,三等奖5项
中国大学生挑战杯课外科技竞赛福建赛区二等奖1项 三等奖1项
福建省挑战杯大学生创业计划竞赛三等奖
福建省大学生智能设计大赛二等奖
福建省互联网+创新创业大赛铜奖
全国3D大赛福建赛区特等奖4项,一等奖8项,二等奖11项,三等奖5项
This article is a record of my journey to learn Game Development and it will keep updating. 由于这篇文章的长度早已超出了简书编辑器的限制,因此后续内容将不在本文中更新,请移步本人的独...
VR尝鲜? 不是那么容易的。 当我们买回来vr设备的时候常常会遇到这样那样的问题,看似简单的东西,其实很为复杂。拿HTC Vive来说 这是一款令人兴奋的创新设备,但它很复杂,需要非常具体的设置条件才能正常工作。因此,硬件和软件端可能会出现一系列的问题。幸运的是,大部分问题...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
百战程序员_ Java1573题 QQ群:034603 掌握80%年薪20万掌握50%年薪10万 全程项目穿插, 从易到难,含17个项目视频和资料持续更新,请关注www.itbaizhan.com 国内最牛七星级团队马士兵、高淇等11位十年开发经验专...
1 - 菜单键 6 -系统键(按下后手柄断开连接,再次按下手柄再次连接上) 7 -扳机键 8 -握持键 9 -触摸板键 手柄控制+输入: using UnityE usingSystem.C //检测手柄功能的脚本这个脚本挂到手柄上(con...
嗨: 看书的时候,我习惯你坐在旁边,手里的针线活做得依旧飞快。有时看两个小时,我便觉得枯燥,但你保持低头做工的姿势却可以很久。 不用想,脖子肯定很酸痛吧。但习惯了苦难的你却觉得,做针线活和睡觉相似,都是休息的另一种形式。 我可以说,身为女人,你对自己一点都不好。但身为一名农...
Github https和ssh连接的区别 有个项目在push 一直都需要输入帐号密码,发现原来是因为使用了https来连接;使用https方式连接的话,.git/config里面的url配置是https://github.com/XXX/XXX.git,这样的话,每次pu...
先上整个配置文件
放到 conf.d 文件夹中 配置如下 没有错!就是这么简单 记得 完事~
这画面让人深思…没有飞翔的能力,就应该控制住自己的欲望,有些东西很诱人,但未必适合你。记住!没有收拾残局的能力,就别放纵你的情绪!}

我要回帖

更多关于 头戴尖尖帽手持两把矛 的文章

更多推荐

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

点击添加站长微信