Android手机与vr交互暴风魔镜3D效果显示原理

首先讲到VR,谈谈个人体会,半年前看到淘宝上的vr眼镜盒为了促销标题图片都是非常性感的,还有海量你懂得资源。到最近在淘宝搜索vr暴风魔镜都正规了,而且销售量庞大

还有新闻上很多vr的科技前沿资讯可以看出来。vr技术随时间的流逝正在日益发展成熟,就像曾经的诺基亚到安卓,苹果。可以说vr技术现在还未成熟,但是具有强大的潜力价值。

----眼睛的呈像原理:

人眼视觉的立体感和空间的距离感时如何产生的? 人有两只眼睛看到的事物有叠加的部分,而角度又不完全相同。两眼得到的是有细微差别的不同图像,在大脑中得到的图像就有了立体感,即能够分辨出距离,大脑通过对两个影像的处理感知距离和空间。

立体电影就是根据这个原理:拍摄时用两台摄影机离开一定距离同步拍摄,放映时两台放影机同步放映两部电影,且运用偏光镜将左右两部电影的光设置成不同的偏振方式。观看者戴上特制的偏光眼镜,让两眼分别看到不同的放映机光线,在大脑中就得到了强烈的立体图像。 做一个很简单的测试,闭上你一只眼睛,去摸一个放在桌子上铅笔的笔尖,很难摸到,因为单眼得到的图像没有立体感,只能凭经验来区别。

-----接下来谈谈VR:

虚拟现实头戴显示器设备,简称VR头显或VR眼镜,手机屏幕只有一个,而我们却有两个眼睛,又必须要让左、右眼所看的图像同步且各自独立分开,才能有立体视觉。所以看vr电影最基本的条件就是将手机屏幕分屏,然后通过两个镜片,左右眼得到同样的图像信息,消除双眼视角重叠带来的分离感,从而取代了看到前方是距离很近的显示屏的感觉。

还有就是手机的传感器,目前vr视频播放会使用手机的陀螺仪等重力传感器实现视频播放过程周围视角的随角度转变,如同真正意义上的看头转动看周围及身后。这就是身临其境的效果实现原理,但是这些视频由于360度的效果往往内存巨大,常见的vr视频为全景和左右视角。

-----未来前景:

主机平台现在有一类游戏,以高画质剧情体验为主,操作非常简单,俗称“游戏电影化”。目前VR圈也有很大一部分人在尝试VR电影的制作,但是基于360°视频的拍摄手法在VR的沉浸感并不是很好,而且传统的电影拍摄手法也不适合VR视频制作。所以,电脑制作的3D动画类电影在VR化方面具有先天优势,再结合VR头显的一些输入特性,甚至会产生“电影游戏化”的产品。另一方面,以UE4为代表的游戏引擎,实时渲染的画面效果已经达到了CG级别,在技术上具备了制作实时渲染电影的能力。可以预见到,未来的VR互动电影与VR游戏,它们之间的边界会变得十分模糊。

老实说,当vr技术开发完善后,手机的3D游戏将真正实现身临其境的感觉。当然身临其境的恐怖丧尸类的游戏将只会是勇敢者才敢尝试的禁区。对于手机游戏将会有巨大的改变,对手机日常应用也将让商品购物变成立体的。

所以说vr技术完善的那天将会有多么巨大的改变。vr有巨大的潜力市场。

不过现在还有几大问题:手机电量的限制,手机散热措施不完善,长时间视频观看有时导致大脑晕眩,近距离是否会对眼睛造成损害吗,大型3D手机运行内存问题(这个手机升级中将不再是问题)等。这是我的个人看法。

-----前面是vr的介绍,现在来点干货:

1、vr的陀螺仪传感器等:

[java] view plain copy

  • SENSOR_TYPE_ACCELEROMETER 1 //加速度
  • SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力
  • SENSOR_TYPE_ORIENTATION 3 //方向
  • SENSOR_TYPE_GYROSCOPE 4 //陀螺仪
  • SENSOR_TYPE_LIGHT 5 //光线感应
  • SENSOR_TYPE_PRESSURE 6 //压力
  • SENSOR_TYPE_TEMPERATURE 7 //温度
  • SENSOR_TYPE_PROXIMITY 8 //接近
  • SENSOR_TYPE_GRAVITY 9 //重力
  • SENSOR_TYPE_LINEAR_ACCELERATION 10//线性加速度
  • SENSOR_TYPE_ROTATION_VECTOR 11//旋转矢量

对于屏幕播放视角的控制。陀螺仪有些旧手机没有这功能。而且vr的软件版本要求较高。

2.vr的手机屏幕左右分屏:

这边的代码实现敬请期待下一篇,本篇只讲原理,最简单设计用两个等大小surfaceView放置在屏幕左右两侧,然后实现一个视频文件两个场景同时播放,然后戴上vr眼睛也是有3D效果,不过缺少陀螺仪的视角转变。没有身临其境的感觉。这也就是普通视频文件和vr视频文件的区别。然后还有一点这样设计代码冗余性高,不效率。谷歌推出自己的vr三方。

vr视频文件还带有视频的拉伸压缩,以及全视角。不过一个普通的视频几百M,然而转变成vr后就一般是7G左右。这也是制约手机播放的因素,为什么?现在手机内存也就16G,可用一般9G,然后手机一般还放了自己的东西,哪有那内存,就算32G也经不住下载慢。所以这个问题大概很多vr眼睛拥有者都很苦恼。而找了很多vr视频播放软件又没功能,这个我自己是通过电脑来完成,目前我正在考虑自己的理想设计方案。

