【问题标题】:Why doesn't my directional light affect the whole scene?为什么我的定向光不会影响整个场景?
【发布时间】:2015-01-30 01:21:35
【问题描述】:

请看这个小提琴 - http://jsfiddle.net/vnr2v6mL/

            var scene = new THREE.Scene();
        var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
        var renderer = new THREE.WebGLRenderer();
        renderer.setSize(window.innerWidth, window.innerHeight);
        document.body.appendChild(renderer.domElement);

        var geometry = new THREE.BoxGeometry(100, 100, 1);
        var material = new THREE.MeshPhongMaterial({ color: 0x00ff00 });
        var plane = new THREE.Mesh(geometry, material);
        scene.add(plane);
        camera.position.z = 5;

        //scene.add(new THREE.AmbientLight(0xdddddd));

        var dl = new THREE.DirectionalLight(0x0000ff, 1.0);
        dl.position.set(0, 0, 10);
        scene.add(dl);

        scene.add( new THREE.DirectionalLightHelper(dl, 2.5) );

        function render() {
            requestAnimationFrame( render );
            renderer.render( scene, camera );
        }
        render();

        $(document).ready(function() {
            $(document).bind("mousewheel DOMMouseScroll", function(e) {
                var delta = e.type === 'DOMMouseScroll' ? -e.originalEvent.detail : e.originalEvent.wheelDelta;
                camera.position.z += delta / 120;
            });
        });

我的理解是灯光应该是无限平行的,为什么它只点亮了我场景中间的一个圆圈?

提前致谢。

【问题讨论】:

    标签: three.js


    【解决方案1】:

    您正在使用MeshPhongMaterial。您看到的只是镜面高光。

    你的灯是蓝色的。但是,您的材料是绿色的,因此它只反射绿光。因此,材料不会反射漫反射光。

    材质specular 的反射率默认为0x111111。所以所有颜色都被镜面反射。由于您的光是蓝色的,因此您会获得镜面反射的蓝光。换句话说,一个蓝色的“热点”。

    考虑使用白光0xffffff,并调整光强度。

    小提琴:http://jsfiddle.net/vnr2v6mL/1/

    three.js r.70

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      • 2017-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多