首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vtk.js:导入多个STL

Vtk.js:导入多个STL
EN

Stack Overflow用户
提问于 2018-07-03 08:31:17
回答 1查看 550关注 0票数 0

我使用Vtk.js在web界面上显示3D内容。

当我尝试加载多个模型(STL格式 )时,我的问题就会发生。

我用的是这个逻辑:

PS:文件是我的STL的属性数组,'url‘属性是STL的路径

代码语言:javascript
复制
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),整个屏幕都是黑色的。

我认为这是因为我没有使用正确的"管道“。但是我对这个库没有那么多的经验要知道,这个文档还没有完成,也没有帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-04-01 10:10:22

这对我有用(但我不明白为什么.)

代码语言:javascript
复制
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();
} 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51149992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档