小编use*_*590的帖子

Three.js ShaderMaterial 灯光问题

你好,这是我的代码的一部分 - 地球仪:)

    function createGlobe(){
        var normalMap = THREE.ImageUtils.loadTexture("images/earth_normal_2048.jpg");
        var surfaceMap = THREE.ImageUtils.loadTexture("images/earth_surface_2048.jpg");
        var specularMap = THREE.ImageUtils.loadTexture("images/earth_specular_2048.jpg");

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

        uniforms["tNormal"] = {type:"t", value:normalMap};
        uniforms["tDiffuse"] = {type:"t", value:surfaceMap};
        uniforms["tSpecular"] = {type:"t", value:specularMap};

        //uniforms["enableDiffuse"] = true;
        //uniforms["enableSpecular"] = true;

        var shaderMaterial = new THREE.ShaderMaterial({
            fragmentShader:shader.fragmentShader,
            vertexShader:shader.vertexShader,
            uniforms:uniforms,
            lights:false
            });

        var globeGeometry = new THREE.SphereGeometry(1,32,32);

        //tangents are needed for the shader
        globeGeometry.computeTangents();

        globe = new THREE.Mesh(globeGeometry, shaderMaterial);

        globe.rotation.z = 0.41;

        earthgroup.add(globe);

        }
Run Code Online (Sandbox Code Playgroud)

有问题的地方是 ShaderMaterial 参数“lights:true”,设置时出现以下错误

Uncaught TypeError: …
Run Code Online (Sandbox Code Playgroud)

javascript three.js

5
推荐指数
0
解决办法
4912
查看次数

标签 统计

javascript ×1

three.js ×1