我试图制作一个带有轨道框的动态反射球体,但反射“拖动”

时间:2017-06-15 14:29:05

标签: javascript dynamic reflection three.js

正如我在标题中所说的那样,当我的球体反射时,它从前面拖动框架,而不是立方体的实时反射,我最终在球体周围得到一个完整的圆圈。

这是我的形状设置。

var cubeGeometry = new THREE.BoxGeometry(1, 1, 1);
var sphereGeometry = new THREE.SphereGeometry(3, 64, 64);
var smallSphereGeometry = new THREE.SphereGeometry(1, 64, 64);

var cubeCamera = new THREE.CubeCamera(0.1, 5000, 512);
scene.add(cubeCamera);

var mirrorShpereMaterial = new THREE.MeshBasicMaterial({envMap:cubeCamera.renderTarget });
var material1 = new THREE.MeshBasicMaterial({ color: 0xffff00, wireframe: false});

var cube = new THREE.Mesh(cubeGeometry, material1);
var sphere = new THREE.Mesh(sphereGeometry, mirrorShpereMaterial);
var smallSphere = new THREE.Mesh(smallSphereGeometry, material);

cube.position.x = 5;

然后我将所有形状添加到场景中,并将立方体附加到小球体上并旋转小球体以获得轨道效果。

接下来的渲染功能

function render(){

            var delta = clock.getDelta();
            renderer.clear();



            sphere.visible = false;
            cubeCamera.updateCubeMap( renderer, scene );
            sphere.visible



            composer.render(delta); 
            requestAnimationFrame( render );
            smallSphere.rotation.y += 0.05;

            cube.rotation.z += 0.05;
            cube.rotation.x += 0.05;



        }
        var clock = new THREE.Clock()
        controls.update();
        render();

从我理解的部分这里应该使反射动态当我将球体设置为不可见时,相机应该拍摄快照并使用立方体的新位置更新材质,但是当我运行它时它不会更新新位置时,它会添加新位置,同时保持所有先前位置仍然在球体上。所以我想知道我是否在这里遗漏了一些东西或者如何以不同的方式做到这一点。

1 个答案:

答案 0 :(得分:0)

我发现了问题,我使用的是效果作曲家,并且由于某些原因导致反射拖动。一旦删除,反射工作正确。