2012-06-18 50 views
0

我有兩個不同品質的卷(.nrrd)。用戶可以瀏覽圖層。如果按下某個鍵 我想要以更好的質量加載音量片。將新圖層應用於卷的切片webgl

我的體積是與此類似:lesson 10 xtk

我找到:

volume.children [2]。兒童[0]。兒童[0] .texture.file =「http://path/to/file.ext 「;

但如果我申請某種文件(.jpg,.dcm)沒有任何反應。

這是正確的方法來改變切片去兒童內部和改變質地?

或者我應該加載選定的切片分離作爲一個對象,並以某種方式將其應用於「較低質量的音量」?


編輯: 這是我試過到目前爲止,(我與DCMS錯誤,但不是JPG格式):

if (event.keyCode == 83) { // "s"-button 
    volume.children[2].children[0].children[0].texture.file = "http://localhost:3000/112.jpg"; 
    volume.children[2].children[0].children[0].modified(); 
    r.render(); 
} 

EDIT2:這是什麼在我的r.onShowtime = function(){}

volume.children[2].children[0].texture.file = 'http://localhost:3000/112.jpg'; 
volume.children[2].children[0].visible = true; // to activate the first layer 
volume.children[2].children[0].modified(); 
console.log(volume.children[2].children[0].visible +" "+ volume.children[2].children[0].texture.file); 

它輸出「真主機名/ 112.jpg」

當我在檢查的螢火.JPG標頭確定,但答案是「空」

當我檢查的console.log(體積。兒童[2]。兒童[0]);與螢火蟲

.texture.file設置爲主機名/ 112.jpg

,當我去 「網」 .JPG已成功轉移

enter image description here

enter image description here


enter image description here

請注意112.jpg和level.jpg是一樣的。第一個在r.onShowtime中加載,另一個在按鍵事件中加載。


EDIT 3: volume.children [2]。兒童[0]是類型 「X.slice」 的,是嗎?

這裏是我的方法:jsFiddle

,這是我的實際問題,仍然沒有工作:jsFiddle

+0

爲什麼答案是「null」?我可以點擊鏈接並顯示圖像。我是否必須等待圖像加載事件或某事? – p0rter

+0

好吧我試圖將它綁定到像這樣的image.onload:http://stackoverflow.com/questions/5933230/javascript-image-onload但它並沒有改變行爲 – p0rter

回答

1

MHH ..

我想調用object.modified()的缺失文件設置器(以及來自注入類的其他設置器)。讓我們來看看海恩何時會想要改變一些內心的東西,但是現在你可以試着自己去調用它嗎?

你可以試試質地的修改後添加:

volume.children[2].children[0].children[0].modified(); 

如果它不工作,除了:

renderer.render(); 

編輯: 很奇怪,我做一個類似的代碼,它做了一些事情。你可以嘗試打開你的JavaScript控制檯(Firefox,Chrome,...有一個),並告訴我你得到的錯誤?

renderer.onShowtime = { 
    for (var i=0 ; i< volume.children[2].children.length ; i++) { 
    volume.children[2].children[i].texture.file="myimage.jpeg"; 
    volume.children[2].children[i].modified(); 
    } 
} 

你怎麼稱呼它在onShowtime,因爲沒有裝載卷之前,等等slicesX,slicesY ......不存在是很重要的。

EDIT2: 嘿,

感謝你加入我覺得我已經得到該點的信息!在renderer3D的render()方法中,有一個關於texture._dirty標誌的測試,你不能從框架外面改變它。另外,使用紋理的第一個渲染會使該標誌爲false,並且加載新紋理似乎不會在當前XTK中將該標誌設置爲true。所以,我認爲,我們必須將其添加到loader.load(紋理,對象)方法中。我會在Github上做一個問題,看看Haehn怎麼看待它!

+0

謝謝。我將它添加到我的代碼中,但沒有更改紋理/切片。 – p0rter

+1

其實我不明白爲什麼會有另外一個「.children」 - 陣列。有卷 - >軸 - >切片。所以根據我必須改變** volume.children [2] .children [0]的紋理**不是嗎?但是這也不起作用... – p0rter

+1

第三次調用children's調用slice的邊界:Volume> axis> slice> borders。看到我的文章編輯,我需要更多的信息! – Ricola3D