- 博客(88)
- 资源 (19)
- 收藏
- 关注
原创 openvr_survivor第二期开发活动:VR畸变
开发简介开发主题:VR畸变参与人员:helen,xin,云淡风清,ice等(VR开发者QQ群:538874606)项目代码gitter讨论链接主要内容 VR畸变/反畸变介绍openVR显示接口介绍zemax软件设计光学系统反畸变处理这里主要是分享一下我们对于这方面问题的一些看法,文档可能存在一些错误和不足,希望能够得到大家的批评和建议,与大家一起将这部分内容做的更加完善,持续更新
2017-12-04 20:19:14 7010 3
原创 插值(Interpolation)
前言插值计算普遍存在于图像处理中,最近在做畸变优化时,看了一些资料中提到了插值&双线性插值,开始没明白,觉得一定很难,直接跳过,到最终写代码时,又不得不使用.于是就这里对这个功能进行学习,记录,并使用vs2017进行实际验证,验证后发现这个原理其实并不复杂. 插值插值的数学定义:给定n个已知离散数据点(xk,yk),k=1,2,...,n.对于x≠xk,k=1,2,...,n,求x
2017-10-20 00:14:25 12778
原创 openvr_survivor第一期开发活动:复位与定位追踪
开发简介开发主题:VR复位和定位追踪.参与人员:helen,ice,bikasuo.(VR开发者QQ群:538874606)项目代码gitter讨论链接 分享一下我们对于这方面问题的一些看法,文档可能存在一些错误和不足,希望能够得到大家的批评和建议,希望与大家一起将这部分内容做的更加完善,持续更新.可以随意复制使用,方便的话注明一下出处,不胜感谢!复位复位介绍 玩VR游戏的人经常能发
2017-08-30 18:14:13 5080 4
原创 VR中的9轴传感器(重力加速度/陀螺仪/磁力计).md
前言传感器的调试过程,一般根据原厂提供demo代码,调试数据接口,将数据流打通即可,在VR中,当带上头显设备,运行应用时,出现漂移、延迟、不回归问题,往往束手无策,解决这些小问题,往往占用很多的时间,希望通过自己整理的知识,明确调试的方向,提高调试效率,达到好的调试效果。自己近几年在Android平台上导入过多种9轴传感器,做过一些sensor内部分享,而且近半年来从事VR开发工作,VR对9轴
2016-12-23 10:39:04 43243 7
原创 Android传感器源码分析(AOSP)
简介上一节制作了一个传感器的应用,应用程序获取传感器数据代码流程大致如下//get sensor managermSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);//show sensor listList<Sensor> sensors = mSensorManager....
2018-06-18 19:49:27 5932 1
原创 Android传感器应用
概述Android Sensor Framework为应用程序提供了下面几个类和接口SensorManager 为你提供一个sensor service的实例,它能够为了提供多种服务(查询sensor数量,注册/卸载sensor事件监听函数,获取sensor精度、速率、校准等信息)Sensor 指向一个具体sensor的实例,调用方法获取配置和数据.SensorEvent 指向...
2018-06-15 00:13:47 2930
原创 Android传感器简介
sensorAndroid的sensor架构如下 sensor大致流程:APP–>Framework—>lib—>HAL层,HAL层以下部分,不同平台实现方式不同,可能会是HAL—>Kernel也可能是HAL–>VENDOR—>kernel,本文主要分析HAL层及HAL层之上的内容.HAL层下的部分,不同平台的处理方式会有所差异,有些平台HAL层之后直...
2018-06-12 00:06:05 3142
原创 Android之BitTube
概述在Android的Sensor框架代码里看到BitTube,这里对其进行学习整理. BitTube是用来处理进程间通讯的机制,和管道类似,主要是对socketpair的封装.先了解一下socketpairsocketpairsocketpair用来创建一对未命名、互相连接的套接字,套接字的一端可以进行读和写的操作,用来实现全双工的通讯. 函数原型:int socketpair(...
2018-06-08 23:35:19 3852
原创 Android之Handler、Looper、MessageQueue源码分析.md
概述Android中的Handler、Looper、MessageQueue是用来解决线程间通讯问题的一种机制.介绍它们的文章非常多,这里做一些学习和整理,帮助自己理解,也希望能方便大家. 一句话 “Looper不断获取MessageQueue中的Message,然后由Handler来处理” 一张图 先记住一句话和一张图,对这三者有一个感性的认识,后面会介绍一个简单的demo,通过...
2018-05-29 22:59:21 2418
原创 epoll简介
概述在阅读Android的Looper代码时需要对epoll进行了解,这里整理了一下epoll相关信息. epoll提供了一种IO访问服务,能够同时监听多个文件描述符,监听文件数据变化,并且不会因监听的文件数量增加而导致效率急剧下降的情况,在绝大多数情况下,优于select和poll。(在监听数量小于一定数值时,select的在内存占用和速度上是比epoll好的)epoll接口在...
2018-05-15 00:40:36 2669 1
原创 openvr显示相关接口
概述本文档介绍openvr上关于显示接口的内容,基于目前(2017.10.09)最新版本(openVR V1.0.10)进行描述,并你可以基于开源项目openvr_survivor对这些接口进行修改和验证.
2017-12-04 20:06:31 4058
原创 高精度/微秒级线程的实现
前言在项目中需要实现一个功能,来对项目做一些特殊的工作.这个工作中需要实现某个线程中按照特定间隔(100微秒~10毫秒)来定时执行.实现过程中发现只要使用执行休眠的函数(sleep,sleep_for,sleep_until)每次线程轮询的时间都必定大于1.5毫秒(不同主频的CPU,可能时间会有一些差别),为了满足需求,使用一些方法来达到这个目的.普通线程轮询使用std::thre...
2017-11-13 19:38:44 5243 3
翻译 AnglesToConfig
AngleToConfig该文章英文地址,翻译中有一些个人添加的辅助信息,以括号标识,以粗体表示,例如(以下为个人翻译,水平有限,欢迎指正). AnglesToConfig的源代码可以在distortionizer代码仓库里找到.这个程序获取从视角到物理屏幕位置的映射关系,然后生成一个osvr server 的配置文件,以及将要被渲染到的规则屏幕的描述,最终对显示进行反畸变
2017-10-19 01:12:52 1225
翻译 projection and view matrices
OSVR视图变换该文章英文地址,翻译中有一些个人添加的辅助信息,以括号标识,以粗体表示,例如(以下为个人翻译,水平有限,欢迎指正). 本文档介绍OSVR的视图变换,包含投影矩阵和设置视口所需的模型矩阵的部分内容.可以查看distortion document获得关于如何处理畸变矫正的文档(透镜是非理想状态的,屏幕表面不是完全平整的). 接下来的内容忽略眼球追踪的影响,以及忽略眼睛的投影中心与它的
2017-09-27 21:13:29 1355
翻译 osvr_distortion_correction
OSVR畸变矫正这是一个关于VR畸变的文章,有理论描述,有源代码,学习之后觉得非常不错,将文章翻译过来,该文章英文地址,翻译中有一些个人添加的辅助信息,以括号标识,以粗体表示,例如(以下为个人翻译,水平有限,欢迎指正). 本文档描述OSVR畸变矫正功能,这种矫正在显示被渲染到平面矩形(屏幕)上之后发生.这里介绍了如何处理这个渲染阶段.简介畸变矫正的基本功能是收集通过透镜后观察到的物理显示像素,这些
2017-09-26 19:24:46 2109
原创 C++类成员函数作为回调函数(提供完整工程代码)
遇见在我们使用一些第三方SDK、不同框架层之间的事件通知或第三方的C库时,经常需要用相应的接口来注册一些回调函数来处理特定的事件。这里以NOLO SDK为例来描述这样的一个问题。
2017-06-28 23:33:37 2512 1
翻译 眼球追踪如何预测头部追踪
眼球追踪如何预测头部追踪我将于本周末访问DC州的神经科学学会会议,而且能够看到一些关于眼球追踪方面的最新进展. 很多时候,人们问为什么眼睛追踪对促进研究和为残疾人提供用户界面是很有帮助的. 一个有趣的应用是使用眼球追踪来最小化头部追踪的延迟.看如下所示的图: 上图所示,黑线是眼睛的位置,红线是头部的位置,提供了随着时间的推移的程度.让我们详细看下上图的一些区域:从大约6.5秒到6.7秒
2017-04-05 20:08:03 2875
翻译 解释VR的时间扭曲(time-warp)
解释时间扭曲原文英文链接.翻译中有一些个人添加的辅助信息,以括号标识,”注:”开头,以粗体表示,例如(注:以下为个人翻译,水平有限,欢迎指正). 在虚拟现实的背景下,时间扭曲是一项减少运动和图像之间延迟的技术. 在理想的情况下,渲染引擎发送给显示之前使用测量好的实时的头部姿态(方向和位置).但是,在现实情况下,渲染需要耗费时间,所以渲染引擎使用的姿态是发送显示设备之前几毫秒的.在这几毫秒的时间
2017-04-05 19:54:34 7787
翻译 理解VR预测追踪
理解VR预测追踪原文英文链接.翻译中有一些个人添加的辅助信息,以括号标识,”注:”开头,以粗体表示,例如(注:以下为个人翻译,水平有限,欢迎指正). 在AR/VR系统里,预测追踪指的是预测物体未来(很短的一个时间,比如几毫秒)的姿态方向或身体的位置.例如,人们可能想要预测头部的方向或手的位置.为什么预测追踪是有用的?预测追踪的使用通常是为了减少”运动到图像”之间的延迟.由于运动和显示更新之
2017-04-04 21:58:49 2812
翻译 VR光学设计的关键参数
光学设计的关键参数原文英文链接.翻译中有一些个人添加的辅助信息,以括号标识,”注:”开头,以粗体表示,例如(注:以下为个人翻译,水平有限,欢迎指正).
2017-04-03 21:57:06 15252 7
原创 openVR驱动接口之IDriverLog简介
IDriverLog驱动日志接口. void Log( const char *pchLogMessage ) 将日志信息输出到log文件,并附带了驱动的名字.
2017-04-02 22:31:03 2643
原创 openVR驱动接口之ICameraVideoSinkCallback简介
ICameraVideoSinkCallback摄像头视频接口,目前还没有资料和demo,官方处于开发当中,等后续补充.
2017-04-02 22:30:28 1902
原创 openVR驱动接口之IVRCameraComponent简介
IVRCameraComponent摄像头组件,目前还没有资料和demo,官方处于开发当中,等后续补充.
2017-04-02 22:29:56 2178
原创 openVR驱动接口之IVRControllerComponent简介
IVRControllerComponent单一追踪设备的控制器. VRControllerState_t GetControllerState( ) 获取控制器当前的状态,控制器的状态,你需要了解一下VRControllerState_t结构体. bool TriggerHapticPulse( uint32_t unAxisId, uint16_t usPulseDurationMicro
2017-04-02 22:29:03 3040
原创 openVR驱动接口之IVRDriverDirectModeComponent简介
IVRDriverDirectModeComponent这个组件是用来实现直接渲染功能的(关于什么是直接渲染,直接渲染的好处,建议去OSVR上找一下这方面的介绍),这个接口是非必须的.在openVR社区里多数人认为这个驱动是为oculus特殊提供的,并且表达了不满.多数人都没能使用这个接口来实现自己HMD的直接渲染模式,在这里你会体会到openVR,并不是真正意义的开源,很多内容没有源码!不想对这些
2017-04-02 22:28:21 3276
原创 openVR驱动接口之IVRDisplayComponent简介
IVRDisplayComponent单个追踪设备的显示相关的接口 void GetWindowBounds( int32_t *pnX, int32_t *pnY, uint32_t *pnWidth, uint32_t *pnHeight ) VR显示需要通过这个接口来获取窗口的位置和尺寸. bool IsDisplayOnDesktop( ) 如果是以扩展模式显示,返回true bo
2017-04-02 22:26:39 3180
原创 openVR驱动接口之ITrackedDeviceServerDriver简介
ITrackedDeviceServerDrivervr::ITrackedDeviceServerDriver接口代表VR系统中的单个追踪设备.它在驱动动态库里实现. 这个接口的实例一旦提供给vrserver,它应该保持有效,直到vr::ITrackedDeviceServerDriver对象调用Cleanup. HmdError Activate( uint32_t unObjectId )
2017-04-02 22:25:33 3304
原创 openVR驱动接口之IVRSettings简介
IVRSettings 用来处理设置信息的接口. const char *GetSettingsErrorNameFromEnum( EVRSettingsError eError ) 将eError以字符串的形式返回. bool Sync( bool bForce = false, EVRSettingsError *peError = nullptr ) 如果文件同步了就返回true.
2017-04-02 22:23:15 2318
原创 openVR驱动接口之IClientDriverHost简介
IClientDriverHost这个接口由vrclient提供,允许回调和查询驱动各种各样的信息. ETrackedDeviceClass GetTrackedDeviceClass( vr::TrackedDeviceIndex_t unDeviceIndex ) 返回追踪设备的类型.如果当应用开始运行这个函数时没有设备连接,那么将会返回TrackedDevice_Invalid.如果之前检
2017-04-02 22:21:56 2321
原创 openVR驱动接口之IServerDriverHost简介
IServerDriverHost这个接口由vrserver提供,用来允许驱动向系统发送通知事件.这些事件不能是修改序列号或设备的类型,因为这些值永久与设备相关联. bool TrackedDeviceAdded( const char *pchDeviceSerialNumber ) 告诉server一个追踪设备已经被添加.如果这个函数返回true,server将对这个设备调用activate
2017-04-02 22:19:51 3394
原创 openVR驱动接口之IClientTrackedDeviceProvider简介
IClientTrackedDeviceProvider这个接口在SDK的openvr_driver.h文件中定义的.用来处理应用场景中各种各样的客户端操作.驱动中必须实现的接口,它将被vrclient.dll加载. EVRInitError Init( EClientDriverMode eDriverMode, IDriverLog *pDriverLog, vr::IClientDriver
2017-04-02 22:16:46 2566
原创 openVR驱动接口之IServerTrackedDeviceProvider简介
IServerTrackedDeviceProviderIServerTrackedDeviceProvider这个接口必须实现,vrserver用来查询追踪设备或关于追踪设备的一些信息.驱动动态库必须实现它. HmdError Init( IDriverLog *pDriverLog, vr::IServerDriverHost *pDriverHost, const char *pchUser
2017-04-02 22:13:22 3458 8
原创 openVR之十二大驱动接口
openVR之十二大驱动接口目前市场上有大量的VR SDK,大多数的HMD厂商都推出自己的VR平台(如oculus, psvr,deepon,3glass等),与这些特定HMD平台有所不同的是,有一些开放的VR平台,例如OSVR,steamVR.他们的目标是能够接入所有的厂家设备(包括HMD、眼球追踪、控制器、定位追踪器、摄像头等等)和游戏引擎(U3D,UE4等).从接入内容\硬件的数量和质量来看,
2017-04-02 22:05:06 8834 10
原创 设计模式后记
设计模式后记设计模式的好处在前言已经说过了,通过自己动手实现一遍每个模式加深印象,当然这离真正理解设计模式还有很长的路要走,在写这系列文章要纠结了很久,最后的结论是:”入门级的东西,简单说”,所以就让每个设计模式只提其中的六点,深入的东西还是需要在实际编码中不断的思考,修改,修正,思考…….学习过程中,收获不少:写代码时候回顾了不少C++特性UML图 如果脑袋里能复现出某个设计模式的UML,那
2017-04-02 15:36:11 3211
原创 行为型模式-访问者(visitor)
访问者表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作.
2017-04-01 20:29:25 2844
原创 行为型模式-模版方法(template_method)
模版方法定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类,可以不改变一个算法的结构即可重定义该算法的某些特定步骤.实例main.cc:#include <windows.h>#include "zhangsan_runner.h"#include "lisi_runner.h"/*design_pattern:"template_method"The
2017-04-01 00:03:57 2781
"Positioning System Open Source Docs - Hardware"官方英文版
2017-02-24
Hypereal位置追踪系统开源文档
2017-02-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人