全景又被称为3D实景,是一种新兴的富媒体技术,其与视频,声音,图片等传统的流媒体最大的区别是“可操作,可交互”。 全景分为虚拟现实和3D实景两种。虚拟现实是利用maya等软件,制作出来的模拟现实的场景,代表有虚拟紫禁城等;3D实景是利用单反相机或街景车拍摄实景照片,经过特殊的拼合,处理,让作者立于画境中,让最美的一面展现出来。
全景顾名思义就是给人以三维立体感觉的实景360度全方位图像~
此图像最大的三个特点是:
1、全:全方位,全面的展示了360度球型范围内的所有景致;可在例子中用鼠标左键按住拖动,观看场景的各个方向;
2、景:实景,真实的场景,三维实景大多是在照片基础之上拼合得到的图像,最大限度的保留了场景的真实性;
3、360:360度环视的效果,虽然照片都是平面的,但是通过软件处理之后得到的360度实景,却能给人以三维立体的空间感觉,使观者犹如身在其中。
全景由于它给人们带来全新的真实现场感和交互式的感受。它可广泛应用于三维电子商务,如在线的房地产楼盘展示、虚拟旅游、虚拟教育等领域。
本篇我们基于上一篇粒子光束 的基础上实现全景背景图
看效果图:
我们用连续的6张天空图片,拼接成了一个无缝的立方体。想想一下我们站在这个立方体的中心,这个时候我们的前后左右上下都充满了天空的图片,不管你的头转向哪边,都能够看见天空。
理论上我们把眼睛旋转360度观察,图上的三个光束会先消失在出现,这就像是我们把立方体旋转了360度又回到了原位置一样。就像下图:
之所以能实现360度旋转,是因为我们用了6张图片并把他们加载成一个立方体。
我们先创建一个模型对象类,即立方体模型。
public class Skybox {
private static final int POSITION_COMPONENT_COUNT = 3;
private final VertexArray vertexArray;
private final ByteBuffer indexArray;
public Skybox() {
// Create a unit cube.
vertexArray = new VertexArray(new float[] {
-1, 1, 1, // (0) Top-left near
1, 1, 1, // (1) Top-right near
-