【问题标题】:Changing scale of mesh changes lighting brightness of scene?改变网格的比例会改变场景的照明亮度?
【发布时间】:2014-10-04 08:03:07
【问题描述】:

我需要稍微重构一下我的自定义网格创建 从: 创建统一尺寸(SIZE、SIZE、SIZE)的网格,然后根据需要缩放它们(为每个轴设置比例) 到: 创建大小正确的网格,以后不要缩放

网格是自定义生成的(顶点、面、法线、uv),这个过程没有任何改变,之前就像一个魅力

=> 生成的网格具有相同的大小、位置等。

整个场景设置保持不变:灯光、阴影、材质,但当使用第二种方法时,整个灯光非常明亮且超强反射,这是一个已知问题吗?

使用的材质是 MeshPhongMaterial,带有 map、bumMap、specMap、envMap

使用three.js r68,控制台中没有错误/警告

之前: https://cloud.githubusercontent.com/assets/3647854/3876053/76b8f260-2158-11e4-9e96-c8de55eaec9a.png

之后: https://cloud.githubusercontent.com/assets/3647854/3876052/76b7fa86-2158-11e4-9393-8f3eece04c0b.png

【问题讨论】:

    标签: three.js


    【解决方案1】:

    您是否重新调整了网格中的法线?

    网格格式可能需要归一化的法线,在这种情况下,新的法线现在不正确,但如果您没有重新缩放,它会是正确的。

    或者,你说灯光没有改变,也许他们需要在场景中适当地重定向。 (假设您在每个轴上应用不同的比例因子。)

    【讨论】:

    • 法线是在生成网格时生成的://normals geometry.computeFaceNormals(); geometry.computeVertexNormals(); 所以我想,它们应该被归一化,在调用基本mesh.scale.set(x,y,z) 时是否需要以任何方式重新归一化?缩放仅适用于网格,灯光在场景中是固定的,这是一个问题,不是在 MeshPhongMaterial 的像素着色器中计算照明,因此有效地使顶点(和像素)已经在正确的位置?
    猜你喜欢
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 2016-10-27
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多