文章目录

  • 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. CentOS 6.x 使用安装光盘作为yum源
  2. 物体检测轻松上手:精度与速度实现兼得
  3. clear在CSS中的妙用
  4. Unsupported major.minor version 51.0(jdk版本错误)
  5. Lvs Tun隧道模式配置
  6. 向ASP.NET Core迁移
  7. aws sqs_在Spring中将AWS SQS用作JMS提供程序
  8. Win11提示无法安装程序怎么办 Win11提示无法安装程序的解决方法
  9. Spring:pom.xml中引入依赖发红解决方案
  10. Windows10应用Docker部署DoNet Core
  11. .Net Core开发学习(一) ——Startup 类
  12. hdu 2037 今年暑假不AC 贪心)
  13. tkmybatis 子查询_最全的真假童子命查询方法!不想被忽悠就看看
  14. Hive/MaxCompute SQL性能优化(三):数据倾斜优化实战
  15. iOS开发UI基础—09UIImageView动画示例之汤姆猫程序
  16. dnf一天能获得多少黑暗之眼_DNF洞察之眼每天能打几次?洞察之眼奖励及入场方式一览_52pk...
  17. 屏幕分辨率:聊一聊像素
  18. 使用正则表达式 匹配 HTML 标签内的内容
  19. ESP8266(基于arduino平台)每篇一个知识点—1.wifi STA模式连接指定wifi
  20. echarts 柱状图--柱体的点击事件

热门文章

  1. 制作自己的openwrt刷机包_手机刷机包如何制作?自己如何制作刷机包?
  2. windows10任务栏透明
  3. 基于微信教室实验室预约小程序设计与实现 开题报告
  4. Spring boot基于itext实现定制化模板pdf生成功能
  5. springboot实验课程辅助管理系统 毕业设计-附源码191113
  6. 开发 Web 应用程序
  7. 摄像机sensor介绍
  8. MySQL InnoDB 表不存在问题修复
  9. DNSPod吴洪声:国外域名注册商域名不许国内解析
  10. C++ Primer Plus (第六版)编程练习记录(chapter10 对象和类)