将新图层应用于卷的一个切片webgl

将新图层应用于卷的一个切片webgl,webgl,volume,slice,xtk,Webgl,Volume,Slice,Xtk,我有两本不同质量的书(.nrrd)。用户可以浏览这些层。如果按下一个键 我想加载质量更好的卷切片 我的卷与此卷相似: 我发现: volume.children[2]。children[0]。children[0]。texture.file=“” 但是如果我应用某种文件(.jpg,.dcm),什么也不会发生 这是改变切片进入子对象内部并改变纹理的正确方法吗 或者我应该将选定的切片作为对象单独加载,并以某种方式将其应用于“低质量卷”吗 编辑: 这就是我到目前为止所尝试的(我在dcms中得到错误,但

我有两本不同质量的书(.nrrd)。用户可以浏览这些层。如果按下一个键 我想加载质量更好的卷切片

我的卷与此卷相似:

我发现:

volume.children[2]。children[0]。children[0]。texture.file=“”

但是如果我应用某种文件(.jpg,.dcm),什么也不会发生

这是改变切片进入子对象内部并改变纹理的正确方法吗

或者我应该将选定的切片作为对象单独加载,并以某种方式将其应用于“低质量卷”吗


编辑: 这就是我到目前为止所尝试的(我在dcms中得到错误,但在jpgs中没有得到):


edit2:这是我的r.onShowtime=function()中的内容{}

它输出“真实主机名/112.jpg”

当我检查firebug中的.jpg时,标题是ok的,但答案是“null”

当我检查console.log(volume.children[2].children[0])时与萤火虫

.texture.file设置为hostname/112.jpg

当我进入“网络”时,.jpg已成功传输


请注意,112.jpg和level.jpg是相同的。第一个在r.onShowtime中加载,另一个在按键事件中加载


编辑3:volume.children[2]。children[0]属于“X.slice”类型,不是吗

我的做法如下:

这是我的实际问题,但仍然不起作用:

Mhh

我认为对object.modified()的调用在文件setter(以及来自inject类的其他setter)中缺失。让我们看看,如果Haehn想改变一些内在的东西,他什么时候会来,但是现在你能试着自己叫它吗

您可以尝试在修改纹理后添加:

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();
   }
 }
renderer.onShowtime={
对于(var i=0;i
在onShowtime中调用它很重要,因为在卷未加载之前,所以slicesX、slicesY。。。不存在

Edit2: 哎,


多亏了你添加的信息,我想我明白了!在我们的Render3D的render()方法中,有一个对纹理的测试。\u dirty标志,您不能从框架外部更改。此外,使用纹理的第一次渲染会使该标志为false,并且加载新纹理似乎不会在当前XTK中将该标志设置回true。因此,我认为,我们必须将其添加到loader.load(纹理,对象)方法中。我会在Github上发表一篇文章,看看Haehn是怎么想的

多谢各位。我把它添加到我的代码中,但它没有改变纹理/切片。实际上我不明白为什么会有另一个“.children”-数组。有体积->轴->切片。因此,根据这一点,我必须更改体积中的纹理。children[2]。children[0]不是吗?但这也不起作用……第三次调用children实际上调用了切片的边界:Volume>axis>slice>borders。请参阅我的帖子编辑,我需要更多信息!有没有可能.纹理没有设置器?添加一个setter可以解决我的问题吗?关于Edit2:mh。。XTK加载器使用XHR(XMLHttpRequest)从服务器获取文件,默认情况下,这类请求有一个同源策略。不幸的是,Firefox只是阻塞了响应(并且准确地说出了您编写的内容,没有错误),您有其他浏览器来测试它吗?例如,Chrome更为明确。但奇怪的是,X.loader应该抛出一个错误“加载失败”。。。您正在本地主机上运行测试吗?使用wamp或同等产品?为什么答案为“空”?我可以点击链接,图像就会出现。我必须等待图像加载事件或其他什么吗?好的,我尝试将其绑定到一个图像。像这样加载:但它没有改变行为
renderer.render();
 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();
   }
 }