【问题标题】:Three.js Mirrored Normal Maps Flipped ChannelThree.js 镜像法线贴图翻转通道
【发布时间】:2014-07-03 05:15:33
【问题描述】:

我在 Three.js 中的模型中添加了一个法线贴图,该贴图在中间镜像。看起来其中一个通道(可能是绿色?)在镜像侧翻转。

我有一个环境灯、一个定向头灯和一个聚光灯。这是我用来制作材料的代码:

// Create a MeshPhongMaterial for the model
var material = new THREE.MeshPhongMaterial();
material.map = THREE.ImageUtils.loadTexture(texture_color);
// Wrapping modes
//THREE.RepeatWrapping = 1000;
//THREE.ClampToEdgeWrapping = 1001;
//THREE.MirroredRepeatWrapping = 1002;
material.map.wrapS = THREE.RepeatWrapping;
material.map.wrapT = THREE.MirroredRepeatWrapping;
if (texture_normal != null) {
    material.normalMap = THREE.ImageUtils.loadTexture(texture_normal);
    material.normalMap.wrapS = THREE.RepeatWrapping;
    material.normalMap.wrapT = THREE.MirroredRepeatWrapping;
}
material.wrapAround = true;
material.morphTargets = true;
material.shininess = 15;
material.specular = new THREE.Color(0.1, 0.1, 0.1);
material.ambient = new THREE.Color(0, 0, 0);
material.alphaTest = 0.5;
var mesh = new THREE.MorphAnimMesh( geometry, material );
// Turn on shadows
mesh.castShadow = true;

if (shadows) {
    mesh.receiveShadow = true;
}

scene.add( mesh );

我尝试了material.normalMap.wrapSmaterial.normalMap.wrapT 的所有不同组合,但这并没有解决问题(也尝试了漫反射贴图)。我做错了什么?

谢谢!

【问题讨论】:

    标签: javascript three.js webgl


    【解决方案1】:

    法线贴图依赖于几何体,因此您不能只镜像它并期望它像漫反射纹理那样工作。

    要使其工作,您需要在 UVW 在模型上镜像的任何位置翻转法线贴图的红色通道。

    http://www.polycount.com/forum/showthread.php?t=116922

    【讨论】:

    • 红色通道!我很接近。这听起来像个问题。知道如何在 Three.js 中做到这一点吗?这似乎是一个常见问题,应该有专门的功能来解决它​​。
    【解决方案2】:

    原来我使用的是旧版本 (1.2) 的 Blender Three.js 导出器。通过从 r67 存储库切换到最新版本 (1.5) 的导出器,Three.js 现在可以使用开箱即用的 Phong 着色器正确处理镜像法线贴图。

    编辑:Phong 着色器仍然存在翻转通道的问题。我最终使用了“法线贴图着色器”(参见 Three.js 示例),这给了我正确的结果。不幸的是,法线贴图着色器不适用于变形动画,只能用于骨骼。

    【讨论】:

    • 您能否提供一个简单的示例,其中Phong 着色器不能满足您的需求,但NormalMap 着色器是可以接受的? three.js 网站可能是最适合发帖的地方。
    • 你是说three.js这个github站点吗?如果是这样,您希望我打开一个新问题还是将其添加到我最近关闭的问题中(然后重新打开)?
    • 我会建议一个指向 simple 实例的链接。您可以将其发布到任何您想要的地方。
    猜你喜欢
    • 2012-01-14
    • 2015-04-22
    • 2017-06-24
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 2023-03-26
    相关资源
    最近更新 更多