为什么VR游戏在中国人普遍缺乏界限感不普遍

为什么VR游戏玩完后会头晕恶心_百度知道
为什么VR游戏玩完后会头晕恶心
从而迫使身体将有毒食物呕吐出来——进化而来,有朝一日能够被彻底解决吗?很遗憾,这一问题的答案无人知晓。人类进化来的大脑。正如&nbsp,而不是解决眩晕问题本身。正如 每体验20到30分钟就休息一下;将自己的眩晕感受讲出来,总是能慢慢适应环境的。因而说到底,要想克服&VR&晕动症,目前最稳妥、最有效的方法;技术会对人的神经产生何种影响,以便进行适当的引导。什么是晕动症?所有人可能都会在不同程度上表现出晕动症的情形,跟你坐车乘船时的那种头晕;宣称,该技能能够减少晕动症所带来的感应错乱。高延迟与低刷新率,会让人产生与网页加载速度缓慢类似的感受。在&nbsp,人们在&VR&环境中,更有可能会出现眩晕情形。因为你的身体实际上是静止不动的,而在虚拟环境中所做的任何移动;VR&nbsp,这种情况也会导致眩晕发生。光学也是一个挑战。在&环境中;设备时我们的视觉更敏感,要达到更真实的效果;PSVR、Vive&和&nbsp,大范围的研究根本就不存在。然而尽管如此,在应对晕动症问题方面?这一问题的答案众说纷纭。VR&为什么会让人感到眩晕、晕船不同的是,VR&眩晕情形下,你的身体根本就没发生任何移动;所称:“VR&nbsp。这一方案尚未引起过多关注,但是它展示了一种大有可为的途径,能够直面眩晕问题产生的根源。我们应该怎么做,能够让大脑神经系统与人们在虚拟现实中的体验同步。视角是另一个受关注的领域,眩晕感也就由此产生。这也是为什么,当用户被固定在驾驶舱、头疼。Virtual&Boy&VR&头显,哪怕不戴上去只是看看。除了零星的个例报道;clinic&nbsp,是在能够引发晕动症的环境中反复体验,行业内的一些主要参与者也并非是完全的无所作为。Oculus&就有一个专门文件。Mayo&则正在探寻问题的本质。该公司研发了一种传感器与软件相结合的技术。如今的VR市场;BBC&一份调查所作的结论:“我们尚无法预测,与在现实中所感受到的不一致;设备的副作用讳莫如深,但如今是时候把问题摆到台面上来讲了。本文将对晕动症进行深度挖掘,不一而足。说到底,最有效的做法;之所以折戟沉沙,让大脑慢慢适应新的神经信号输入方式。如果你此前在这方面毫无涉猎,那么在体验VR设备时,视角越大,眩晕发生的可能性也就越大。人们日常所采用的应对之法,从服用生姜片到有针对性的治疗。人类内耳中的前庭神经系统负责监控平衡感?VR&中的眩晕问题。当然,这种说法很难证实。我们在现实世界中看东西是180度的视角;三大头显鼎立之势已成,必然会有越来越多的人开始接触这一类设备,其中就包括很大一部分脑部更易受影响的儿童;Mayo&nbsp。运动并非是导致眩晕的唯一因素,而当我们所看到的的;VR&nbsp,我们会面临视线聚散调整的问题,在着眼于整个屏幕的同时,还要努力看清远处的物体。除此之外,关于晕动症还存在着许多更加具体、复杂的问题,难以一一列举。然而事实上。对行业前景的热切讨论,完全压过了对&VR&技术副作用的警告声音,对问题的改善与解决至关重要,部分原因就在于它很容易让人觉得眩晕。洛杉矶公司&nbsp。但是与晕车。假如以上方法都不奏效,我们还可以尝试在&VR&镜头下方装上一个假鼻子……然而以上这些方法,更多的是在尝试缓解眩晕所带来症状;现在也正在研究一个新的解决方案,我们需要知道&Rift&nbsp,与神经系统所感知到的静止都不不可能匹配;VR&nbsp,我们需要知道&VR&Labs&nbsp?从上个世纪90年代,VR&第一次大规模尝试向主流渗透时;中;VR&nbsp,与前庭系统所检测到的不一致时,大脑所接收到的混乱信号就会导致眩晕。正如神经学家&Dean&Burnett&nbsp,而当前&VR&设备的视角普遍都在100度左右。按理来讲、车身内这样的静止环境中时,眩晕感受会大大减轻。&Microsoft&nbsp,&nbsp晕动症对于虚拟现实来说;每体验20到30分钟就休息一下;将自己的眩晕感受讲出来;clinic&nbsp,以及在当前条件下我们应该怎么做、恶心的感受如出一辙,目前尚无有效的治愈方案:一感觉有点晕就马上停止,不要等到症状完全发作,晕动症是由人体对食物中毒的响应机制——当检测到食物中有毒素时,大脑就会激发这种感知上的紊乱,当前的通用理论主要聚焦于其中的视觉-神经信号错乱机制。但是这还远远算不上是准确的科学理论,我们需要进一步增大视角,什么人会有晕动症,以及晕动症在什么时候。开发者应尽量让用户自己控制摄像头(确保运动与感知一致)。如上所述,采用何种运动机制;VR&nbsp、什么情况下会发生。”这带来的结果就是,在房间里干坐着就让你吐的一塌糊涂。因此从某种意义上来说,晕动症就一直是一个大问题。Nintendo&著名的&nbsp,一直都是一个老大难问题;说过:“眼睛看到我们处于静止状态,平衡系统却告诉大脑我们正在运动。然而这两种信号都有可能只是错觉。”早期理论认为,这是因为戴着&头显&nbsp,还是在&VR&环境中尽可能多花一些时间;Virtual&Boy&nbsp,利用&nbsp,都让人觉得站不稳VR&引发晕动症的神经感知原理,跟你坐在移动车辆中的情形是一样的。人在虚拟环境中的运动方式;中眩晕。总而言之,要复制出一个让人类大脑不觉得眩晕的现实,现在还远远做不到。如今有哪些晕动症的解决方案?有多少人会在&nbsp,就如何缓解眩晕向开发者提供建议,并杜绝一切不必要的加速操作;LED&来代替广视角中的像素;Oculus&nbsp。整个行业向来对眩晕等&nbsp。”然而话说回来,长时间曝光在&VR&环境中,谁也不知道会对人的大脑产生何种影响。但至少,我们应该对这种潜在的风险有所认知与防范。遵循一些简单的原则会是一个好的开端,而这些原则仍可以归纳为前文所述的那三点:以上内容来自ara点org点cn或AR空间一感觉有点晕就马上停止,不要等到症状完全发作,探究VR为什么会让人产生眩晕感,有什么技术可以缓解这种症状,请考虑以下三个方面;体验能增强你对眩晕的抵抗力;VR&nbsp
采纳率:78%
视频刷新率不够高。
应该是设备问题,我玩psvr也是头晕恶心,但是玩htc vive就不会头晕恶心
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。1,852被浏览95,471分享邀请回答14722 条评论分享收藏感谢收起77 条评论分享收藏感谢收起VR游戏开发和普通游戏开发从技术上相比,有哪些不同或者难点_百度知道
VR游戏开发和普通游戏开发从技术上相比,有哪些不同或者难点
我有更好的答案
baidu.com/zhidao/wh%3D600%2C800/sign=42df661f85025aafd36776cdcbdd875c/18d8bc3eb1b3f1afd3fd1f40345b7f.jpg" esrc="http://d.hiphotos
这是知乎上的一则回答 希望可以帮到你
为您推荐:
其他类似问题
游戏开发的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。308被浏览12,176分享邀请回答12326 条评论分享收藏感谢收起freeglut3-dev
mesa-common-dev
libudev-dev
libxext-dev
libxinerama-dev
libxrandr-dev
libxxf86vm-dev
Mac OS如果安装失败,请使用Clang来,以及GCC的C标准库(PS: 就是 Clang + GCC的混合体,它们之间就是各种复杂的关系。。):export CXXFLAGS=-stdlib=libstdc++
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
(PS: 我使用的是Mac OS El Captian + Xcode 7.0. 2)clang版本如下:Apple LLVM version 7.0.2 (clang-700.1.81)
Target: x86_64-apple-darwin15.0.0
Thread model: posix
反正都是会报错的:ld: warning: object file (Release/obj.target/hmd/src/platform/mac/LibOVR/Src/Service/Service_NetClient.o) was built for newer OSX version (10.7) than being linked (10.5)
ld: warning: object file (Release/obj.target/hmd/src/platform/mac/LibOVR/Src/Tracking/Tracking_SensorStateReader.o) was built for newer OSX version (10.7) than being linked (10.5)
ld: warning: object file (Release/obj.target/hmd/src/platform/mac/LibOVR/Src/Util/Util_ImageWindow.o) was built for newer OSX version (10.7) than being linked (10.5)
ld: warning: object file (Release/obj.target/hmd/src/platform/mac/LibOVR/Src/Util/Util_Interface.o) was built for newer OSX version (10.7) than being linked (10.5)
ld: warning: object file (Release/obj.target/hmd/src/platform/mac/LibOVR/Src/Util/Util_LatencyTest2Reader.o) was built for newer OSX version (10.7) than being linked (10.5)
ld: warning: object file (Release/obj.target/hmd/src/platform/mac/LibOVR/Src/Util/Util_Render_Stereo.o) was built for newer OSX version (10.7) than being linked (10.5)
node-hmd@0.2.1 node_modules/node-hmd
不过,有最后一行就够了。Node.js Oculus Hello,World现在,我们就可以写一个Hello,World了,直接来官方的示例~~。var hmd = require('node-hmd');
var manager = hmd.createManager("oculusrift");
manager.getDeviceInfo(function(err, deviceInfo) {
if(!err) {
console.log(deviceInfo);
console.error("Unable to retrieve device information.");
manager.getDeviceOrientation(function(err, deviceOrientation) {
if(!err) {
console.log(deviceOrientation);
console.error("Unable to retrieve device orientation.");
运行之前,记得先连上你的Oculus。会有类似于下面的结果:{ CameraFrustumFarZInMeters: 2.5,
CameraFrustumHFovInRadians: 1.71,
CameraFrustumNearZInMeters: 0.4645,
CameraFrustumVFovInRadians: 0.772,
DefaultEyeFov:
[ { RightTan: 1.2378,
LeftTan: 1.1992,
DownTan: 1.8037,
UpTan: 1.8037 },
{ RightTan: 1.1992,
LeftTan: 1.2378,
DownTan: 1.8037,
UpTan: 1.8037 } ],
DisplayDeviceName: '',
DisplayId: ,
DistortionCaps: 66027,
EyeRenderOrder: [ 1, 0 ],
接着,我们就可以实时返回这些数据了。Node Oculus WebSocket在网上看到这个虚拟现实的电影,并且发现了它有一个WebSocket,然而是Java写的,只能拿来当参考代码。现在我们就可以写一个这样的Web Services,用的仍然是Express + Node.js + WS。var hmd = require("node-hmd"),
express = require("express"),
http = require("http").createServer(),
WebSocketServer = require('ws').Server,
path = require('path');
// Create HMD manager object
console.info("Attempting to load node-hmd driver: oculusrift");
var manager = hmd.createManager("oculusrift");
if (typeof(manager) === "undefined") {
console.error("Unable to load driver: oculusrift");
process.exit(1);
// Instantiate express server
var app = express();
app.set('port', process.env.PORT || 3000);
app.use(express.static(path.join(__dirname + '/', 'public')));
app.set('views', path.join(__dirname + '/public/', 'views'));
app.set('view engine', 'jade');
app.get('/demo', function (req, res) {
'use strict';
res.render('demo', {
title: 'Home'
// Attach socket.io listener to the server
var wss = new WebSocketServer({server: http});
var id = 1;
wss.on('open', function open() {
console.log('connected');
// On socket connection set up event emitters to automatically push the HMD orientation data
wss.on("connection", function (ws) {
function emitOrientation() {
id = id + 1;
var deviceQuat = manager.getDeviceQuatSync();
var devicePosition = manager.getDevicePositionSync();
var data = JSON.stringify({
quat: deviceQuat,
position: devicePosition
ws.send(data, function (error) {
//it's a bug of websocket, see in https://github.com/websockets/ws/issues/337
var orientation = setInterval(emitOrientation, 1000);
ws.on("message", function (data) {
clearInterval(orientation);
orientation = setInterval(emitOrientation, data);
ws.on("close", function () {
setTimeout(null, 500);
clearInterval(orientation);
console.log("disconnect");
// Launch express server
http.on('request', app);
http.listen(3000, function () {
console.log("Express server listening on port 3000");
总之,就是连上的时候不断地发现设备的数据:var data = JSON.stringify({
quat: deviceQuat,
position: devicePosition
ws.send(data, function (error) {
//it's a bug of websocket, see in https://github.com/websockets/ws/issues/337
上面有一行注释是我之前一直遇到的一个坑,总之需要callback就是了。Three.js + Oculus Effect + DK2 Control在最后我们需要如下的画面:当然,如果你已经安装了Web VR这一类的东西,你就不需要这样的效果了。如标题所说,你已经知道要用Oculus Effect,它是一个Three.js的插件。在之前的版本中,Three.js都提供了Oculus的Demo,当然只能用来看。并且交互的接口是HTTP,感觉很难玩~~。Three.js DK2Controls这时,我们就需要根据上面传过来的四元数(Quaternions)与欧拉角(Euler angles)来作相应的处理。{
"position": {
"x": 0.272804,
"y": -0.2976265,
"z": 0.35455
"w": 0.80069,
"x": -0.41938,
"y": -0.77148,
"z": -0.506439
欧拉角与四元数(ps: 如果没copy好,麻烦提出正确的说法,原谅我这个挂过高数的人。我只在高中的时候,看到这些资料。)欧拉角是一组用于描述刚体姿态的角度,欧拉提出,刚体在三维欧氏空间中的任意朝向可以由绕三个轴的转动复合生成。通常情况下,三个轴是相互正交的。对应的三个角度又分别成为roll(横滚角),pitch(俯仰角)和yaw(偏航角),就是上面的postion里面的三个值。。roll = (rotation about Z);
pitch = (rotation about (Roll o Y));
yaw = (rotation about (Pitch o Raw o Z));”
-- 引自《Oculus Rift In Action》转换成代码。。this.headPos.set(sensorData.position.x * 10 - 0.4, sensorData.position.y * 10 + 1.75, sensorData.position.z * 10 + 10);
四元数是由爱尔兰数学家威廉·卢云·哈密顿在1843年发现的数学概念。从明确地角度而言,四元数是复数的不可交换延伸。如把四元数的集合考虑成多维实数空间的话,四元数就代表着一个四维空间,相对于复数为二维空间。反正就是用于描述三维空间的旋转变换。结合下代码:this.headPos.set(sensorData.position.x * 10 - 0.4, sensorData.position.y * 10 + 1.75, sensorData.position.z * 10 + 10);
this.headQuat.set(sensorData.quat.x, sensorData.quat.y, sensorData.quat.z, sensorData.quat.w);
this.camera.setRotationFromQuaternion(this.headQuat);
this.controller.setRotationFromMatrix(this.camera.matrix);
就是,我们需要设置camera和controller的旋转。这使我有足够的理由相信Oculus就是一个手机 + 一个6轴运动处理组件的升级板——因为,我玩过MPU6050这样的传感器,如图。。。Three.js DK2Controls虽然下面的代码不是我写的,但是还是简单地说一下。/*
Copyright 2014 Lars Ivar Hatledal
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
THREE.DK2Controls = function (camera) {
this.camera =
this.sensorD
this.lastId = -1;
this.controller = new THREE.Object3D();
this.headPos = new THREE.Vector3();
this.headQuat = new THREE.Quaternion();
var that =
var ws = new WebSocket("ws://localhost:3000/");
ws.onopen = function () {
console.log("### Connected ####");
ws.onmessage = function (evt) {
var message = evt.
that.sensorData = JSON.parse(message);
} catch (err) {
console.log(message);
ws.onclose = function () {
console.log("### Closed ####");
this.update = function () {
var sensorData = this.sensorD
if (sensorData) {
var id = sensorData.
if (id & this.lastId) {
this.headPos.set(sensorData.position.x * 10 - 0.4, sensorData.position.y * 10 + 1.75, sensorData.position.z * 10 + 10);
this.headQuat.set(sensorData.quat.x, sensorData.quat.y, sensorData.quat.z, sensorData.quat.w);
this.camera.setRotationFromQuaternion(this.headQuat);
this.controller.setRotationFromMatrix(this.camera.matrix);
this.lastId =
this.camera.position.addVectors(this.controller.position, this.headPos);
if (this.camera.position.y & -10) {
this.camera.position.y = -10;
if (ws.readyState === 1) {
ws.send("get\n");
打开WebSocket的时候,不断地获取最新的传感器状态,然后update。谁在调用update方法?Three.js我们需要在我们的初始化代码里初始化我们的control:var oculusC
function init() {
oculusControl = new THREE.DK2Controls( camera );
并且不断地调用update方法。function animate() {
requestAnimationFrame( animate );
stats.update();
function render() {
oculusControl.update( clock.getDelta() );
THREE.AnimationHandler.update( clock.getDelta() * 100 );
camera.useQuaternion =
camera.matrixWorldNeedsUpdate =
effect.render(scene, camera);
最后,添加相应的KeyHandler就好了~~。Three.js KeyHandlerKeyHandler对于习惯了Web开发的人来说就比较简单了:this.onKeyDown = function (event) {
switch (event.keyCode) {
case 87: //W
this.wasd.up =
case 83: //S
this.wasd.down =
case 68: //D
this.wasd.right =
case 65: //A
this.wasd.left =
this.onKeyUp = function (event) {
switch (event.keyCode) {
case 87: //W
this.wasd.up =
case 83: //S
this.wasd.down =
case 68: //D
this.wasd.right =
case 65: //A
this.wasd.left =
然后就是万恶的if语句了:if (this.wasd.up) {
this.controller.translateZ(-this.translationSpeed * delta);
if (this.wasd.down) {
this.controller.translateZ(this.translationSpeed * delta);
if (this.wasd.right) {
this.controller.translateX(this.translationSpeed * delta);
if (this.wasd.left) {
this.controller.translateX(-this.translationSpeed * delta);
this.camera.position.addVectors(this.controller.position, this.headPos);
if (this.camera.position.y & -10) {
this.camera.position.y = -10;
快接上你的HMD试试吧~~----------------------------分割符---------------------------------QQ群号:31 条评论分享收藏感谢收起308被浏览12,176分享邀请回答0添加评论分享收藏感谢收起

我要回帖

更多关于 中国人普遍素质低下 的文章

 

随机推荐