2016-12-01 29 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是什麼,你的投影和場景沒有改變,爲什麼圖像會改變。 –