Webgl 在Three.js中,灯光不';行不通

Webgl 在Three.js中,灯光不';行不通,webgl,three.js,Webgl,Three.js,我一直在玩Three.js有一段时间了,我似乎无法让任何类型的灯工作。场景通常使用0xFFFFFF环境光进行渲染,但添加灯光不会产生任何效果。我直接从示例中复制了代码,灯光列在场景的子场景中,只是没有显示 var camera; var scene; var renderer; $(document).ready(function() { camera = new THREE.PerspectiveCame

我一直在玩Three.js有一段时间了,我似乎无法让任何类型的灯工作。场景通常使用0xFFFFFF环境光进行渲染,但添加灯光不会产生任何效果。我直接从示例中复制了代码,灯光列在场景的子场景中,只是没有显示

        var camera;
        var scene;
        var renderer;

        $(document).ready(function() {
            camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000);
            camera.position.z = 600;

            scene = new THREE.Scene();
            scene.add(new THREE.PointLight(0xFF0000, 3.0, 1000));

            renderer = new THREE.WebGLRenderer();
            //renderer = new THREE.CanvasRenderer();
            renderer.domElement.id = "canvas";
            renderer.setSize(window.innerWidth, window.innerHeight);

            $(window).resize(function() {
                renderer.setSize(window.innerWidth, window.innerHeight);
            });
            $("#container").get(0).appendChild(renderer.domElement);

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

            Animate();
        });

您的代码没有太多可处理的内容,但需要检查的一件事是,您的材质支持灯光。这意味着您应该使用
MeshLambertMaterial
MeshPhongMaterial
。另外请注意,如果您使用的是自定义的
着色器材质
,它不会神奇地获得场景照明。

请为我们发布一些代码。我添加了它。对不起,我不得不省略了很多部分。我现在遇到的问题是,我似乎无法将颜色应用到带有照明的部分。当我添加环境光时,场景中的所有内容都变成该颜色,忽略我设置的材质颜色。调低环境光或降低材质的环境属性。此外,确保其他灯光在材质属性中也具有足够的颜色和强度。我发现,如果我将环境光的颜色设置为0xFFFFFF,并将材质的环境属性设置为所需的颜色,则可以获得所需的结果。这就是你的意思吗?或多或少,只是玩光和材料的颜色;Lambert材质的照明方程式大致如下:
lightingColor=组合灯光颜色*材质扩散+环境灯光颜色*材质明暗+发射