javascript - 使用three.js添加阴影为什么设置了阴影相关设置后平面和立方体都消失了
迷茫
迷茫 2017-04-11 12:17:34
[JavaScript讨论组]

设置了spotLight.castShadow = true;之后所有东西都消失了,而且设置的spotLight.shadowCameraVisible = true;也没有效果。

function init(){
   
$("#mainCanvas").attr("width", $(window).get(0).innerWidth);
$("#mainCanvas").attr("height", $(window).get(0).innerHeight);

    
    //渲染器
    var renderer = new THREE.WebGLRenderer({             
            canvas: document.getElementById('mainCanvas')
    });
    renderer.setClearColor(0xD3D9D9);
    renderer.shadowMapEnabled = true;
    
    var scene = new THREE.Scene();

    var camera = new THREE.PerspectiveCamera(45,window.innerWidth/window.innerHeight,0.1,1000);
    camera.position.set(4,4,5);
    camera.lookAt(new THREE.Vector3(0,0,0));
    scene.add(camera);
    
    var stat = null;
    stat = new Stats();
    stat.domElement.style.position = 'absolute';
    stat.domElement.style.left = '0px';
    stat.domElement.style.top = '0px';
    document.body.appendChild(stat.domElement);
    
    //轨迹球相机控件
    var trackballControls = new THREE.TrackballControls(camera);
        trackballControls.rotateSpeed = 1.0;
        trackballControls.zoomSpeed = 1.0;
        trackballControls.panSpeed = 1.0;
    function render(){
        stat.begin();
        var clock = new THREE.Clock();
        var delta = clock.getDelta();
        trackballControls.update(delta);
        requestAnimationFrame(render);
        renderer.render(scene,camera);
        stat.end();
    }
    render()
    
    //添加地面
    var ground = new THREE.Mesh(new THREE.PlaneGeometry(10,10,10,10),new THREE.MeshLambertMaterial({
        color:0xA7A7A7,
    }))
    ground.rotation.x = -0.5*Math.PI;
    var groundLine = new THREE.Mesh(new THREE.PlaneGeometry(10,10,20,20),new THREE.MeshLambertMaterial({
        color:0x000000,
        side:THREE.DoubleSide,
        wireframe:true
    }))
    groundLine.rotation.x = -0.5*Math.PI;
    scene.add(ground);
    scene.add(groundLine);
    ground.receiveShadow = true;
    
    
    //光线
    var ambientLight = new THREE.AmbientLight('#0c0c0c');
    ambientLight.intensity = 0.1
    var spotLight = new THREE.SpotLight(new THREE.Color('#EEDA09'));
    
    spotLight.position.set(-10,10,10);
    var target = new THREE.Object3D();
    target.position = new THREE.Vector3(0,0,0);
    spotLight.target = target;
    scene.add(target);
    spotLight.target = target;
    spotLight.visible = true;
    
    
    spotLight.castShadow = true;
    
    
    spotLight.angle = Math.PI/10;
    spotLight.exponent = 30;
    spotLight.shadowMapHeight = 5;
    spotLight.shadowCameraVisible = true;
    scene.add(spotLight);
    scene.add(ambientLight)
    
    
    
    
    var car = new THREE.Object3D();
    
    var cube = new THREE.Mesh(new THREE.CubeGeometry(2,2,2),new THREE.MeshLambertMaterial({
        color:0x00ff00,
    }));
    cube.castShadow = true;
    car.add(cube);
    
    scene.add(car);
    
    
    renderer.render(scene,camera)
    
     
    
}
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号