整体思路


  1. 在VR模块的基础上调整视差,使其随距离发生变化;
  2. 左右分屏时,需要将左右屏的横向进行1/2压缩;这是因为3D-TV在对左右格式影像进行合并时,会进行拉伸;
  3. 左屏幕的相机相对于原来的(右屏)相机位置发生了变化,所以需要重新判断左屏幕相机视野内的切片,并重新进行渲染(解决黑色切片问题)。

代码部分


  1. 视差调整以及分屏横向压缩      
      function updateAndExecuteCommands(scene, passState, backgroundColor) {           ......var near = camera.frustum.near;var fo = near * 5.0;var eyeSeparation = fo / 30.0;//var eyeTranslation = Cartesian3.multiplyByScalar(savedCamera.right, eyeSeparation * 0.5, scratchEyeTranslation);    //修改,使得视差随相机高度变化    //var modifyEyeSeparation = eyeSeparation * 0.5 * savedCamera.position.z ;   //savedCamera.getMagnitude()获取距离中心的距离    var modifyEyeSeparation = eyeSeparation * 0.5 * savedCamera.getMagnitude() ;    var eyeTranslation = Cartesian3.multiplyByScalar(savedCamera.right, modifyEyeSeparation, scratchEyeTranslation);    viewport.x = passState.viewport.width;    // camera.frustum.aspectRatio = viewport.width / viewport.height;    // 修改,使得VR模式下球体横向收缩    camera.frustum.aspectRatio = viewport.width*2 / viewport.height;    var offset = 0.5 * eyeSeparation * near / fo;    //Cartesian3.add(savedCamera.position, eyeTranslation, camera.position);    camera.frustum.xOffset = offset;
      executeCommands(scene, passState);             viewport.x = 0;//Cartesian3.subtract(savedCamera.position, eyeTranslation, camera.position);camera.frustum.xOffset = -offset;    //相机位置发生变化,所以要渲染的切片发生变化;所以重新计算需要渲染的切片,进行渲染 (这部分还需要进行完善)    executeCommands(scene, passState);    Camera.clone(savedCamera, camera);

2.对左屏(相机偏移的场景)重新进行渲染(暂时解决方案,对相机外的场景同样进行渲染,存在的问题:效率太低)

  CullingVolume.prototype.computeVisibility = function(boundingVolume) {if (!defined(boundingVolume)) {throw new DeveloperError('boundingVolume is required.');    }    var planes = this.planes;    var intersecting = true;    for (var k = 0, len = planes.length; k < len; ++k) {    var result = boundingVolume.intersectPlane(Plane.fromCartesian4(planes[k], scratchPlane));    if (result === Intersect.OUTSIDE) {    // return Intersect.OUTSIDE;    //修改,不进行判断是否在范围内,全部进行渲染,从而避免立体视觉部分出现黑框    return Intersect.INSIDE;    } else if (result === Intersect.INTERSECTING) {    intersecting = true;    }    }    return intersecting ? Intersect.INTERSECTING : Intersect.INSIDE;   };

有待解决的问题

  相机偏移后(左屏),应当对场景(左屏)重新进行渲染。具体指

  1. 重新判断boundingVolume(球体)与CullingVolume(相机的视野)的相互关系(INSIDE或OUTSIDE),即判断球体是否在相机的视野范围内,对范围内的部分进行渲染;
  2. 重新对场景进行渲染,从而将当前相机视野内的切片渲染出来,避免黑框的出现

转载于:https://www.cnblogs.com/dongzhiwu/p/8092932.html

在CesiumVR基础上实现3D左右立体视觉相关推荐

  1. ]Kinect for Windows SDK开发入门(六):骨骼追踪基础 上

    原文来自:http://www.cnblogs.com/yangecnu/archive/2012/04/06/KinectSDK_Skeleton_Tracking_Part1.html Kinec ...

  2. 前排!零基础小白学习3D建模的必经之路

    随着游戏行业的迅猛发展,3d建模这一职业也成为了越来越多人的选择,但是掌握一项新技能是需要时间和精力的,今天想和大家分享一下零基础小白学习3d建模的必经之路,希望能够帮到大家. 01 可以自学3D建模 ...

  3. 0基础小白学3D建模需要多久,有没有3dmax快速建模插件来点技巧

    3dmax是应该广泛的软件,用于影视动画.建筑设计.广告.游戏.科研等领域.初学者自学的时候往往不知道哪里入手,眉毛胡子一把抓,不但学不到具体的东西,也增加了学习的难度,打击自己的信心.所以想学3dm ...

  4. 美术基础对学3D游戏建模重要吗?零基础如何学3D建模

    首先我要对这个问题进行肯定,能意识到美术的重要性,还没学就赢了.这个行业有多少人工作几年还在抠软件. 对于你这个问题首先要搞明白,什么是美术基础.而什么是3D游戏建模需要的美术基础. 我们通常理解的美 ...

  5. 没有美术基础能否学3d建模?

    第一 :学3d建模需要美术基础,但是不代表现在就需要美术基础. 1.很多朋友想学3d建模,但是遗憾的是,圈内人总是对他们说,学3d建模需要有美术基础,你们有吗?然后很多没有美术基础的朋友,就耷拉着脑袋 ...

  6. 想换工作,零基础如何转行3D建模,职业规划

    我觉得,不管怎样,转行都是一件需要勇气的事情.如果题主真的想转行的话,建议去仔细考虑考虑. 当然了,题主这种敢于去追逐自己的梦想的这种精神本身就很了不起.下面就给每个想转行学习建模的朋友一点建议吧. ...

  7. webGL、webGPU、封装、渲染引擎 three.js、游戏引擎,定位是游戏开发,在前面的渲染引擎基础上,还提供了骨骼动画、物理引擎、AI、GUI 等功能,以及可视化编辑器来设计关卡,支撑大型游戏

    https://zhuanlan.zhihu.com/p/162878354 如何选择 WebGL 框架和引擎? ​ 知道得越多,不知道的就更多了 数据可视化Sugar-百度智能云 ​cloud.ba ...

  8. 没有美术基础能学3d建模吗,学多久,就业怎么样

    1.很多朋友想学3d建模,但是遗憾的是,圈内人总是对他们说,学3d建模需要有美术基础,你们有吗?然后很多没有美术基础的朋友,就耷拉着脑袋,灰溜溜的不学了.其实这完全是一种错误的认识,没有美术基础就不能 ...

  9. 零基础能学3D游戏建模嘛?

    零基础能学3D游戏建模嘛?谁说学3D游戏建模要有基础! 你学习建模是为了什么?改行跳槽是一,对这方面有兴趣爱好是二,实际上很多人学习建模只不过便是想掌握,但你有没有觉得学的不深,不扎扎实实,许多指令, ...

最新文章

  1. 屏幕后处理——Bloom
  2. java字符串 直接能网络传输吗_atitit.二进制数据无损转字符串网络传输
  3. 可延迟函数、内核微线程以及工作队列
  4. asp.net页面处理过程文章整理
  5. 3 weekend110的hadoop中的RPC框架实现机制 + hadoop中的RPC应用实例demo
  6. SpringMVC的文件上传和拦截器
  7. 集成学习原理小结(转载)
  8. (转)最临近插值-双线性插值算法原理
  9. phpmyadmin安全预防
  10. 16个 Redis 常见使用场景,面试有内容聊啦
  11. 软件测试术语中英文对照
  12. 【C语言】科学计数法——复习总结
  13. 中国姓氏英文翻译大全
  14. 机械设计基础课程设计【1】
  15. python给全局变量赋值_Python 进程之间共享数据(全局变量)的方法 python 全局变量赋值的问题...
  16. 百家讲坛-《老子智慧与现代爱情婚姻》
  17. Linux基础命令(管理工具)
  18. 帮你解剖Python的一个轻量级桌面GUI开发第三方库:Eel,让它体无完肤
  19. BSC Web3生态深度研究
  20. Silvaco TCAD仿真9——半导体PN结仿真

热门文章

  1. 广西农产品(广州)交易会 农业大健康·林裕豪:签约农商对接
  2. 兰州谋定百合品牌-农业大健康·万祥军:功能性农业产业脱贫
  3. kettle的安装与连接mysql(包含mysql8)简单使用,
  4. openresty开发系列12--lua介绍及常用数据类型简介
  5. 杂项-公司:联邦快递百科-un
  6. android第三次作业
  7. 【sql】牛客网练习题 (共 61 题)
  8. Vuejs发送Ajax请求
  9. jQuery中hover与mouseover和mouseout的区别分析
  10. sql语句,怎么查看一个表中的所有约束