SteamVR_Skeleton_Poser的理解
SteamVR_Skeleton_Poser
- SteamVR_Skeleton_Poser 的 Public 方法
官网讲解,只讲了动作输入和混合
#更换拿东西的手部模型
在1那里更换手的模型,也可以在2里查看该代码的实现
#多个手部姿势的调用
在拿东西的第一时刻会调用 主手部姿势,也就是有 (MAIN) 标识的
启用混合的代码,在上面给的链接中有,这里是直接在那截的图
SteamVR_Skeleton_Poser 的 Public 方法
`
/// <summary>/// Set the blending value of a blendingBehaviour. Works best on Manual type behaviours./// 设置混合行为的混合值。最适用于手动类型的行为。/// </summary>public void SetBlendingBehaviourValue(string behaviourName, float value){PoseBlendingBehaviour behaviour = FindBlendingBehaviour(behaviourName);if (behaviour != null){behaviour.value = value;if (behaviour.type != PoseBlendingBehaviour.BlenderTypes.Manual){Debug.LogWarning("[SteamVR] Blending Behaviour: " + behaviourName + " is not a manual behaviour. Its value will likely be overriden.", this);}}}/// <summary>/// Get the blending value of a blendingBehaviour./// 获取混合行为的混合值。/// </summary>public float GetBlendingBehaviourValue(string behaviourName){PoseBlendingBehaviour behaviour = FindBlendingBehaviour(behaviourName);if (behaviour != null){return behaviour.value;}return 0;}/// <summary>/// Enable or disable a blending behaviour./// 启用或禁用混合行为。/// </summary>public void SetBlendingBehaviourEnabled(string behaviourName, bool value){PoseBlendingBehaviour behaviour = FindBlendingBehaviour(behaviourName);if (behaviour != null){behaviour.enabled = value;}}/// <summary>/// Check if a blending behaviour is enabled./// 检查是否启用了混合行为。/// </summary>/// <param name="behaviourName"></param>/// <returns></returns>public bool GetBlendingBehaviourEnabled(string behaviourName){PoseBlendingBehaviour behaviour = FindBlendingBehaviour(behaviourName);if (behaviour != null){return behaviour.enabled;}return false;}/// <summary>/// Get a blending behaviour by name./// 通过名称获得混合行为。/// </summary>public PoseBlendingBehaviour GetBlendingBehaviour(string behaviourName){return FindBlendingBehaviour(behaviourName);}/// <summary>/// 通过 index 获得 SteamVR_Skeleton_Pose 。/// </summary>public SteamVR_Skeleton_Pose GetPoseByIndex(int index){if (index == 0) { return skeletonMainPose; }else { return skeletonAdditionalPoses[index - 1]; }}/// <summary>/// Retrieve the final animated pose, to be applied to a hand skeleton,/// 检索最后的动画姿态,将应用到一个手骨架/// </summary>/// <param name="forAction">The skeleton action you want to blend between,/// 您想要混合的框架动作</param>/// <param name="handType">If this is for the left or right hand,/// 如果这是左手或右手</param>public SteamVR_Skeleton_PoseSnapshot GetBlendedPose(SteamVR_Action_Skeleton skeletonAction, SteamVR_Input_Sources handType){UpdatePose(skeletonAction, handType);return GetHandSnapshot(handType);}/// <summary>/// Retrieve the final animated pose, to be applied to a hand skeleton,/// 检索最后的动画姿态,将应用到一个手骨架/// </summary>/// <param name="skeletonBehaviour">The skeleton behaviour you want to get the action/input source from to blend between,/// 您希望从其中获取操作/输入源的框架行为</param>public SteamVR_Skeleton_PoseSnapshot GetBlendedPose(SteamVR_Behaviour_Skeleton skeletonBehaviour){return GetBlendedPose(skeletonBehaviour.skeletonAction, skeletonBehaviour.inputSource);}/// <summary>/// Updates all pose animation and blending. Can be called from different places without performance concerns, as it will only let itself run once per frame./// 更新所有的姿势动画和混合。可以在不考虑性能的情况下从不同的地方调用,因为它每帧只运行一次。/// </summary>public void UpdatePose(SteamVR_Action_Skeleton skeletonAction, SteamVR_Input_Sources inputSource){// only allow this function to run once per frameif (poseUpdatedThisFrame) return;poseUpdatedThisFrame = true;if (skeletonAction.activeBinding){// always do additive animation on main poseblendPoses[0].UpdateAdditiveAnimation(skeletonAction, inputSource);}//copy from main pose as a baseSteamVR_Skeleton_PoseSnapshot snap = GetHandSnapshot(inputSource);snap.CopyFrom(blendPoses[0].GetHandSnapshot(inputSource));ApplyBlenderBehaviours(skeletonAction, inputSource, snap);if (inputSource == SteamVR_Input_Sources.RightHand)blendedSnapshotR = snap;if (inputSource == SteamVR_Input_Sources.LeftHand)blendedSnapshotL = snap;}
SteamVR_Skeleton_Poser的理解相关推荐
- 【加餐】如何在SteamVR 2 中替换手部模型
根据学员朋友的反馈,新增3节加餐课时,关于如何在新版SteamVR中基于Skeleton Input实现手部模型的替换. 在VR应用程序中,要呈现自制的手部模型,传统的方式是直接将模型导入,放置在手柄 ...
- 深度学习模型——AlexNet
查看全文 http://www.taodudu.cc/news/show-4898981.html 相关文章: <引爆核能-销售演讲与呈现技巧>司铭宇 2014学习计划上 学习 Java ...
- 通用解题法——回溯算法(理解+练习)
积累算法经验,积累解题方法--回溯算法,你必须要掌握的解题方法! 什么是回溯算法呢? 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就&quo ...
- stream流对象的理解及使用
我的理解:用stream流式处理数据,将数据用一个一个方法去 . (点,即调用) 得到新的数据结果,可以一步达成. 有多种方式生成 Stream Source: 从 Collection 和数组 Co ...
- Linux shell 学习笔记(11)— 理解输入和输出(标准输入、输出、错误以及临时重定向和永久重定向)
1. 理解输入和输出 1.1 标准文件描述符 Linux 系统将每个对象当作文件处理.这包括输入和输出进程.Linux 用文件描述符(file descriptor)来标识每个文件对象.文件描述符是一 ...
- java局部变量全局变量,实例变量的理解
java局部变量全局变量,实例变量的理解 局部变量 可以理解为写在方法中的变量. public class Variable {//类变量static String name = "小明&q ...
- 智能文档理解:通用文档预训练模型
预训练模型到底是什么,它是如何被应用在产品里,未来又有哪些机会和挑战? 预训练模型把迁移学习很好地用起来了,让我们感到眼前一亮.这和小孩子读书一样,一开始语文.数学.化学都学,读书.网上游戏等,在脑子 ...
- 熵,交叉熵,散度理解较为清晰
20210511 https://blog.csdn.net/qq_35455503/article/details/105714287 交叉熵和散度 自己给自己编码肯定是最小的 其他的编码都会比这个 ...
- mapreduce理解_大数据
map:对不同的数据进行同种操作 reduce:按keys 把数据规约到一起 看这篇文章请出去跑两圈,然后泡一壶茶,边喝茶,边看,看完你就对hadoop 与MapReduce的整体有所了解了. [前言 ...
最新文章
- 头条面试官:NIO 是不是就是I/O多路复用?我:不是
- Evolview:提升系统进化树颜值
- springmvc 将post转换为delete,put
- SEO配置信息操作文档
- public class UserServiceImpl extends ServiceImpl UserMapper, User implements UserService
- python字节码大全
- linux软链接的创建、删除和更新
- vue --- v-for、v-on、v-model、v-once
- 【面试宝典 | 01】面经
- CAN和CANOpen的关系
- java面试算法总结_java编程面试过程中常见的10大算法概念汇总
- KVM 介绍(6):Nova 通过 libvirt 管理 QEMU/KVM 虚机 [Nova Libvirt QEMU/KVM Domain]
- jQuery方式追加div覆盖
- java 有序不重复_Java中自定义有序不重复的集合——SetList
- mocano editor中使用代码比对功能
- 【问题】myeclipse启动时Tocmat错误:cound not create the view :An unexpencted expetion was thrown
- r 语言计算欧氏距离_R语言-KNN算法
- 【九州贯连智能家居——拥抱华为5.5G,打造未来家居公共物联网关,让生活赋能】
- 常用的dede标签小总结
- 基于yolov5-6.0版本的PCB板缺陷检测(Python/C++部署)