Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 3.js遮阳制服_Javascript_Html_Three.js_Webgl - Fatal编程技术网

Javascript 3.js遮阳制服

Javascript 3.js遮阳制服,javascript,html,three.js,webgl,Javascript,Html,Three.js,Webgl,嗨,我正在尝试用3J做一个看起来很简单的着色。我正在用O'reilly写的《启动和运行》一书 一切正常,直到我尝试这样做: var shader = THREE.ShaderLib["normal"]; var uniforms = THREE.UniformsUtils.clone(shader.uniforms); uniforms["tNormal"].texture = normalMap;

嗨,我正在尝试用3J做一个看起来很简单的着色。我正在用O'reilly写的《启动和运行》一书

一切正常,直到我尝试这样做:

                var shader = THREE.ShaderLib["normal"];
            var uniforms = THREE.UniformsUtils.clone(shader.uniforms);

            uniforms["tNormal"].texture = normalMap;
            uniforms["tDiffuse"].texture = surfaceMap;
            uniforms["tSpecular"].texture = specularMap;
这会不断抛出此错误:

TypeError:uniforms.normal未定义 [在此错误上中断]

制服[“法线”]。纹理=法线贴图

我已经在网上浏览了一段时间,不确定需要修改什么语法来解决这个问题


非常感谢您的帮助。

我想应该是这样的:

uniforms["tNormal"] = {
    texture: normalMap
};

对于
tDiffuse
t特定的

我发现在运行代码时,在下列行之后:

var shader = THREE.ShaderLib["normal"];
var uniforms = THREE.UniformsUtils.clone(shader.uniforms);
制服是一个具有一个成员的对象:不透明度。因此,制服[“正常的”]还不存在。正如Olivia所建议的,您可以在中添加以下内容:

uniforms["tNormal"] = {
    texture: normalMap
};

您的错误和代码不同。此错误报告以下对象上的未定义纹理:

制服[“法线”]。纹理=法线贴图

您引用的代码说明您正在使用:

制服[“tNormal”]。纹理=法线贴图

我正在编写同一本书的示例,请尝试以下内容:

var shader = THREE.ShaderLib[ "normalmap" ];
var uniforms = THREE.UniformsUtils.clone( shader.uniforms );

uniforms[ "tNormal" ].texture = normalMap;
uniforms[ "tDiffuse" ].texture = surfaceMap;
uniforms[ "tSpecular" ].texture = specularMap;

uniforms[ "enableDiffuse" ].value = true;
uniforms[ "enableSpecular" ].value = true;

shader.uniforms
没有“tNormal”属性。你想用这个着色器做什么?我一直跟着书。我还为漫反射和镜面反射绘制了其他线条,它们也会引发类似的错误。