文章目录

  • SceneWidget
  • 3D Label
  • 相机与视角

SceneWidget

SceneWidget是open3d用以展示三维内容的控件,功能极其强大。考虑到大家都已经受够了斯坦福兔子,今天就用一个古希腊雕塑做案例。

import open3d as o3d
import open3d.visualization.gui as gui
import open3d.visualization.rendering as rendering
from numpy import random as rd
app = gui.Application.instanceapp.initialize()win = app.create_window("scene", 1024, 768)
view3d = gui.SceneWidget()
view3d.scene = rendering.Open3DScene(win.renderer)
mat = rendering.MaterialRecord()
mat.base_color = [1.0,0.94,0.96,1.0]
mat.shader = "defaultLit"
venus = o3d.io.read_point_cloud("venus.pcd")
venus.compute_vertex_normals()
view3d.scene.add_geometry("venus", venus, mat)win.add_child(view3d)
app.run()

效果为

其中,view3d就是通过SceneWidget创建的场景,通过rendering.Open3dScene来选择这个场景的渲染位置。

venus是一个雕塑的点云文件,名字叫沉睡的维纳斯,通过add_geometry这个方法,将venus装载到场景中。

和直接采用o3d.visualization.draw_geometries相比,secene默认挂载的功能并不多,只有旋转拖动。类似+-号调整点尺寸的功能,均需要自行添加。

3D Label

顾名思义,3D Label就是3D标签,可以在空间中显示,有如下效果,非常炫酷

其代码将venus相关的代码换成如下部分

pts = rd.uniform(-1, 1, size=[100, 3])
pc = o3d.geometry.PointCloud()
pc.points = o3d.utility.Vector3dVector(pts)
colors = rd.uniform(0.0, 1.0, size=[100, 3])
pc.colors = o3d.utility.Vector3dVector(colors)
view3d.scene.add_geometry("points", pc, mat)for idx in range(0, len(pts)):view3d.add_3d_label(pts[idx], "{}".format(idx))win.add_child(view3d)
app.run()

其中,add_3d_label就是添加3D标签的方法,与之相对应的是remove_3d_label,可以移除标签。

相机与视角

sceneWidget提供了look_at函数,用于设置视角位置;setup_camera用于设置相机参数。

其中,look_at的输入为三个向量

  • center:相机所指向的中心位置
  • eye:相机的位置
  • up:规定上方的向量

setup_camera相对复杂,重载了多种不同的构造函数,就参数而言,包括下面几种

setup_camera(field_of_view, model_bounds, center_of_rotation)

  • field_of_view 视场角
  • model_bounds 模型边界
  • center_of_rotation 旋转中心

setup_camera(intrinsics, extrinsic, model_bounds)

  • intrinsics 相机内部矩阵
  • extrinsic 相机外部矩阵

setup_camera(intrinsic, extrinsic, idth_px, height_px, model_bounds)

  • width_px 像素宽
  • height_px 像素高

Open3d图形界面之3D显示控件相关推荐

  1. 自定义控件:等比例显示控件RatioLayout

    我们经常碰到服务器返回的图片比例大小是一样的,但是分辨力却是不一样的.这时候,就会遇到显示效果的问题.例如,图1和图2都是宽高比例相等,但是分辨率大小不一样的图片,应该按照比例显示,使用等比例显示控件 ...

  2. 显示控件——字符显示之艺术字

    该控件主要是用于数据变量显示,与"数据变量"显示控件相似.不同的是,该控件使用图标艺术字作为字库,可以实现各种特殊的艺术字体的效果.在属性栏可以设置起始图标号,之后图片文字排列顺序 ...

  3. Qt的基本控件——显示控件

    显示控件 1.label 作用就是用来显示一些文字的,或者用来贴图 1.加载资源方式: 右键项目-->add new 输入名字,就能得到一个qrc的一个包, 然后在这个位置添加前缀/image表 ...

  4. 一款增强的3D carousel控件

    3D carousel控件一览 3d carousel是常用于slide图文展示的效果,通过css transform修饰相邻的几张图文,用简单的代价呈现3d场景效果. 经过比较,收费控件中我比较欣赏 ...

  5. Plotly绘制金融时间序列图实战:配置滑动控件

    Plotly绘制金融时间序列图实战:配置滑动控件 # 可视化金融时间序列数据并设置时间粒度组件: import plotly as py import plotly.graph_objs as go ...

  6. WPF 动画显示控件

    原文:WPF 动画显示控件 当我们要显示一个控件的时候,不仅仅要显示这个控件,还要有动画的效果. 主要用到了DoubleAnimation类. public static void ShowAnima ...

  7. android比较常用的布局,Android_九宫图比较常用的多控件布局(GridView)使用介绍,GridView跟ListView都是比较常用的 - phpStudy...

    九宫图比较常用的多控件布局(GridView)使用介绍 GridView跟ListView都是比较常用的多控件布局,而GridView更是实现九宫图的首选!本文就是介绍如何使用GridView实现九宫 ...

  8. .NET Winform 的七段数码显示控件

    自行开发的.NET Winform 下的七段数码显示控件.文章请看: http://www.codeproject.com/KB/miscctrl/SegmentedLEDControl.aspx 最 ...

  9. Android 时间显示控件 TextClock

    Android 时间显示控件 TextClock TextClock可用作显示时间,API>=17,用来替代DigitalClock. 系统设置以24小时格式的时候使用这个format andr ...

最新文章

  1. EasyUC博客助手 [支持:博客园,MSN/Live空间,CSDN, 博客之家,PJBlog,Z-Blog...]
  2. 观察者模式--模拟3D彩票公众号
  3. SpringIOC概述
  4. Git实现从本地添加项目到远程仓库
  5. GitHub 超 3W Star,最受欢迎的 VS Code IDE 是如何炼成的?
  6. word2016+endnoteX7的安装与配置
  7. 19款资源整合类网站推荐:每一个网站都堪称以一敌百
  8. 一款非常好看的婚纱请柬设计英文字体
  9. 二进制转十六进制的详细步骤
  10. 12 款适用于开发人员的最佳 Web 开发软件
  11. 首席科学家马丁•福勒(Martin Fowler)
  12. 软考题目之头结点、头指针和首元节点
  13. WebBowser 实现淘宝网自动登录
  14. 中国计算机专业的大学生相比于美国差在哪里?
  15. bboss es对比直接使用es客户端的优势
  16. java 入参校验_Java Validation方法入参校验实现过程解析
  17. 从输入 URL 到浏览器接收的过程中发生了什么事情?
  18. 易语言利用Vs2017Linker编译器
  19. 基于启发式蝙蝠算法、粒子群算法、花轮询算法和布谷鸟搜索算法的换热器PI控制器优化(Matlab代码实现)
  20. 2017百度之星程序设计大赛 - 初赛(A)今夕何夕

热门文章

  1. High performance server architecture(高性能服务器架构)
  2. 欢迎 收听 海口DJ江林 混音 你的样子 异域风格 为您倾心打造 DJ 江林 reim 短指键盘松哥原创
  3. Win11 22H2使用TranslucentTB让任务栏透明
  4. 服务器的1U ,2U分别是什么意思?
  5. 企业培训师吉宁博士:做好时间管理的有用法则
  6. Spark项目实战—电商用户行为分析
  7. Clipper库中文帮助文档
  8. 计算机网络题简单建设校园网络,计算机网络课程设计校园网络构建方案设计和实现.doc...
  9. 门这边、门那边的2个世界...
  10. linux 查看.img文件,linux img文件 分区挂载