繁体   English   中英

Three.js MeshPhongMaterial纹理

[英]Three.js MeshPhongMaterial Texture

我正在尝试为MeshPhongMaterial添加一个三js纹理,但由于某种原因,我只是得到一个点亮的黑盒子。 我已经坚持了一段时间,似乎无法弄明白。

//Creates the cube and lighting effect
    function initCube() {
    var loader = new THREE.TextureLoader();
    var texture1 = loader.load("brick.jpg");
    cubeTexture = loader.load

     cube = new THREE.Mesh(new THREE.BoxGeometry(3,3,3), new 
    THREE.MeshPhongMaterial({color:0xffffff, map:texture1}));
    scene.add(cube);

    cube.scale.set(0.5, 0.5, 0.5); 
    cube.position.x =  0;

    //Adds light
    cubeLight = new THREE.PointLight(0xFF0000 , 30, 1);
    cube.add(cubeLight);
    cubeLight.position.set(-0.5,-1,0); 
    scene.add(cubeLight);
    cubeLight.power =100;


    map.cubeLight = {
        light: cubeLight,
        added: true
    }

    //Adds second light
     cubeLight2 = new THREE.PointLight(0x6600ff , 1, 1);
    cube.add(cubeLight2);
    cubeLight2.position.set(0,1,0); 
    scene.add(cubeLight2);
    cubeLight2.power =100;

    map.cubeLight2 = {
        light: cubeLight2,
        added: true
    }

    }

好像灯都在盒子里面。 选择更大的值可将灯光定位在盒子外面。 将它们放在外面时,还应增加点光源的distance值。 否则,灯光不会点亮超过1个单位的任何东西。

您还可以向场景添加环境光,然后您应该看到,如果纹理已加载。

最后一件事:你将灯光两次添加到场景中。 一次使用scene.add(cubeLight) ,一次使用cube.add(cubeLight) ,而cube已经添加到场景中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM