2016-12-01 61 views
0

图像不会在场景中刷新。 在Chrome中使用Javascript,Three和CSS3DRenderer。 我有一个图像通过THREE.Object3D嵌入到一个场景中,当图像在服务器上更新时,图像不会在场景中更新。我确实使用了缓存破解技术,并向我自己证明浏览器缓存正在更新。 总结:图像不会在相机场景中刷新

var camera = new THREE.PerspectiveCamera(40, window.innerWidth/window.innerHeight, 1, 10000); 

var scene = new THREE.Scene(); 

var renderer = new THREE.CSS3DRenderer(); 
var controls = new THREE.TrackballControls(camera, renderer.domElement); 

var element = document.createElement('div'); 
var img = document.createElement('img'); 
img.src = images[i].src+'?t='+new Date().getTime(); // cache busting technique 
element.appendChild(img); 
var object = new THREE.CSS3DObject(element); 
scene.add(object); 

的图像显示就好了。 然后使用相同的缓存清除技术在服务器上进行更新,并且场景中没有任何更改。 我已经尝试了各种类似的语句来更新场景:

scene.remove(x); 
scene.add(x); 
camera.updateProjectionMatrix(); // didn't do anything I noticed 
renderer.render(scene, camera); // 

任何线索将是有益的 感谢

+0

images [i] .src +'?t ='+ new Date()。getTime();在这里,我不知道 –

+0

感谢您花时间看这个问题。事实证明,在服务器有机会更新图片之前,图像src属性正在更新。所以旧图片被读入浏览器的缓存中。我必须推迟src更新2秒才能看到更改。 – Paul

回答

0

其实它做了,但是three.js所自动计算accordig对象大小的对象矩阵,每几毫秒定位一些其他参数,然后覆盖您设置的矩阵。如果要设置矩阵,则必须将对象矩阵自动计算配置为false。

请参阅此answer

+0

你是说它显示更改后的图像?因为我没有看到它改变。我不想重写或手动设置任何东西,如果我不必。但我似乎无法让它更新屏幕上显示的图像。 – Paul

+0

如果问题是由此引起的,那么您将不会看到任何区别,因为重新计算的频率很高。 –

+0

我在这里有点困惑,你场景中的x是什么,你的投影和场景没有改变,为什么图像会改变。 –