Open3d图形界面之3D显示控件
文章目录
- 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显示控件相关推荐
- 自定义控件:等比例显示控件RatioLayout
我们经常碰到服务器返回的图片比例大小是一样的,但是分辨力却是不一样的.这时候,就会遇到显示效果的问题.例如,图1和图2都是宽高比例相等,但是分辨率大小不一样的图片,应该按照比例显示,使用等比例显示控件 ...
- 显示控件——字符显示之艺术字
该控件主要是用于数据变量显示,与"数据变量"显示控件相似.不同的是,该控件使用图标艺术字作为字库,可以实现各种特殊的艺术字体的效果.在属性栏可以设置起始图标号,之后图片文字排列顺序 ...
- Qt的基本控件——显示控件
显示控件 1.label 作用就是用来显示一些文字的,或者用来贴图 1.加载资源方式: 右键项目-->add new 输入名字,就能得到一个qrc的一个包, 然后在这个位置添加前缀/image表 ...
- 一款增强的3D carousel控件
3D carousel控件一览 3d carousel是常用于slide图文展示的效果,通过css transform修饰相邻的几张图文,用简单的代价呈现3d场景效果. 经过比较,收费控件中我比较欣赏 ...
- Plotly绘制金融时间序列图实战:配置滑动控件
Plotly绘制金融时间序列图实战:配置滑动控件 # 可视化金融时间序列数据并设置时间粒度组件: import plotly as py import plotly.graph_objs as go ...
- WPF 动画显示控件
原文:WPF 动画显示控件 当我们要显示一个控件的时候,不仅仅要显示这个控件,还要有动画的效果. 主要用到了DoubleAnimation类. public static void ShowAnima ...
- android比较常用的布局,Android_九宫图比较常用的多控件布局(GridView)使用介绍,GridView跟ListView都是比较常用的 - phpStudy...
九宫图比较常用的多控件布局(GridView)使用介绍 GridView跟ListView都是比较常用的多控件布局,而GridView更是实现九宫图的首选!本文就是介绍如何使用GridView实现九宫 ...
- .NET Winform 的七段数码显示控件
自行开发的.NET Winform 下的七段数码显示控件.文章请看: http://www.codeproject.com/KB/miscctrl/SegmentedLEDControl.aspx 最 ...
- Android 时间显示控件 TextClock
Android 时间显示控件 TextClock TextClock可用作显示时间,API>=17,用来替代DigitalClock. 系统设置以24小时格式的时候使用这个format andr ...
最新文章
- CentOS 6.x 使用安装光盘作为yum源
- 物体检测轻松上手:精度与速度实现兼得
- clear在CSS中的妙用
- Unsupported major.minor version 51.0(jdk版本错误)
- Lvs Tun隧道模式配置
- 向ASP.NET Core迁移
- aws sqs_在Spring中将AWS SQS用作JMS提供程序
- Win11提示无法安装程序怎么办 Win11提示无法安装程序的解决方法
- Spring:pom.xml中引入依赖发红解决方案
- Windows10应用Docker部署DoNet Core
- .Net Core开发学习(一) ——Startup 类
- hdu 2037 今年暑假不AC 贪心)
- tkmybatis 子查询_最全的真假童子命查询方法!不想被忽悠就看看
- Hive/MaxCompute SQL性能优化(三):数据倾斜优化实战
- iOS开发UI基础—09UIImageView动画示例之汤姆猫程序
- dnf一天能获得多少黑暗之眼_DNF洞察之眼每天能打几次?洞察之眼奖励及入场方式一览_52pk...
- 屏幕分辨率:聊一聊像素
- 使用正则表达式 匹配 HTML 标签内的内容
- ESP8266(基于arduino平台)每篇一个知识点—1.wifi STA模式连接指定wifi
- echarts 柱状图--柱体的点击事件