【问题标题】:In Three.js, lights don't work在 Three.js 中,灯光不起作用
【发布时间】:2012-11-19 14:07:45
【问题描述】:

我一直在用 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();
        });

【问题讨论】:

  • 请为我们发布一些代码。
  • 我添加了它。抱歉,我不得不省略一堆部分。

标签: webgl three.js


【解决方案1】:

您的代码并没有提供太多可使用的功能,但要检查的一件事是您的材质是否支持灯光。这意味着您应该使用MeshLambertMaterialMeshPhongMaterial。另请注意,如果您使用自定义 ShaderMaterial,它不会神奇地获得场景照明。

【讨论】:

  • 我现在遇到的问题是我似乎无法将颜色应用于带有照明的部件。当我添加环境光时,场景中的所有东西都会变成那种颜色,忽略我设置材质的颜色。
  • 调低环境光或降低材质的环境属性。此外,确保其他灯光具有足够的颜色和强度,材料属性也是如此。
  • 我发现如果我将环境光的颜色设置为 0xFFFFFF 并将材质的环境属性设置为所需的颜色,我会得到所需的结果。是这个意思吗?
  • 或多或少,只玩灯光和材质颜色; Lambert 材质的光照方程大致是这样的:lightingColor = combinedLightsColors * materialDiffuse + ambientLightColor * materialAmbient + emissive
猜你喜欢
  • 1970-01-01
  • 2016-03-26
  • 2014-03-06
  • 1970-01-01
  • 2016-06-06
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 2018-08-05
相关资源
最近更新 更多