Glyph2D 同一个图形根据点云的输入产生不同位置的输出

一:主要的知识点

1、说明

本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程------逐行解析官网所有Python示例-CSDN博客

2、知识点纪要

本段代码主要涉及的有①同时生成多个坐标的相同模型,②Glyph2D和Glyph3D的区别

二:代码及注释

python 复制代码
import vtkmodules.vtkRenderingOpenGL2
from vtkmodules.vtkCommonColor import vtkNamedColors
from vtkmodules.vtkCommonDataModel import vtkPolyData
from vtkmodules.vtkCommonCore import vtkPoints
from vtkmodules.vtkFiltersCore import vtkGlyph2D
from vtkmodules.vtkFiltersSources import vtkRegularPolygonSource
from vtkmodules.vtkRenderingCore import (
    vtkActor,
    vtkPolyDataMapper,
    vtkRenderWindow,
    vtkRenderWindowInteractor,
    vtkRenderer
)


def main():
    colors = vtkNamedColors()
    points = vtkPoints()
    points.InsertNextPoint(0, 0, 0)
    points.InsertNextPoint(1, 1, 0)
    points.InsertNextPoint(2, 2, 0)

    polyData = vtkPolyData()
    polyData.SetPoints(points)

    polygonSource = vtkRegularPolygonSource()

    glyph2D = vtkGlyph2D()
    """
    SetSourceConnection  设置 glyph 的形状来源,指定glyph长什么样子
    SetInputData 直接把一个 vtkDataSet(点云、polydata 等)对象作为输入传进去 常用来指定 在这些点上放置 glyph
    """
    glyph2D.SetSourceConnection(polygonSource.GetOutputPort())
    glyph2D.SetInputData(polyData)
    glyph2D.Update()

    mapper = vtkPolyDataMapper()
    mapper.SetInputConnection(glyph2D.GetOutputPort())
    mapper.Update()

    actor = vtkActor()
    actor.SetMapper(mapper)
    actor.GetProperty().SetColor(colors.GetColor3d('Salmon'))

    # Visualize
    renderer = vtkRenderer()
    renderWindow = vtkRenderWindow()
    renderWindow.AddRenderer(renderer)
    renderWindowInteractor = vtkRenderWindowInteractor()
    renderWindowInteractor.SetRenderWindow(renderWindow)

    renderer.AddActor(actor)
    renderer.SetBackground(colors.GetColor3d('SlateGray'))

    # style = vtkInteractorStyleImage()
    # renderWindowInteractor.SetInteractorStyle(style)

    renderWindow.SetWindowName('Glyph2D')
    renderWindow.Render()
    renderWindowInteractor.Start()

    """
    vtkGlyph2D 与vtkGlyph3D的异同
    共同点:
    需要 输入点集(glyph 的放置位置)
    都需要源几何体(source)(glyph 的形状,例如箭头、球、方块)
    都可以根据 标量或向量数据 决定缩放、旋转、方向
    
    区别:
    vtkGlyph2D  专门针对 2D 场景(平面)
    输入点的 X、Y 用来放置 glyph,Z 坐标忽略或设为 0 
    Glyph 始终渲染在 屏幕二维坐标系下,不会随 3D 透视发生旋转、深度变化,更适合用来在 2D 图里加符号
    
    vtkGlyph3D  针对 三维场景
    输入点的 (X, Y, Z) 都会用来放置 glyph, Glyph 会真正处在 3D 空间里,受相机透视、深度遮挡等影响
    支持用向量数据控制 方向(箭头指向)、标量数据控制 缩放
    """

if __name__ == '__main__':
    main()
相关推荐
KaMeidebaby28 分钟前
卡梅德生物技术快报|纯化重组蛋白实操详解
人工智能·python·tcp/ip·算法·机器学习
Cloud_Shy61829 分钟前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 30 - 32)
开发语言·人工智能·笔记·python·学习方法
天佑木枫1 小时前
15天Python入门系列 · 序
开发语言·python
happylifetree1 小时前
Python017-第二章15.数据容器-dict常用操作
python
装不满的克莱因瓶1 小时前
了解 LangChain 中的 LLM 与 ChatModel 的差异
人工智能·python·ai·langchain·llm·agent·chatmodel
IT知识分享2 小时前
从零开发在线简繁转换工具:OpenCC 实战、避坑经验与方案选型
javascript·python
lunzi_08262 小时前
【学习笔记】《Python编程 从入门到实践》第8章:函数定义、参数传递与模块导入
笔记·python·学习
杨运交2 小时前
[030][Web模块]Spring Boot 验证与 OpenAPI 集成实战:从校验规则到文档生成
前端·spring boot·python
培培说证3 小时前
2026财务岗位如何快速提升自身能力
python
努力攻坚操作系统3 小时前
编程语言编译运行机制对比:C / Java / Python
java·c语言·python