我使用Vtk.js在web界面上显示3D内容。
当我尝试加载多个模型(STL格式 )时,我的问题就会发生。
我用的是这个逻辑:
PS:文件是我的STL的属性数组,'url‘属性是STL的路径
const fullScreenRenderer = vtk.Rendering.Misc.vtkFullScreenRenderWindow.newInstance();
for (var i = files.length - 1; i >= 0; i--)
{
var mapper = vtk.Rendering.Core.vtkMapper.newInstance({ scalarVisibility: false });
var actor = vtk.Rendering.Core.vtkActor.newInstance();
var reader = vtk.IO.Geometry.vtkSTLReader.newInstance();
actor.setMapper(mapper);
mapper.setInputConnection(reader.getOutputPort());
actor.getProperty().setColor( files[i].color );
actor.getProperty().setOpacity( files[i].opacity );
fullScreenRenderer.getRenderer().addActor(actor);
reader.setUrl( files[i].url , { binary: true }).then( update) ;
}
function update()
{
fullScreenRenderer.getRenderer().resetCamera();
fullScreenRenderer.getRenderer().setLayer(1);
fullScreenRenderer.getRenderWindow().render();
} 问题是每个3D模型都是黑色的。如果我删除setLayer(1),整个屏幕都是黑色的。
我认为这是因为我没有使用正确的"管道“。但是我对这个库没有那么多的经验要知道,这个文档还没有完成,也没有帮助。
发布于 2020-04-01 10:10:22
这对我有用(但我不明白为什么.)
const fullScreenRenderer = vtk.Rendering.Misc.vtkFullScreenRenderWindow.newInstance();
var actors = [];
for (var i = files.length - 1; i >= 0; i--)
{
var mapper = vtk.Rendering.Core.vtkMapper.newInstance({ scalarVisibility: false });
actors[i] = vtk.Rendering.Core.vtkActor.newInstance();
var reader = vtk.IO.Geometry.vtkSTLReader.newInstance();
actors[i].setMapper(mapper);
mapper.setInputConnection(reader.getOutputPort());
actors[i].getProperty().setColor( files[i].color );
actors[i].getProperty().setOpacity( files[i].opacity );
fullScreenRenderer.getRenderer().addActor(actor);
reader.setUrl( files[i].url , { binary: true }).then( update(i) ) ;
}
function update(i)
{
actors[i].getProperty().setColor( files[i].color );
fullScreenRenderer.getRenderer().resetCamera();
fullScreenRenderer.getRenderWindow().render();
} https://stackoverflow.com/questions/51149992
复制相似问题