Learning vtkjs之PolyDataNormals
法线可视化
介绍
polydata法线可视化
效果
核心代码
主要流程
const fullScreenRenderer = vtkFullScreenRenderWindow.newInstance({background: [0, 0, 0],rootContainer: vtkContainerRef.current,});const renderer = fullScreenRenderer.getRenderer();const renderWindow = fullScreenRenderer.getRenderWindow();const lookupTable = vtkLookupTable.newInstance({ hueRange: [0.666, 0] });const source = vtkCubeSource.newInstance();const inputPolyData = source.getOutputData();inputPolyData.getPointData().setNormals(null);const mapper = vtkMapper.newInstance({interpolateScalarsBeforeMapping: true,colorMode: ColorMode.DEFAULT,scalarMode: ScalarMode.DEFAULT,useLookupTableScalarRange: true,lookupTable,});const actor = vtkActor.newInstance();actor.getProperty().setEdgeVisibility(true);const polyDataNormals = vtkPolyDataNormals.newInstance();// The generated 'z' array will become the default scalars, so the plane mapper will color by 'z':polyDataNormals.setInputData(inputPolyData);mapper.setInputConnection(polyDataNormals.getOutputPort());actor.setMapper(mapper);renderer.addActor(actor);const arrowSource = vtkArrowSource.newInstance();const glyphMapper = vtkGlyph3DMapper.newInstance();glyphMapper.setInputConnection(polyDataNormals.getOutputPort());glyphMapper.setSourceConnection(arrowSource.getOutputPort());glyphMapper.setOrientationModeToDirection();glyphMapper.setOrientationArray("Normals");glyphMapper.setScaleModeToScaleByMagnitude();glyphMapper.setScaleArray("Normals");glyphMapper.setScaleFactor(0.1);const glyphActor = vtkActor.newInstance();glyphActor.setMapper(glyphMapper);renderer.addActor(glyphActor);context.current = {renderer,renderWindow,polyDataNormals,};renderer.resetCamera();renderWindow.render();
全部代码都放到github上了
新坑_Learning vtkjs_git地址
关注我,我持续更新vtkjs的example学习案例
也欢迎各位给我提意见,技术交流~
大鸿
WeChat : HugeYen
WeChat Public Account : BIM树洞
做一个静谧的树洞君
用建筑的语言描述IT事物;
用IT的思维解决建筑问题;
共建BIM桥梁,聚合团队。
本学习分享资料不得用于商业用途,仅做学习交流!!如有侵权立即删除!!