news 2026/4/22 23:18:13

BillboardTextActor3D 3D字体随镜头旋转

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
BillboardTextActor3D 3D字体随镜头旋转

一:主要的知识点

1、说明

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

2、知识点纪要

本段代码主要涉及的有①vtk中几种txt的对比,②vtkBillboardTextActor3D的简介


二:代码及注释

#!/usr/bin/env python3 # noinspection PyUnresolvedReferences import vtkmodules.vtkInteractionStyle # noinspection PyUnresolvedReferences import vtkmodules.vtkRenderingFreeType # noinspection PyUnresolvedReferences import vtkmodules.vtkRenderingOpenGL2 from vtkmodules.vtkCommonColor import vtkNamedColors # noinspection PyUnresolvedReferences from vtkmodules.vtkCommonCore import vtkCommand from vtkmodules.vtkCommonCore import ( vtkMinimalStandardRandomSequence ) from vtkmodules.vtkFiltersSources import vtkSphereSource from vtkmodules.vtkRenderingCore import ( vtkActor, vtkBillboardTextActor3D, vtkPolyDataMapper, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) def main(): colors = vtkNamedColors() rng = vtkMinimalStandardRandomSequence() rng.SetSeed(5127) renderer = vtkRenderer() renderer.SetBackground(colors.GetColor3d('DarkSlateGray')) render_window = vtkRenderWindow() render_window.AddRenderer(renderer) render_window.SetWindowName('BillboardTextActor3D') iren = vtkRenderWindowInteractor() iren.SetRenderWindow(render_window) sphere_source = vtkSphereSource() sphere_source.SetCenter(0.0, 0.0, 0.0) sphere_source.SetRadius(1.0) min_r = -10.0 max_r = 10.0 for i in range(0, 10): if i == 0: mapper = vtkPolyDataMapper() mapper.SetInputConnection(sphere_source.GetOutputPort()) actor = vtkActor() actor.SetMapper(mapper) actor.SetPosition(0, 0, 0) actor.GetProperty().SetColor(colors.GetColor3d('Peacock')) renderer.AddActor(actor) mapper = vtkPolyDataMapper() mapper.SetInputConnection(sphere_source.GetOutputPort()) actor = vtkActor() actor.SetMapper(mapper) actor.SetPosition(0, 0, 0) actor.GetProperty().SetColor(colors.GetColor3d('MistyRose')) """ vtkBillboardTextActor3D 是一种 3D 文字显示类,能够在三维空间中的任意坐标位置显示文字,并自动面向相机 """ text_actor = vtkBillboardTextActor3D() text_actor.SetPosition(actor.GetPosition()) text_actor.GetTextProperty().SetFontSize(12) text_actor.GetTextProperty().SetColor(colors.GetColor3d('Gold')) text_actor.GetTextProperty().SetJustificationToCentered() """ 几种text的比对 类名 | 类型 | 位置坐标系 | 是否随相机旋转 | 是否受光照影响 | 常见用途 vtkTextActor | 2D 屏幕文字 | 屏幕坐标(Viewport) | 固定在屏幕上 | 否 | UI文字、标题、图例 vtkVectorText | 3D 几何体文字 | 世界坐标(World) | 会随相机旋转 | 是(真正的 3D 模型) | 立体文字、雕刻文字 vtkBillboardTextActor3D | 3D 文字贴图 | 世界坐标(World) | 自动面向相机 | 否 | 3D 场景标注、标签、说明 """ position = random_position(min_r, max_r, rng) actor.SetPosition(position) label = f'{position[0]:0.3g}, {position[1]:0.3g}, {position[2]:0.3g}' text_actor.SetPosition(position) text_actor.SetInput(label) renderer.AddActor(actor) renderer.AddActor(text_actor) render_window.Render() render_window.SetWindowName('BillboardTextActor3D') iren.Start() def random_position(min_r, max_r, rng): p = list() for i in range(0, 3): p.append(rng.GetRangeValue(min_r, max_r)) rng.Next() return p if __name__ == '__main__': main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/8 11:11:48

优化支付体验:如何避免权限验证导致的支付中断

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 设计一个支付流程优化系统,要求:1. 预检商户权限状态功能 2. 备用支付通道自动切换逻辑 3. 用户友好错误提示模板 4. 商户后台预警机制 5. 数据埋点分析模块…

作者头像 李华
网站建设 2026/4/19 10:40:29

Hunyuan-MT-7B在国际空间站多语言协作中的想象空间

Hunyuan-MT-7B在国际空间站多语言协作中的想象空间 在国际空间站的日常运行中,一条来自俄罗斯舱段的操作指令,可能需要同时被美国休斯顿控制中心、德国科隆地面站和中国北京航天飞行控制中心准确理解。而这条信息最初可能是用俄语口述的——如果依赖人工…

作者头像 李华
网站建设 2026/4/18 18:39:26

对比传统方法:AI设计PFC电路效率提升30%的秘诀

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个PFC电路设计对比工具,可并行展示传统设计流程与AI优化流程的差异。要求:1) 对同一设计需求生成两种方案 2) 对比关键指标(效率、THD、体…

作者头像 李华
网站建设 2026/4/17 8:51:58

快速验证数据去重方案:ON DUPLICATE KEY UPDATE原型设计

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 需要快速创建一个数据去重功能的可运行原型。要求:1) 使用Node.jsMySQL技术栈 2) 实现一个简单的用户注册接口 3) 使用ON DUPLICATE KEY UPDATE处理用户名冲突 4) 包含…

作者头像 李华
网站建设 2026/4/19 15:31:08

hid单片机入门全攻略:系统学习前的准备事项

从零开始玩转 HID 单片机:新手入门前必须搞懂的那些事 你有没有想过,自己动手做一个键盘、游戏手柄,甚至是一个能自动输入密码的“智能钥匙”?听起来很酷,但实现起来难不难? 答案是: 只要选对…

作者头像 李华
网站建设 2026/4/18 22:19:22

企业级项目如何安全托管在GitHub Pages

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个企业级GitHub Pages托管解决方案,包含:1) 基于组织账号的权限管理系统 2) 敏感信息加密方案 3) Cloudflare CDN集成配置 4) 自动化监控和告警系统 …

作者头像 李华