加入天空盒-04

//添加天空盒
scene.background = new THREE.CubeTextureLoader()
    .setPath( '../skybox/' )

.load( [ 'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png' ] );

2.全部代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>threejs--demo001</title>
    <script src="../js/three.js"></script>
    <script src="../js/OrbitControls.js"></script>
    <script src="../js/OBJLoader.js"></script>
</head>
<body>
    <script>
        //第一步创建场景元素
        var scene=new THREE.Scene();

        //第二步创建一个网格模型对象  网格对象方法function Mesh( geometry, material )
        //需要两个参数geometry几何模型  material材质
        var geometry=new THREE.BoxGeometry(100,100,100);//立方体模型
        var material=new THREE.MeshLambertMaterial({color:0xff0000});
        var mesh=new THREE.Mesh(geometry,material);
        scene.add(mesh);//添加网格到场景中

        //加载obj模型代码
        var loader=new THREE.OBJLoader();
        loader.load("../desk/Desk.obj",function(deskScene){
//            deskScene.scale.set(0.1,0.1,0.1);//缩小10倍
            deskScene.position.y=-90;
            scene.add(deskScene);
        });

        var Desk_D = new THREE.TextureLoader().load('../desk/Desk_DeskBody_Diffuse.png');
        var Desk_S = new THREE.TextureLoader().load('../desk/Desk_DeskBody_Glossiness.png');
        var Desk_N = new THREE.TextureLoader().load('../desk/Desk_DeskBody_Normal.png');
        var mat_Desk = new THREE.MeshPhongMaterial({
            map: Desk_D,
            specularMap: Desk_S,
            normalMap: Desk_N,
        });
        loader.load( '../desk/Desk.obj', function(object) {
            object.traverse( function ( child ) {
                if ( child instanceof THREE.Mesh ) {
                    child.material = mat_Desk;
                }
            });
            object.scale.set(2.2, 2, 2);
            object.position.set( 0, -76.5,0);
            object.rotation.y = Math.PI / 2;
            scene.add(object);
        });

        //添加天空盒
        scene.background = new THREE.CubeTextureLoader()
            .setPath( '../skybox/' )
            .load( [ 'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png' ] );


        //添加灯光  点光源
        var light=new THREE.PointLight(0xff0000);
        light.position.set(300,400,200);//光源的位置
        scene.add(light);//将光源加入到场景中

        scene.add(new THREE.AmbientLight(0x333333));//添加环境光  让背景 亮一点

        //添加相机  透视相机
        var camera=new THREE.PerspectiveCamera(40,800/600,1,1000);
        camera.position.set(200,200,200);//相机的位置
        camera.lookAt(scene.position);//相机朝向的位置

        //添加渲染器
        var renderer=new THREE.WebGLRenderer();
        renderer.setSize(800,600);
        //将渲染器加到文档中
        document.body.appendChild(renderer.domElement);

        function render() {
            renderer.render(scene,camera);
        }
        render();//刚加载页面的时候就渲染一次  要不刚进入页面背景会是黑色的
        //将相机加入到相机控制
        var controls=new THREE.OrbitControls(camera);//不传参数默认是整个文档
        //添加事件监听
        controls.addEventListener("change",render);  //当事件改变 触发render方法 渲染界面

        //由于加载外部模型的方法load 是异步的所以第一次加载页面时候  桌子没有出来
        //解决办法  加入动画处理
        function animate() {
            requestAnimationFrame(animate);//每一帧都执行这个动画
            render();
        }
        animate();
    </script>
</body>
</html>


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值