【问题标题】:My object isn't reflects the light in Three.js我的对象没有在 Three.js 中反射光线
【发布时间】:2012-12-20 06:05:49
【问题描述】:

我在 three.js 场景中有一些基于 CubeGeometry 的网格,它们都反映了我在全球范围内使用的 PointLight。但是其中一个是由“手工”制作的,只有 THREE.Geometry (通过代码添加顶点和面)没有反映出来。即使它没有颜色,我也只能为此设置颜色,如果我在 MeshPhongMaterial 上将 THREE.Color 设置为“发射”键。

由 JS 函数动态生成的几何图形。我正在使用这个灯:

    pointLight = new THREE.PointLight(0xFFFEF0, 1, 100000)
    pointLight.position = camera.position;
    scene.add(
        pointLight
    );  

我正在使用以下代码创建提到的网格:

        var floor = new THREE.Mesh(
            ShelfArchitect.Utils.getFloorGeometry(walls), 
            new THREE.MeshPhongMaterial(materialParams)
        );

我应该在 materialParams 上添加一些东西吗?或者是什么问题?

【问题讨论】:

  • 我只是创建几何宽度 var geom = new THREE.Geometry();,并用 geom.vertices.push( ... ) 添加一些顶点,用 geom.faces.push 添加一些面(……)。接下来我还应该做什么?在您回答之后,我尝试调用 geom.computeVertexNormals(),但它仍然不起作用。谢谢
  • computeVertexNormals() 首先需要computeFaceNormals()
  • 像魅力一样工作。谢谢!!

标签: javascript three.js


【解决方案1】:

听起来“手”制作的几何图形丢失了,或者顶点法线不正确。

你可以这样做:

geometry.computeFaceNormals();
geometry.computeVertexNormals();

【讨论】:

    猜你喜欢
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 2019-05-09
    • 2013-07-10
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多