OSVR HMD的Json描述符文件结构分析(V1)
来源:互联网 发布:阿里云域名过户流程 编辑:程序博客网 时间:2024/05/21 17:04
基于OSVR-Core 0.6-1962-g59773924
所用到的例子为zSight 1920-100. zSight是什么意思?该实例在部分OSVR发行版上可用。
因为并不是所有的JSON解析器(尤其是Python JSON解释器)接受C风格的注释。因此,这里采用独立文档形式来表述这些描述符。也可参考JSON规范文件。
文件开头于一个版本号,随后才展开主体hmd对象。
{ "meta": { "schemaVersion": 1 }, "hmd": {
device节点对图像的渲染不会产生影响。它提供需要使用到的HMD名字,以及可用HMD的清单等。
"device": { "vendor": "Sensics", "model": "zSight 1920-100", "Version": "", "Note": "" },
它们在osvr_rendermanager中的文件OSVR-RenderManager\osvr\RenderKit\osvr_display_configuration.cpp被解析,其他节点也都在这个文件被解析后,传往APP:
void OSVRDisplayConfiguration::parse(const std::string& display_description) { ...... // Device properties auto processDeviceData = [&](Json::Value const& devprops) { m_vendor = devprops["vendor"].asString(); m_model = devprops["model"].asString(); m_version = devprops["Version"].asString(); m_note = devprops["Note"].asString(); }; ...... }字段field_of_view定义HMD的光学参数。因为一些HMD有部分重叠---意思是左右眼的视觉方向不是完全一致--因此视场角的定义就是双眼各自不重叠部分加上双眼重叠部分。
monocular_horizontal和monocular_vertical的单位为度。overlap_precent为重叠区角度和全视场角度(双眼各自不重叠部分+双眼重叠部分)的百分比。如下图所示为Sensics的dSight视觉方向(什么是dSight?),左眼红色,右眼绿色,虚线为正前方:
在本例中,左眼从-60到+35度,右眼从+35度到-60度(正负是怎么判断的?)。因此,共同区域或者说重叠区就处于-35到+35度之间,加起来就是70度。因此:
1.水平单眼视场角就是60+35 = 95度
2.双目重叠区域百分比就是70/95 = 73.68%
还有一些HMD有倾斜向下的视场角,这种情况下,需要给pitch_tilt设置一个正数值(表示倾斜向下)。
(下面给出的例子实际数据好像跟上面的解释没关系?o(╯□╰)o)
"field_of_view": { "monocular_horizontal": 60, "monocular_vertical": 33.75, "overlap_percent": 50, "pitch_tilt": 0 },
resolutions数组表示HMD支持的分辨率。一些HMD支持多种分辨率以及多种显示模式。排在最前面的分辨率优先被使用,并且一些解析器可能只能够处理数组中的某一个分辨率。字段如下:
1.width:水平尺寸,以像素为单位的视频输入
2.height:垂直尺寸,以像素为单位的视频输入
3.video_inputs:HMD视频输入端的个数(一般是屏的数量)。一些HMD有2个独立的输入端,每只眼睛对应一个。如果只有一个输入端,并且使用了side-by-side的显示模式,width和height应该设置两边综合起来的宽度和高度值。
4.display_mode:可以是full_screen,horz_side_by_side或者vertical_side_by_side。以下例子:
horizontal side-by-side:
vertical side-by-side:
Full screen:
以下例子阐明支持side-by-side 单屏时和支持双屏full_screen时的写法:
"resolutions": [ { "width": 1920, "height": 1080, "video_inputs": 2, "display_mode": "full_screen" }, { "width": 1920, "height": 1080, "video_inputs": 1, "display_mode": "horz_side_by_side" } ],
distortion节点提供红,绿,蓝畸变校正参数。这些参数来源于osvr/distortionizer工程,可去GitHub上下载编译:
"distortion": { "k1_red": 0, "k1_green": 0, "k1_blue": 0 },
rendering节点提供的字段可用来旋转左眼或右眼的图像。一些HMD由于内部构造方式的问题会要求旋转图像180度。旋转参数以度为单位。以下是vert_side_by_side显示模式的一张图进行了right_roll 180度的操作。
"rendering": { "right_roll": 0, "left_roll": 0 }, "eyes": [ { "center_proj_x": 0.5, "center_proj_y": 0.5 } ] } }
center_proj_x和center_proj_y是什么意思?
- OSVR HMD的Json描述符文件结构分析(V1)
- 添加一个新的HMD到OSVR
- OSVR接入HMD设备
- 应用程序描述文件的结构
- 文件描述符的分析(35-2)
- 文件描述符的分析(35-2)
- JSON结构描述
- 最近项目中出现的问题(结构体,指针,文件描述符)
- 探索文件描述符(fd)与FILE结构体之间的关系
- 简析文件描述符(fd)和FILE结构体的关系
- 探索文件描述符(fd)与FILE结构体之间的关系
- 文件描述符(fd)和FILE结构体的关系
- 简析文件描述符(fd) 和 FILE结构体的关系
- 文件描述符(fd)与FILE结构体
- FILE结构体与文件描述符
- 文件描述符以及file结构体
- FILE结构体与文件描述符
- FILE结构体与文件描述符
- 自定义view
- hdu5776 sum
- PHP csv大文件读取与操作
- android仿今日头条下拉刷新中的vector动画
- fzu2281-贪心+大数压位
- OSVR HMD的Json描述符文件结构分析(V1)
- 08-指令ng-model应用状态
- springmvc请求参数获取的几种方法
- 修改linux文件权限命令
- PE详解之基址重定位详解(PE详解10)
- 我学xingo golang服务器之-xingo_demo 服务器游戏逻辑处理初始化过程
- fzu2275-kmp
- HDU2295 Radar(舞蹈链重复覆盖,二分)
- 0x01 为什么要有同步机制