3.vr手柄的蓝牙手机操作:

蓝牙权限:

[java] view plain copy

  • <uses-permission android:name="android.permission.BLUETOOTH" />
  • <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

使用2.4G赫兹频率的无线电波,受干扰较小。路由器,无线鼠标键盘,通常是干扰对象,会降低信号的信噪比,但很少出现完全失效的情况。传输范围在10M左右实际传输速度在100kb+,,Android 2.0开始支持蓝牙,API6 调试时候需要真机,模拟器不行。

Android蓝牙开发:

权限 android.permission.BLUETOOTH 允许程序连接到已配对的蓝牙设备

android.permission.BLUETOOTH_ADMIN 允许程序发现和配对蓝牙设备

拿到本机蓝牙设备适配器: 通过判断非null来得知当前设备是否支持蓝牙

bluetoothAdapter= BluetoothAdapter.getDefaultAdapter();

查看蓝牙是否打开:

bluetoothAdapter.isEnabled()

打开蓝牙

// 1提示用户打开蓝牙,此方法会设置设备为“可发现”模式,默认120秒

startActivityForResult(newIntent(

BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE).putExtra(

bluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,300),

REQUEST_OPEN_BLUETOOTH);

// 2 提示用户打开蓝牙,此方法仅打开,不会改变蓝牙设备当前的可发现状态

startActivityForResult(newIntent( BluetoothAdapter.ACTION_REQUEST_ENABLE).putExtra(

bluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,300),

REQUEST_OPEN_BLUETOOTH);

//3直接打开蓝牙

bluetoothAdapter.enable();

打开设备为发现模式:

// 1提示用户设置为可发现模式

startActivityForResult(new Intent( BluetoothAdapter.ACTION_REQUEST_ENABLE).putExtra(

bluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,300),

REQUEST_OPEN_BLUETOOTH);

//2直接打开为可发现模式

bluetoothAdapter.startDiscovery();

关闭蓝牙: bluetoothadapter是单例的

BluetoothAdapteradapter=BluetoothAdapter.getDefaultAdapter();

adapter.disable();

判断是否正在扫描

bluetoothAdapter.isDiscovering()

开始扫描蓝牙设备

bluetoothAdapter.startDiscovery();

注册扫描发现设备的监听

BluetoothAdapter.ACTION_DISCOVERY_STARTED开始扫描

BluetoothDevice.ACTION_FOUND发现新设备

BluetoothAdapter.ACTION_DISCOVERY_FINISHED扫描结束

在扫描到新设备的监听中,拿到这个设备

4.3D的图形效果制作: 通过Unity软件制作3D的图形效果(这里可以实现游戏的图案效果),与Android包交互中间会用到C#语言。同样的UE也可以支持GearVR和Google的DayDream,Google Developer Center里面有CardBoard的SDK直接调用WebGL的WebView的WebVR

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-08-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏智能算法

最令程序员沮丧的十件事

er双旦快乐~! 软件开发是一个伟大的工作——和任何其他工作一样,它也有它的缺点。下面的十件事就是大多数程序员关于编程所无法苟同的。 对于非软件开发人员来说,...

2845
来自专栏程序你好

软件开发中的10大不为人知的真相

932
来自专栏大数据和云计算技术

超融合方案分析系列(7)思科超融合方案分析

引言 作者是国内研究超融合相当早的专家,有非常强的理论基础和实战经验。上几篇分析文章,对nutanix/VSAN/深信服/H3C/EMC等厂家的深入分析,引起了...

5146
来自专栏腾讯大讲堂的专栏

自由测试人 Jarod 的一天

上午10:05 五道口漫咖啡,Jarod摆弄着新淘来的Nexus5手机,时而饮一口桌上的焦糖拿铁,间或偷眼瞄一下邻桌的长腿妹子。 上午10:30 Alliso...

2575
来自专栏Crossin的编程教室

从教女友写代码中学到的

从教女友写代码中学到的,教人写代码在一定程度上是硬件问题 本文由 伯乐在线 - 奇风余谷 翻译自 Shu Uesugi。译文链接见文末“阅读原文”。 从今年四月...

3689
来自专栏大宽宽的碎碎念

如何避免问渣问题?

45320
来自专栏VRPinea

Oculus发布Touch控制器挂接口,用以将现实物品带入虚拟场景

3199
来自专栏俞其荣的博客

记自己2018年三月份的面试经历烦烦烦烦面试的几家公司写在结尾

36712
来自专栏机器人网

干货:高水平自动化工程师的成长进阶之路

写在前面:进阶没有绝招,但好学和热爱绝对是必杀技。 【能力特点】 1、能用计算机进行PLC控制编程与调试。 2、能用计算机进行CAD电气原理图纸的绘制。 3、...

39711
来自专栏玄魂工作室

近几年前端技术盘点以及 2016 年技术发展方向

Web 发展了几十个春秋,风起云涌,千变万化。我很庆幸自己没有完整地经历过这些年头,而是站在前人的肩膀上行走。Web 技术发展的速度让人感觉那几乎不是继承式的迭...

3143

扫码关注云+社区

领取腾讯云代金券