Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
Three.js无法读取未定义的属性“uniforms”_Three.js - Fatal编程技术网

Three.js无法读取未定义的属性“uniforms”

Three.js无法读取未定义的属性“uniforms”,three.js,Three.js,我完全遵循了半透明的例子,但我不知道为什么失败了 var uniforms=THREE.UniformsUtils.clone shader.uniforms;用这个chrome表示:UncaughtTypeError:无法读取未定义的属性'uniforms' 请帮帮我~~~ 以防万一我把我所有的代码都放在这里了 <html> <head> <meta charset="utf-8"> <title> 1 &

我完全遵循了半透明的例子,但我不知道为什么失败了

var uniforms=THREE.UniformsUtils.clone shader.uniforms;用这个chrome表示:UncaughtTypeError:无法读取未定义的属性'uniforms'

请帮帮我~~~ 以防万一我把我所有的代码都放在这里了

<html>
    <head>
        <meta charset="utf-8">
        <title> 1 </title>
        <style>
            body { margin: 0; }
            canvas { display: block; }
        </style>
    </head>
<body>
    <script type="module">
        import * as THREE from './js/three.module.js';
        import { OrbitControls } from './js/OrbitControls.js';
        import { TranslucentShader } from './js/TranslucentShader.js';

        let scene, camera, renderer;

    function init(){

        scene = new THREE.Scene();

        camera = new THREE.PerspectiveCamera(70,window.innerWidth/window.innerHeight,1,15000);
        camera.position.set(0,500,1000);

        renderer = new THREE.WebGLRenderer({antialias:true});
        renderer.setSize(window.innerWidth,window.innerHeight);
        document.body.appendChild(renderer.domElement);

        var loader = new THREE.TextureLoader();
        var imgTexture = loader.load( 'white.jpg' );
        imgTexture.wrapS = imgTexture.wrapT = THREE.RepeatWrapping;    
        var shader =  THREE.TranslucentShader;

        var uniforms = THREE.UniformsUtils.clone( shader.uniforms );

        uniforms[ 'map' ].value = imgTexture;
        uniforms[ 'diffuse' ].value = new THREE.Vector3( 1.0, 0.2, 0.2 );
        uniforms[ 'shininess' ].value = 500;
        uniforms[ 'thicknessMap' ].value = imgTexture;
        uniforms[ 'thicknessColor' ].value = new THREE.Vector3( 0.5, 0.3, 0.0 );
        uniforms[ 'thicknessDistortion' ].value = 0.1;
        uniforms[ 'thicknessAmbient' ].value = 2;
        uniforms[ 'thicknessAttenuation' ].value = 1.2;
        uniforms[ 'thicknessPower' ].value = 3.0;
        uniforms[ 'thicknessScale' ].value = 10;

        var material = new THREE.ShaderMaterial( {
                uniforms: uniforms,
                vertexShader: shader.vertexShader,
                fragmentShader: shader.fragmentShader,
                lights: true
            } );
        material.extensions.derivatives = true;

        var geo = new THREE.BoxGeometry(100,100,100);
        var cube = new THREE.Mesh(geo,material);
        scene.add(cube);    

        let control = new THREE.OrbitControls(camera, renderer.domElement);

        var light = new THREE.PointLight( 0xffffff,1 );
        scene.add(light);

    }

    function animate(){
        requestAnimationFrame(animate);
        renderer.render(scene,camera);  
    }

    init();
    animate(); 


</script>

</body>
</html>
编码非常困难当您在代码顶部导入{TranslucentShader}时,示例显示您必须按如下方式访问它:

var着色器=半透明着色器

不需要放三个。在它前面。这是创建对未定义对象的引用