在CesiumVR基础上实现3D左右立体视觉
整体思路
- 在VR模块的基础上调整视差,使其随距离发生变化;
- 左右分屏时,需要将左右屏的横向进行1/2压缩;这是因为3D-TV在对左右格式影像进行合并时,会进行拉伸;
- 左屏幕的相机相对于原来的(右屏)相机位置发生了变化,所以需要重新判断左屏幕相机视野内的切片,并重新进行渲染(解决黑色切片问题)。
代码部分
- 视差调整以及分屏横向压缩
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; };
有待解决的问题
相机偏移后(左屏),应当对场景(左屏)重新进行渲染。具体指
- 重新判断boundingVolume(球体)与CullingVolume(相机的视野)的相互关系(INSIDE或OUTSIDE),即判断球体是否在相机的视野范围内,对范围内的部分进行渲染;
- 重新对场景进行渲染,从而将当前相机视野内的切片渲染出来,避免黑框的出现
转载于:https://www.cnblogs.com/dongzhiwu/p/8092932.html
在CesiumVR基础上实现3D左右立体视觉相关推荐
- ]Kinect for Windows SDK开发入门(六):骨骼追踪基础 上
原文来自:http://www.cnblogs.com/yangecnu/archive/2012/04/06/KinectSDK_Skeleton_Tracking_Part1.html Kinec ...
- 前排!零基础小白学习3D建模的必经之路
随着游戏行业的迅猛发展,3d建模这一职业也成为了越来越多人的选择,但是掌握一项新技能是需要时间和精力的,今天想和大家分享一下零基础小白学习3d建模的必经之路,希望能够帮到大家. 01 可以自学3D建模 ...
- 0基础小白学3D建模需要多久,有没有3dmax快速建模插件来点技巧
3dmax是应该广泛的软件,用于影视动画.建筑设计.广告.游戏.科研等领域.初学者自学的时候往往不知道哪里入手,眉毛胡子一把抓,不但学不到具体的东西,也增加了学习的难度,打击自己的信心.所以想学3dm ...
- 美术基础对学3D游戏建模重要吗?零基础如何学3D建模
首先我要对这个问题进行肯定,能意识到美术的重要性,还没学就赢了.这个行业有多少人工作几年还在抠软件. 对于你这个问题首先要搞明白,什么是美术基础.而什么是3D游戏建模需要的美术基础. 我们通常理解的美 ...
- 没有美术基础能否学3d建模?
第一 :学3d建模需要美术基础,但是不代表现在就需要美术基础. 1.很多朋友想学3d建模,但是遗憾的是,圈内人总是对他们说,学3d建模需要有美术基础,你们有吗?然后很多没有美术基础的朋友,就耷拉着脑袋 ...
- 想换工作,零基础如何转行3D建模,职业规划
我觉得,不管怎样,转行都是一件需要勇气的事情.如果题主真的想转行的话,建议去仔细考虑考虑. 当然了,题主这种敢于去追逐自己的梦想的这种精神本身就很了不起.下面就给每个想转行学习建模的朋友一点建议吧. ...
- webGL、webGPU、封装、渲染引擎 three.js、游戏引擎,定位是游戏开发,在前面的渲染引擎基础上,还提供了骨骼动画、物理引擎、AI、GUI 等功能,以及可视化编辑器来设计关卡,支撑大型游戏
https://zhuanlan.zhihu.com/p/162878354 如何选择 WebGL 框架和引擎? 知道得越多,不知道的就更多了 数据可视化Sugar-百度智能云 cloud.ba ...
- 没有美术基础能学3d建模吗,学多久,就业怎么样
1.很多朋友想学3d建模,但是遗憾的是,圈内人总是对他们说,学3d建模需要有美术基础,你们有吗?然后很多没有美术基础的朋友,就耷拉着脑袋,灰溜溜的不学了.其实这完全是一种错误的认识,没有美术基础就不能 ...
- 零基础能学3D游戏建模嘛?
零基础能学3D游戏建模嘛?谁说学3D游戏建模要有基础! 你学习建模是为了什么?改行跳槽是一,对这方面有兴趣爱好是二,实际上很多人学习建模只不过便是想掌握,但你有没有觉得学的不深,不扎扎实实,许多指令, ...
最新文章
- 屏幕后处理——Bloom
- java字符串 直接能网络传输吗_atitit.二进制数据无损转字符串网络传输
- 可延迟函数、内核微线程以及工作队列
- asp.net页面处理过程文章整理
- 3 weekend110的hadoop中的RPC框架实现机制 + hadoop中的RPC应用实例demo
- SpringMVC的文件上传和拦截器
- 集成学习原理小结(转载)
- (转)最临近插值-双线性插值算法原理
- phpmyadmin安全预防
- 16个 Redis 常见使用场景,面试有内容聊啦
- 软件测试术语中英文对照
- 【C语言】科学计数法——复习总结
- 中国姓氏英文翻译大全
- 机械设计基础课程设计【1】
- python给全局变量赋值_Python 进程之间共享数据(全局变量)的方法 python 全局变量赋值的问题...
- 百家讲坛-《老子智慧与现代爱情婚姻》
- Linux基础命令(管理工具)
- 帮你解剖Python的一个轻量级桌面GUI开发第三方库:Eel,让它体无完肤
- BSC Web3生态深度研究
- Silvaco TCAD仿真9——半导体PN结仿真