我目前正在研究关于在浏览器中显示3D医疗数据的学士论文。因此,我正在编写一个可以显示DICOM图像和网格的应用程序。
据我所知,目前DICOM的体积渲染效果比使用XTK要好于ami.js。 DICOM的ami.js中的3D渲染结果不是很有用(仅最多12 fps)。我尝试渲染DICOM,就像在第6课的体积渲染示例中一样。
所以我的问题是:
我如何组合这两个框架,以便我可以使用XTK的3D体积渲染用于DICOM,但是ami.js的所有其他功能呢?
或者我如何使用ami.js的体积渲染,它会变好?
答案 0 :(得分:1)
编辑:(2)中建议的改进已经实施,并在https://fnndsc.github.io/ami/#vr_singlepass
生效
AMI和XTK使用不同的技术进行体积渲染:
AMI支持:
XTK支持:
我建议只使用1个框架,具体取决于您的需求。
您是否看过AMI的体积渲染:https://fnndsc.github.io/ami/#vr_singlepass
可以使用许多技术来提高性能:
AMI VR示例实现(1)。
实施(2):
使用setPixelRatio
threeD = document.getElementById('r3d');
renderer = new THREE.WebGLRenderer({
alpha: true,
});
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(threeD.offsetWidth, threeD.offsetHeight);
在一个地方编辑onStart():
// vrHelper.uniforms.uSteps.value = Math.floor(myStack.steps / 2);
// vrHelper.interpolation = 0;
renderer.setPixelRatio(.1 * window.devicePixelRatio);
renderer.setSize(threeD.offsetWidth, threeD.offsetHeight);
在一个地方编辑onEnd():
// vrHelper.uniforms.uSteps.value = myStack.steps;
// vrHelper.interpolation = myStack.interpolation;
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(threeD.offsetWidth, threeD.offsetHeight);
在2个地方编辑onWheel():
// vrHelper.uniforms.uSteps.value = Math.floor(myStack.steps / 2);
// vrHelper.interpolation = 0;
renderer.setPixelRatio(.1 * window.devicePixelRatio);
renderer.setSize(threeD.offsetWidth, threeD.offsetHeight);
和
wheelTO = setTimeout(function() {
// vrHelper.uniforms.uSteps.value = myStack.steps;
// vrHelper.interpolation = myStack.interpolation;
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(threeD.offsetWidth, threeD.offsetHeight);
HTH,