three.js 天空盒子使用方法

原创 2016年08月31日 15:50:22

Three.js 天空盒子使用方法研究

所谓的天空盒子就是一个超级大的BOX盒子,在渲染手段上使用了skyboxShader而已,这个shader存在于THREE.js库中。
稍微详细一点展开,天空盒子分为六个方形的图片。

function makeSkybox( urls, size ) {
                var skyboxCubemap = new THREE.CubeTextureLoader().load( urls );
                skyboxCubemap.format = THREE.RGBFormat;

                var skyboxShader = THREE.ShaderLib['cube'];
                skyboxShader.uniforms['tCube'].value = skyboxCubemap;
                console.log('执行了添加天空盒子语句');

                return new THREE.Mesh(
                    new THREE.BoxGeometry( size, size, size ),
                    new THREE.ShaderMaterial({
                        fragmentShader : skyboxShader.fragmentShader, 
                        vertexShader : skyboxShader.vertexShader,
                        uniforms : skyboxShader.uniforms, 
                        depthWrite : false, 
                        side : THREE.BackSide
                    })
                );
            }

urls是一个数组,包含六张照片的地址
size是天空盒子的大小,不宜太小,根据场景内其他物体的大小设置
相机的视野要大于天空盒子的边长才行,否则会出现黑色现象。

scene.add( makeSkybox( [
                'textures/skybox/px.jpg', // right
                'textures/skybox/nx.jpg', // left
                'textures/skybox/py.jpg', // top
                'textures/skybox/ny.jpg', // bottom
                'textures/skybox/pz.jpg', // back
                'textures/skybox/nz.jpg'  // front
            ], 8000 ));

天空盒子urls的导入顺序如上所示。天空盒子的效果见截图。
天空盒子实际浏览效果

天空盒子实际效果截图

大家注意,在实际网络传输中,六张图片大小还是比较大的,直接加载时会出现一种现象,就是先黑一下,过一会才出现天空的图案。最好先设置盒子为不可见,待六张图片全部加载完毕后,再设为可见。

版权声明:本文为博主原创文章,转载时,请附上本文链接

相关文章推荐

three.js学习 函数使用方法散记

var shape = three.shape(): 1.传入顶点数组 three.shape([]) 2.shape.moveto lineto (最后要lineto顶点closepath) ...

three.js学习 函数使用方法散记2

编辑中

用Three.js创建一个简易的天空盒

本文创建的天空盒是用六张图片来创建的。笔者会论述两种方法来创建,都是最简单基本的方法,不涉及着色器的使用。 一种是创建一个盒子,然后将图片作为盒子6个面的纹理贴上来创建。 另一种则是简单的将纹理作...

Unity5.x中Skybox天空盒子的设置的两种方法

在Unity5.0以上版本中,天空盒子的设置发生了变化;如果设置不当,在Scene视图中是看不到天空盒子的; 第一个方法仅能修改Game视图中的天空盒子(仅渲染当前摄像机),Scene视图是没有的;第...
  • XYK0318
  • XYK0318
  • 2016年03月31日 15:14
  • 14518

iphone 下Three20库(From Facebook)的设置使用方法

原文地址:http://www.cnblogs.com/chen1987lei/archive/2010/03/10/1682796.html   Three20是一个编译的静态类库,在Xcode...

js画图包及使用方法

  • 2008年03月07日 14:28
  • 15KB
  • 下载

js数组使用方法

  • 2016年04月11日 09:14
  • 1KB
  • 下载

Unity3D笔记 地形、光源、天空盒子

一、地形绘制 在GameObject->Create other->Terrian 位置创建一个新的地形。 Resolution设置栏里:                          ...
  • juan_bo
  • juan_bo
  • 2016年06月20日 11:13
  • 994
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:three.js 天空盒子使用方法
举报原因:
原因补充:

(最多只允许输入30个字)