文章目录

  • 1 简介
    • 1.1 3D绘图工具包
    • 1.2 集成应用
  • 2 安装和依赖
    • 2.1 安装
    • 2.2 依赖关系
  • 3 快速体验
    • 3.1 熟悉的风格
    • 3.2 子图布局
    • 3.3 Colorbar
    • 3.4 光照和材质
    • 3.5 让模型动起来
    • 3.6 定制着色器
  • 4 进阶应用
    • 4.1 颜色
    • 4.2 颜色映射
    • 4.3 视点系统
    • 4.4 画布参数
    • 4.5 UI隐藏的技巧
    • 4.6 子图布局
    • 4.7 多个Colorbar
    • 4.8 定制轴名称和轴刻度
    • 4.9 透明和不透明模型
    • 4.10 渲染面剔除
    • 4.11 渲染面填充
    • 4.12 幻灯片播放
    • 4.13 模型变换
    • 4.14 相机巡航
    • 4.15 纹理
    • 4.16 定制着色器
    • 4.17 三维重建
    • 4.18 静默生成GIF或视频文件
  • 5 与wxPython集成
    • 5.1 常规视区
    • 5.2 锁定视区
  • 6 API Reference
    • 6.1 constant
    • 6.2 util
      • 6.2.1 wxgl.font_list
      • 6.2.2 wxgl.color_list
      • 6.2.3 wxgl.color_help
      • 6.2.4 wxgl.cmap_list
      • 6.2.5 wxgl.cmap_help
      • 6.2.6 wxgl.cmap
      • 6.2.7 wxgl.text2image
    • 6.3 light
      • 6.3.1 wxgl.BaseLight
      • 6.3.2 wxgl.SunLight
      • 6.3.3 wxgl.LampLight
      • 6.3.4 wxgl.SkyLight
      • 6.3.5 wxgl.SphereLight
    • 6.4 wxgl.Model
      • 6.4.1 wxgl.Model.add_shader
      • 6.4.2 wxgl.Model.set_vertex
      • 6.4.3 wxgl.Model.set_normal
      • 6.4.4 wxgl.Model.set_texcoord
      • 6.4.5 wxgl.Model.set_color
      • 6.4.6 wxgl.Model.set_psize
      • 6.4.7 wxgl.Model.add_texture
      • 6.4.8 wxgl.Model.set_view_matrix
      • 6.4.9 wxgl.Model.set_proj_matrix
      • 6.4.10 wxgl.Model.set_model_matrix
      • 6.4.11 wxgl.Model.set_argument
      • 6.4.12 wxgl.Model.set_cam_pos
      • 6.4.13 wxgl.Model.set_ae
      • 6.4.14 wxgl.Model.set_picked
      • 6.4.15 wxgl.Model.set_line_style
      • 6.4.16 wxgl.Model.set_cull_mode
      • 6.4.17 wxgl.Model.set_fill_mode
      • 6.4.18 wxgl.Model.set_slide
      • 6.4.19 wxgl.Model.verify
    • 6.5 wxgl.Texture
      • 6.5.1 wxgl.Texture.create_texture
    • 6.6 wxgl.glplot
      • 6.6.1 wxgl.glplot.figure
      • 6.6.2 wxgl.glplot.subplot
      • 6.6.3 wxgl.glplot.show
      • 6.6.4 wxgl.glplot.savefig
      • 6.6.5 wxgl.glplot.capture
      • 6.6.6 wxgl.glplot.cruise
      • 6.6.7 wxgl.glplot.title
      • 6.6.8 wxgl.glplot.colorbar
      • 6.6.9 wxgl.Region.grid
      • 6.6.10 wxgl.glplot.xrange
      • 6.6.11 wxgl.glplot.yrange
      • 6.6.12 wxgl.glplot.zrange
      • 6.6.13 wxgl.glplot.model
      • 6.6.14 wxgl.glplot.text
      • 6.6.15 wxgl.glplot.text3d
      • 6.6.16 wxgl.glplot.point
      • 6.6.17 wxgl.glplot.line
      • 6.6.18 wxgl.glplot.surface
      • 6.6.19 wxgl.glplot.quad
      • 6.6.20 wxgl.glplot.mesh
      • 6.6.21 wxgl.glplot.cylinder
      • 6.6.22 wxgl.glplot.torus
      • 6.6.23 wxgl.glplot.uvsphere
      • 6.6.24 wxgl.glplot.isosphere
      • 6.6.25 wxgl.glplot.circle
      • 6.6.26 wxgl.glplot.cone
      • 6.6.27 wxgl.glplot.cube
      • 6.6.28 wxgl.glplot.isosurface
    • 6.7 wxgl.Scene
      • 6.7.1 wxgl.Scene.add_region
      • 6.7.2 wxgl.Scene.set_style
      • 6.7.3 wxgl.Scene.render
      • 6.7.4 wxgl.Scene.save_scene
      • 6.7.5 wxgl.Scene.start_animate
      • 6.7.6 wxgl.Scene.stop_animate
      • 6.7.7 wxgl.Scene.pause_animate
      • 6.7.8 wxgl.Scene.estimate
      • 6.7.9 wxgl.Scene.start_record
      • 6.7.10 wxgl.Scene.stop_record
      • 6.7.11 wxgl.Scene.restore_posture
    • 6.8 wxgl.Region
      • 6.8.1 wxgl.Region.reset_box
      • 6.8.2 wxgl.Region.clear
      • 6.8.3 wxgl.Region.set_range
      • 6.8.4 wxgl.Region.set_cam_cruise
      • 6.8.5 wxgl.Region.save_posture
      • 6.8.6 wxgl.Region.restore_posture
      • 6.8.7 wxgl.Region.set_model_visible
      • 6.8.8 wxgl.Region.show_model
      • 6.8.9 wxgl.Region.hide_model
      • 6.8.10 wxgl.Region.drop_model
      • 6.8.11 wxgl.Region.add_model
      • 6.8.12 wxgl.Region.text
      • 6.8.13 wxgl.Region.text3d
      • 6.8.14 wxgl.Region.point
      • 6.8.15 wxgl.Region.line
      • 6.8.16 wxgl.Region.surface
      • 6.8.17 wxgl.Region.quad
      • 6.8.18 wxgl.Region.mesh
      • 6.8.19 wxgl.Region.cylinder
      • 6.8.20 wxgl.Region.torus
      • 6.8.21 wxgl.Region.uvsphere
      • 6.8.22 wxgl.Region.isosphere
      • 6.8.23 wxgl.Region.circle
      • 6.8.24 wxgl.Region.cone
      • 6.8.25 wxgl.Region.cube
      • 6.8.26 wxgl.Region.isosurface
      • 6.8.27 wxgl.Region.colorbar
      • 6.8.28 wxgl.Region.grid

1 简介

WxGL是一个基于PyOpenGL的三维数据绘图工具包,以wx为显示后端,提供Matplotlib风格的应用方式。WxGL也可以和wxPython无缝结合,在wx的窗体上绘制三维模型。

WxGL提供了一套简洁易用、对用户友好的API,将OpenGL的复杂概念全部封装起来,使得用户可以更加专注于数据的处理,而无需在3D显示方面分散精力。WxGL还提供了着色器语言接口,允许用户定制着色器,以应对特殊的应用需求。

作为开源项目,WxGL遵循MIT开源软件许可协议。任何使用、复制、修改本软件以及出版发行、再授权、贩售本软件的行为,都必须遵守MIT授权协议的约束。

项目地址

中文文档

1.1 3D绘图工具包

wxgl.glplot作为WxGL的3D绘图工具包,提供了一系列功能完备的绘图函数,函数命名和使用都非常类似matplotlib.pyplot子模块。正如matplotlib.pyplot被简写为plt那样,glt被视为wxgl.glplot的别名。

1.2 集成应用

WxGL以wxPython为显示后端,wxgl.Scene继承自wx.glcanvas.GLCanvas类,因此WxGL可以和wxPython无缝结合,在wx的窗体上绘制三维模型。

2 安装和依赖

2.1 安装

WxGL模块使用pip命令安装。

pip install wxgl

如果环境中存在多个python解释器,请指定解释器安装。

python.exe -m pip install wxgl

2.2 依赖关系

WxGL依赖下列模块:

  • pyopengl - 推荐版本:3.1.5或更高
  • numpy - 推荐版本:1.18.2或更高
  • matplotlib - 推荐版本:3.1.2或更高
  • pillow - 推荐版本:8.2.0或更高
  • wxpython - 推荐版本:4.0.7.post2或更高
  • freetype-py - 推荐版本:2.2.0或更高
  • pynput - 推荐版本:1.7.6或更高
  • imageio - 推荐版本:2.8.0或更高

如果当前运行环境没有安装这些模块,安装程序将会自动安装它们。如果安装过程出现问题,或者安装完成后无法正常使用,请手动安装WxGL的依赖模块。

3 快速体验

3.1 熟悉的风格

下面这几行代码,绘制了一个中心在三维坐标系原点半径为1的纯色圆球。忽略模块名的话,这些代码和Matplotlib的风格几乎是完全一致的。

import wxgl.glplot as gltglt.title('快速体验:$x^2+y^2+z^2=1$')
glt.uvsphere((0,0,0), 1, color='cyan')
glt.show()

弹出窗口显式如下。

3.2 子图布局

在一张画布上可以任意放置多个子图。下面的代码演示了子图布局函数subplot的经典用法,代码中的纹理图片在GitHub本项目的example路径下。

import wxgl
import wxgl.glplot as gltglt.subplot(121)
glt.title('经纬度网格生成球体')
glt.uvsphere((0,0,0), 1, texture=wxgl.Texture('res/earth.jpg'))
glt.grid()glt.subplot(122)
glt.title('正八面体迭代细分生成球体')
glt.isosphere((0,0,0), 1, color=(0,1,1), fill=False, iterations=5)
glt.grid()glt.show()

弹出窗口显式如下。

3.3 Colorbar

对于数据快速可视化工具来说,Colorbar是必不可少的。下面的代码演示了Colorbar最简单的用法。

import numpy as np
import wxgl.glplot as gltvs = np.random.random((300, 3))*2-1
color = np.random.random(300)
size = np.linalg.norm(vs, axis=1)
size = 30 * (size - size.min()) / (size.max() - size.min())glt.title('随机生成的300个点')
glt.point(vs, color, cm='jet', alpha=0.8, size=size)
glt.colorbar('jet', [0, 100], loc='right', subject='高度')
glt.colorbar('Paired', [-50, 50], loc='bottom', subject='温度', margin_left=5)
glt.colorbar('rainbow', [0, 240], loc='bottom', subject='速度', margin_right=5)
glt.show()

弹出窗口显式如下。

3.4 光照和材质

WxGL提供了BaseLight、SunLight、LampLight、SkyLight、SphereLight等多种光照方案,配合光洁度、粗糙度、金属度、透光度等参数,可模拟出不同的质感。

import wxgl
import wxgl.glplot as gltglt.subplot(221)
glt.title('太阳光')
glt.torus((0,0,0), 1, 3, vec=(0,1,1), light=wxgl.SunLight(roughness=0, metalness=0, shininess=0.5))glt.subplot(222)
glt.title('灯光')
pos = (3, 0.0, 3)
glt.torus((0,0,0), 1, 3, vec=(0,1,1), light=wxgl.LampLight(position=pos))
glt.point((pos,), color='white', size=20)glt.subplot(223)
glt.title('户外光')
glt.torus((0,0,0), 1, 3, vec=(0,1,1), light=wxgl.SkyLight(sky=(1.0,1.0,1.0)))glt.subplot(224)
glt.title('球谐光')
glt.torus((0,0,0), 1, 3, vec=(0,1,1), light=wxgl.SphereLight(5, factor=0.8))glt.show()

弹出窗口显式如下。

3.5 让模型动起来

通过transform参数传递一个以累计渲染时长duration为参数的函数给模型,可以实现复杂的模型动画。相机巡航也以类似的方式实现。下面的代码中,两个子图均使用了射向右后方的平行灯光。当模型旋转时,由于相机和灯光位置不变,模型上的光照位置随之改变;而相机旋转时,由于模型和灯光的相对管不变,模型上的光照位置固定不变。

import wxgl
import wxgl.glplot as glttf = lambda duration : ((0, 1, 0, (0.02*duration)%360),)
cf = lambda duration : {'azim':(-0.02*duration)%360}tx = wxgl.Texture('res/earth.jpg')
light = wxgl.SunLight(direction=(1,0,-1))glt.subplot(121)
glt.title('模型旋转')
glt.cylinder((0,1,0), (0,-1,0), 1, texture=tx, transform=tf, light=light)glt.subplot(122)
glt.cruise(cf)
glt.title('相机旋转')
glt.cylinder((0,1,0), (0,-1,0), 1, texture=tx, light=light)glt.show()

弹出窗口显式如下。记得点击播放按钮才能让模型动起来。

3.6 定制着色器

除了内置的绘图函数,WxGL还提供了GLSL接口,允许用户定制着色器代码。下面的代码演示了使用定制的顶点着色器和片元着色器的基本流程。

import wxgl
import wxgl.glplot as gltvshader = """#version 330 corein vec4 a_Position;in vec4 a_Color;uniform mat4 u_ProjMatrix;uniform mat4 u_ViewMatrix;uniform mat4 u_ModelMatrix;out vec4 v_Color;void main() { gl_Position = u_ProjMatrix * u_ViewMatrix * u_ModelMatrix * a_Position; v_Color = a_Color;}
"""fshader = """#version 330 corein vec4 v_Color;void main() { gl_FragColor = v_Color; }
"""m = wxgl.Model(wxgl.TRIANGLE_STRIP, vshader, fshader) # 实例化模型,设置绘图方法和着色器源码
m.set_vertex('a_Position', [[-1,1,0],[-1,-1,0],[1,1,0],[1,-1,0]]) # 4个顶点坐标
m.set_color('a_Color', [[1,0,0],[0,1,0],[0,0,1],[0,1,1]]) # 4个顶点的颜色
m.set_proj_matrix('u_ProjMatrix') # 设置投影矩阵
m.set_view_matrix('u_ViewMatrix') # 设置视点矩阵
m.set_model_matrix('u_ModelMatrix') # 设置模型矩阵glt.model(m) # 添加模型到画布
glt.show() # 显示画布

弹出窗口显式如下。

4 进阶应用

4.1 颜色

WxGL支持十六进制的颜色、预定义的颜色,以及浮点型元组、列表或numpy数组表示的RGB/RGBA颜色。下面这些写法都是合法的。

  • ‘#F3D6E9’, ‘#de3f80’
  • ‘#C6F’, ‘#ab8’
  • ‘red’, ‘blue’, ‘cyan’
  • (1.0, 0.8, 0.2), (1.0, 0.8, 0.2, 1.0)
  • [1.0, 0.8, 0.2], [1.0, 0.8, 0.2, 1.0]
  • numpy.array([1.0, 0.8, 0.2]), numpy.array([1.0, 0.8, 0.2, 1.0])

预定义的颜色共计148种。函数wxgl.color_list返回预定义的颜色列表,函数wxgl.color_help返回预定义的颜色中英文对照表。

  • aliceblue - 爱丽丝蓝
  • antiquewhite - 古董白
  • aqua - 青
  • aquamarine - 碧绿
  • azure - 青白
  • beige - 米
  • bisque - 橘黄
  • black - 黑
  • blanchedalmond - 杏仁白
  • blue - 蓝
  • blueviolet - 蓝紫
  • brown - 褐
  • burlywood - 硬木褐
  • cadetblue - 军服蓝
  • chartreuse - 查特酒绿
  • chocolate - 巧克力
  • coral - 珊瑚红
  • cornflowerblue - 矢车菊蓝
  • cornsilk - 玉米穗黄
  • crimson - 绯红
  • cyan - 青
  • darkblue - 深蓝
  • darkcyan - 深青
  • darkgoldenrod - 深金菊黄
  • darkgray - 暗灰
  • darkgreen - 深绿
  • darkgrey - 暗灰
  • darkkhaki - 深卡其
  • darkmagenta - 深品红
  • darkolivegreen - 深橄榄绿
  • darkorange - 深橙
  • darkorchid - 深洋兰紫
  • darkred - 深红
  • darksalmon - 深鲑红
  • darkseagreen - 深海藻绿
  • darkslateblue - 深岩蓝
  • darkslategray - 深岩灰
  • darkslategrey - 深岩灰
  • darkturquoise - 深松石绿
  • darkviolet - 深紫
  • deeppink - 深粉
  • deepskyblue - 深天蓝
  • dimgray - 昏灰
  • dimgrey - 昏灰
  • dodgerblue - 湖蓝
  • firebrick - 火砖红
  • floralwhite - 花卉白
  • forestgreen - 森林绿
  • fuchsia - 洋红
  • gainsboro - 庚氏灰
  • ghostwhite - 幽灵白
  • gold - 金
  • goldenrod - 金菊
  • gray - 灰
  • green - 绿
  • greenyellow - 黄绿
  • grey - 灰
  • honeydew - 蜜瓜绿
  • hotpink - 艳粉
  • indianred - 印度红
  • indigo - 靛蓝
  • ivory - 象牙白
  • khaki - 卡其
  • lavender - 薰衣草紫
  • lavenderblush - 薰衣草红
  • lawngreen - 草坪绿
  • lemonchiffon - 柠檬绸黄
  • lightblue - 浅蓝
  • lightcoral - 浅珊瑚红
  • lightcyan - 浅青
  • lightgoldenrodyellow - 浅金菊黄
  • lightgray - 亮灰
  • lightgreen - 浅绿
  • lightgrey - 亮灰
  • lightpink - 浅粉
  • lightsalmon - 浅鲑红
  • lightseagreen - 浅海藻绿
  • lightskyblue - 浅天蓝
  • lightslategray - 浅岩灰
  • lightslategrey - 浅岩灰
  • lightsteelblue - 浅钢青
  • lightyellow - 浅黄
  • lime - 绿
  • limegreen - 青柠绿
  • linen - 亚麻
  • magenta - 洋红
  • maroon - 栗
  • mediumaquamarine - 中碧绿
  • mediumblue - 中蓝
  • mediumorchid - 中洋兰紫
  • mediumpurple - 中紫
  • mediumseagreen - 中海藻绿
  • mediumslateblue - 中岩蓝
  • mediumspringgreen - 中嫩绿
  • mediumturquoise - 中松石绿
  • mediumvioletred - 中紫红
  • midnightblue - 午夜蓝
  • mintcream - 薄荷乳白
  • mistyrose - 雾玫瑰红
  • moccasin - 鹿皮
  • navajowhite - 土著白
  • navy - 藏青
  • oldlace - 旧蕾丝白
  • olive - 橄榄
  • olivedrab - 橄榄绿
  • orange - 橙
  • orangered - 橘红
  • orchid - 洋兰紫
  • palegoldenrod - 白金菊黄
  • palegreen - 白绿
  • paleturquoise - 白松石绿
  • palevioletred - 白紫红
  • papayawhip - 番木瓜橙
  • peachpuff - 粉朴桃
  • peru - 秘鲁红
  • pink - 粉
  • plum - 李紫
  • powderblue - 粉末蓝
  • purple - 紫
  • rebeccapurple - 丽贝卡紫
  • red - 红
  • rosybrown - 玫瑰褐
  • royalblue - 品蓝
  • saddlebrown - 鞍褐
  • salmon - 鲑红
  • sandybrown - 沙褐
  • seagreen - 海藻绿
  • seashell - 贝壳白
  • sienna - 土黄赭
  • silver - 银
  • skyblue - 天蓝
  • slateblue - 岩蓝
  • slategray - 岩灰
  • slategrey - 岩灰
  • snow - 雪白
  • springgreen - 春绿
  • steelblue - 钢青
  • tan - 日晒褐
  • teal - 鸭翅绿
  • thistle - 蓟紫
  • tomato - 番茄红
  • turquoise - 松石绿
  • violet - 紫罗兰
  • wheat - 麦
  • white - 白
  • whitesmoke - 烟雾白
  • yellow - 黄
  • yellowgreen - 暗黄绿

4.2 颜色映射

将数据值域范围内的不同数值映射为不同的颜色,是数据可视化的常用手段。WxGL的颜色映射表继承自Matplotlib库。

尽管WxGL提供了颜色映射函数wxgl.cmap,但通常情况下用户只需要提供一个颜色映射表名而无需显式地调用该函数——除非用户使用定制的着色器绘制模型。

WxGL提供了7大类共计82种颜色映射表,每种映射表名字之后附加’_r’,可以获得该映射表的反转版本。函数wxgl.cmap_list返回颜色映射方案列表,函数wxgl.cmap_help返回颜色映射方案分类列表。

  • 视觉均匀类:viridis, plasma, inferno, magma, cividis
  • 单调变化类:Greys, Purples, Blues, Greens, Oranges, Reds, YlOrBr, YlOrRd, OrRd, PuRd, RdPu, BuPu, GnBu, PuBu, YlGnBu, PuBuGn, BuGn, YlGn
  • 近似单调类:binary, gist_yarg, gist_gray, gray, bone, pink, spring, summer, autumn, winter, cool, Wistia, hot, afmhot, gist_heat, copper
  • 亮度发散类:PiYG, PRGn, BrBG, PuOr, RdGy, RdBu, RdYlBu, RdYlGn, Spectral, coolwarm, bwr, seismic
  • 颜色循环类:twilight, twilight_shifted, hsv
  • 分段阶梯类:Pastel1, Pastel2, Paired, Accent, Dark2, Set1, Set2, Set3, tab10, tab20, tab20b, tab20c
  • 专属定制类:flag, prism, ocean, gist_earth, terrain, gist_stern, gnuplot, gnuplot2, CMRmap, cubehelix, brg, gist_rainbow, rainbow, jet, nipy_spectral, gist_ncar

4.3 视点系统

和OpenGL的习惯一致,WxGL采用右手坐标系:x轴的正方向指向屏幕右侧,y轴正方向只想屏幕上方,z轴正方向指向屏幕外部。

视点坐标系原点始终在屏幕中心。默认视点坐标系原点在世界坐标系的(0, 0, 0)位置,即视点坐标系和世界坐标系保持一致。

模型空间的xyz轴动态范围均为为(-1, 1),相机在z轴正方向(0, 0, 5)位置,视锥体的左右下上前后面分别为(-1, 1, -1, 1, 3, 1000)。如果模型的尺寸小于或超出xyz轴动态范围,则相机位置和视锥体自动按比例缩放——除非将模型的inside参数设置为False,视点坐标系原点也会自动调整到模型的几何中心。

4.4 画布参数

以下面的方式导入wxgl.glplot子模块之后,默认的画布就已经被创建,一个和画布同样大小的子图也被同步创建。用户可以直接在此画布的当前子图上绘制3D模型。

import wxgl.glplot as glt

此时,画布默认的尺寸(size)为1152x648像素,默认的背景色(style)是太空蓝,相机默认的投影方式(proj)为透视投影,默认的的方位角(azim)和高度角(elev)都是0°,默认的的方位角限位器(azim_range)和高度角限位器(elev_range)都是-180°~180°。

方位角是相机位置与视点坐标系原点连线在xOz平面上的投影和z轴正方向的夹角,遵从右手定则(右手握拳,伸开拇指,拇指指向y轴正方向,其余四指指向方位角的正方向)。高度角是相机位置与视点坐标系原点连线与xOz平面的夹角,相机俯视时高度角为正。

方位角限位器(azim_range)和高度角限位器(elev_range)用来设置相机的方位角和高度角的动态范围。

通常显卡对于OpenGL都有很好的兼容性,因此画布默认开启反走样(smooth)。如果模型渲染出现非期望的网格,请尝试关闭反走样(将smooth设置为False)。

在调用wxgl.glplot其他函数之前,使用wxgl.glplot.figure可以改变画布的默认参数。例如:

glt.figure(size=(1600,960), azim=30, elev=20, elev_range=(-90,90), smooth=False)

4.5 UI隐藏的技巧

运行wxgl.glplot.show函数后,在弹出的UI窗口中,可以做如下操作。

  • 拖拽鼠标可以改变相机的方位角和高度角,滚动滚轮可以缩放投影面
  • 按住Ctr键拖拽鼠标,可以改变视点坐标系原点
  • 按住Ctr滚动滚轮,可以改变相机与视点坐标系原点之间的距离
  • 按Esc键,恢复各视区初始的相机姿态
  • 在模型上移动鼠标,底部状态栏显式视点坐标,以及相机位置、方位角、高度角
  • 在模型上点击鼠标邮件,模型在高亮和正常之间切换,表示该模型被选中或放弃选中,同时底部状态栏显式模型选中数量
  • 如有模型被选中,点击“显式/隐藏”,隐藏所有被选中的模型,同时选中状态被清除
  • 如无模型被选中,点击“显式/隐藏”,显示所有隐藏的模型
  • 如果使用了模型动画函数或相机巡航函数,点击“参数设置”按钮选择文件格式后,点击“播放动画”按钮,可以生成GIF或视频文件

4.6 子图布局

子图布局函数wxgl.glplot.subplot接受整数参数,字符串参数,也接受4元组参数。

import numpy as np
import wxgl
import wxgl.glplot as gltglt.figure(elev=-20)glt.subplot(221) # 整数参数,表示两行两列的第1个位置(左上)
glt.title('独立三角面方法:isolate', size=80)
vs = np.array([[-1,1,1],[-1,-1,1],[1,1,1],[1,-1,1],[1,1,-1],[1,-1,-1],[-1,1,-1],[-1,-1,-1]])
indices = np.array([0,1,3,0,3,2,2,3,5,2,5,4,4,5,7,4,7,6,6,7,1,6,1,0])
color = np.array([[1,0,0],[1,0,1],[1,1,1],[1,1,0],[0,1,1],[0,1,0],[0,0,0],[0,0,1]])
glt.surface(vs, color=color, indices=indices, method='isolate')
glt.yrange((-1.2, 1.2))glt.subplot('223') # 字符串参数,表示两行两列的第3个位置(左下)
glt.title('带状三角面方法:strip', size=80)
vs = np.array([[-1,1,1],[-1,-1,1],[1,1,1],[1,-1,1],[1,1,-1],[1,-1,-1],[-1,1,-1],[-1,-1,-1],[-1,1,1],[-1,-1,1]])
color = np.array([[1,0,0],[1,0,1],[1,1,1],[1,1,0],[0,1,1],[0,1,0],[0,0,0],[0,0,1],[1,0,0],[1,0,1]])
glt.surface(vs, color=color, method='strip')
glt.yrange((-1.2, 1.2))glt.subplot((0.5, 0, 0.5, 1)) # 子图左下角坐标(0.5, 0),宽度0.5, 高度1,即窗口右半部
glt.title('连续三角面方法:fan')
theta = np.radians(np.linspace(30, 150, 21))
xs, ys, zs = 2*np.cos(theta), 2*np.sin(theta)-0.5, np.zeros(21)
zs[1::2] += 0.2
vs = np.vstack(((0,-0.8,0), np.stack((xs,ys-0.8,zs), axis=1)))
glt.surface(vs, method='fan', light=wxgl.SphereLight(9), transform=lambda duration:((0, 1, 0, (0.05*duration)%360),))
vs = np.vstack(((0,1.2,0), np.stack((xs,ys+1.2,zs), axis=1)))
glt.surface(vs, method='fan', light=wxgl.SphereLight(9), transform=lambda duration:((0, 1, 0, -(0.05*duration)%360),))glt.show()

弹出窗口显式如下。

4.7 多个Colorbar

在一个子图上,可以放置多个Colorbar,位置由Colorbar函数wxgl.glplot.colorbar的loc参数指定。loc参数只有’right’和’bottom’两个选项,即子图右侧和子图底部。

import numpy as np
import wxgl.glplot as gltvs = np.random.random((300, 3))*2-1
color = np.random.random(300)
size = np.linalg.norm(vs, axis=1)
size = 30 * (size - size.min()) / (size.max() - size.min())glt.title('随机生成的300个点')
glt.point(vs, color, cm='jet', alpha=0.8, size=size)
glt.colorbar('jet', [0, 100], loc='right', subject='高度', endpoint=True)
glt.colorbar('hsv', [3, 8], loc='right', subject='厚度', endpoint=True)
glt.colorbar('Paired', [-50, 50], loc='bottom', subject='温度', margin_left=5)
glt.colorbar('rainbow', [0, 240], loc='bottom', subject='速度', margin_right=5)
glt.show()

弹出窗口显式如下。

4.8 定制轴名称和轴刻度

坐标网格和坐标轴刻度函数wxgl.glplot.colorbar提供了若干关键字参数,用来定制坐标网格和坐标轴刻度。比如参数xlabel/ylabel/zlabel用于设置坐标轴名称,参数xd/yd/zd用于调整标轴标注密度,参数xf/yf/zf则用于格式化坐标轴的标注。

xf/yf/zf缺省默认以str函数作为格式化函数,用户可以通过自定义函数或lambda函数定制刻度文本的样式。

import numpy as np
import wxgl.glplot as gltz, x = np.mgrid[1:-1:100j,-1:1:100j]
y = x*x + z*z
glt.mesh(x, y, z, color=y, cm='hsv')xf = lambda x:'%0.1f°'%(x*50)
yf = lambda y:'%0.3fKm'%yglt.grid(xlabel='经度', ylabel='高度', zlabel='纬度', yd=2, xf=xf, yf=yf)
glt.show()

弹出窗口显式如下。

4.9 透明和不透明模型

对于(半)透明模型,需要显式地设置其不透明参数opacity为False。WxGL在渲染(半)透明模型时自动关闭深度缓冲区并按模型深度从深至浅依次渲染。(半)透明模型深度由该模型所有顶点的z值的均值决定。3D文本模型作为(半)透明模型,无需设置opacity参数。

import numpy as np
import wxgl.glplot as gltglt.cube((0,0,0), 1.2)
glt.cylinder((-1,0,0), (1,0,0), 0.5, color=(1.0,1.0,0.1,0.7), opacity=False)
glt.text3d('WxGL', [[-1,1,0.5], [-1,-1,0.5], [1,1,0.5], [1,-1,0.5]], color='blue', size=128)
glt.text3d('WxGL', [[-1,1,-0.5], [-1,-1,-0.5], [1,1,-0.5], [1,-1,-0.5]], color='cyan', size=128)
glt.show()

弹出窗口显式如下。

4.10 渲染面剔除

由三角面或四角面描述的曲面有前后两个面,三角面或四角面的顶点按逆时针排序的为前面,反之为后面。WxGL默认开启双面渲染。模型的cull参数可以设置单面渲染,剔除无需渲染的一面。

import numpy as np
import wxgl.glplot as glt#    v6----- v4
#   /|      /|
#  v0------v2|
#  | |     | |
#  | |v7---|-|v5
#  |/      |/
#  v1------v3vs = np.array([[-1.2,1,1.2],[-1.2,-1,1.2],[1.2,1,1.2],[1.2,-1,1.2],[1.2,1,-1.2],[1.2,-1,-1.2],[-1.2,1,-1.2],[-1.2,-1,-1.2]])
color = np.array([[1,0,0],[1,0,1],[1,1,1],[1,1,0],[0,1,1],[0,1,0],[0,0,0],[0,0,1]])glt.subplot(121)
glt.title('剔除前面,仅渲染背面')indices = np.array([0,1,3,2,2,3,5,4,4,5,7,6,6,7,1,0,0,2,4,6,1,7,5,3])
glt.quad(vs, color=color, method='isolate', indices=indices, cull='front')
glt.grid()glt.subplot(122)
glt.title('剔除背面,仅渲染前面')indices = np.array([0,1,2,3,4,5,6,7,0,1])
vs = vs[indices]
color = color[indices]
glt.quad(vs, color=color, method='strip', cull='back')
glt.grid()glt.show()

弹出窗口显式如下。

4.11 渲染面填充

fill参数可以设置由三角面或四角面描述的曲面模型的填充方式,缺省默认值为None,表示使用当前设置,True表示填充,False表示无填充。如果有必要,还可以尝试fill参数的其他选项:‘FCBC’|‘FLBC’|‘FCBL’|‘FLBL’。

import numpy as np
import wxgl.glplot as gltz, x = np.mgrid[-2:2:50j,-2:2:50j]
y = 2*x*np.exp(-x**2-z**2)glt.mesh(x, y, z, color=y, cm='hsv', fill='FLBC')
glt.show()

弹出窗口显式如下。

4.12 幻灯片播放

调用wxgl.glplot.show函数后,WxGL会启动一个内部计时器,记录以毫秒为单位的渲染时长。模型的slider参数接受一个以WxGL内部计时器为参数的函数,该函数返回一个布尔值,决定该模型是否显示。下面的例子,通过slider参数实现模型闪烁效果(别忘记点击“播放”按钮)。

import numpy as np
import wxgl.glplot as gltsf = lambda t : bool((t//500)%2)glt.cone((0,1,0), (0,-1,0), 0.8, slide=sf)
glt.show()

弹出窗口显式如下。

4.13 模型变换

调用wxgl.glplot.show函数后,WxGL会启动一个内部计时器,记录以毫秒为单位的渲染时长。通过transform参数传递一个变换函数给模型,可以实现复杂的模型动画。传递给transform的函数,以WxGL内部计时器为参数,返回由旋转、平移和缩放任意组合的元组。

  • 旋转用4元组描述,前3个元素为旋转向量,第4个元素为旋转角度,旋转方向遵从右手定则
  • 平移用3元组描述,3个元素分别表示模型在x/y/z轴上的平移距离
  • 缩放用一个浮点型数值表示

下面的代码在坐标系原点绘制了一大一小两个网格形式的圆球,使用模型变换函数实现了两个球的自转和小球绕大球的公转。

import numpy as np
import wxgl.glplot as glttf_1 = lambda t : ((0, 1, 0, (0.01*t)%360),) # 大球自转速度10°/sdef tf_2(t):theta = -(0.05*t)%360 # 小球公转和自转都是-50°/srotate = (0, 1, 0, theta) # 小球自转theta = np.radians(theta) # 角度转弧度r = 1 # 小球公转半径shift = (r*np.cos(theta), 0, -r*np.sin(theta)) # 小球公转return (rotate, shift)glt.uvsphere((0,0,0), 0.8, fill=False, transform=tf_1)
glt.uvsphere((0,0,0), 0.2, fill=False, transform=tf_2)glt.show()

弹出窗口显式如下。

4.14 相机巡航

wxgl.glplot的每个子图各自拥有独立的相机,设置相机巡航是对子图对象(Axes)的操作,影响到子图内的所有模型。相机巡航函数wxgl.glplot.cruise接受以WxGL内部计时器为参数的函数,该函数返回一个字典,字典可能的键包括:

  • azim - 相机方位角
  • elev - 相机高度角
  • dist - 相机与视点之间的距离

下面的代码演示了相机巡航和模型动画之间的区别。

import wxgl
import wxgl.glplot as gltcf = lambda t : {'azim':(-0.05*t)%360, 'dist':3.5+5*(t%1000)/1000}
glt.cruise(cf)
glt.uvsphere((0,0,0), 1, fill=False)glt.show()

弹出窗口显式如下。

4.15 纹理

WxGL的纹理类wxgl.Texture支持1D纹理、2D纹理、3D纹理和2D纹理数组,接受图片文件和8位无符号整形数组作为纹理资源,允许用户定制纹理滤波参数、S/T/R方向的铺贴方式,还可选择是否在x/y方向反转纹理图像。

下面的代码演示了2D纹理的应用方法,所有参数均使用默认值。代码中的纹理图片在GitHub本项目的example路径下。

import numpy as np
import wxgl
import wxgl.glplot as glttx = wxgl.Texture('res/earth.jpg')r = 1
lats, lons = np.mgrid[90:-90:91j, 0:360:181j]
ys = r * np.sin(np.radians(lats))
xs = r * np.cos(np.radians(lats)) * np.cos(np.radians(lons))
zs = -r * np.cos(np.radians(lats)) * np.sin(np.radians(lons))glt.mesh(xs, ys, zs, texture=tx)
glt.show()

弹出窗口显式如下。

4.16 定制着色器

WxGL的模型是wxgl.Model类的实例,wxgl.glplot.model函数可以绘制wxgl.Model实例。

这段代码绘制了一个球环,球环的颜色来自1D纹理,球环上每个顶点的纹理坐标是该点法向量和光线向量的点积。

import numpy as np
import wxgl
import wxgl.glplot as gltvshader = """#version 330 corein vec4 a_Position;in vec3 a_Normal;uniform mat4 u_ProjMatrix;uniform mat4 u_ViewMatrix;uniform mat4 u_ModelMatrix;out vec3 v_Normal;void main() { gl_Position = u_ProjMatrix * u_ViewMatrix * u_ModelMatrix * a_Position; mat4 NormalMatrix = transpose(inverse(u_ModelMatrix));v_Normal = normalize(vec3(NormalMatrix * vec4(a_Normal, 1.0)));}
"""fshader = """#version 330 coreuniform vec3 u_LightDir;uniform sampler1D u_Texture;in vec3 v_Normal;void main() { vec3 lightDir = normalize(u_LightDir); float diffuseCos = max(0.0, dot(lightDir, v_Normal));//float diffuseCos = (dot(lightDir, v_Normal) + 1.0) / 2;gl_FragColor = texture1D(u_Texture, diffuseCos);}
"""r, R = 1, 3
gv, gu = np.mgrid[180:-180:181j, 0:360:181j]
gv, gu = np.radians(gv), np.radians(gu)
xs = (R + r * np.cos(gv)) * np.cos(gu)
zs = -(R + r * np.cos(gv)) * np.sin(gu)
ys = r * np.sin(gv)vs = np.dstack((xs, ys, zs))
rows, cols = vs.shape[:2]
vs = vs.reshape(-1, 3)idx = np.arange(rows*cols).reshape(rows, cols)
idx_a, idx_b, idx_c, idx_d = idx[:-1,:-1], idx[1:,:-1], idx[1:,1:], idx[:-1, 1:]
idx = np.int32(np.dstack((idx_a, idx_b, idx_d, idx_c, idx_d, idx_b)).ravel())vs = vs[idx]
a, b, c = vs[::3], vs[1::3], vs[2::3]
n = np.repeat(np.cross(b-a, a-c), 3, axis=0)normal = np.zeros((rows*cols, 3), dtype=np.float32)
idx_arg = np.argsort(idx)
rise = np.where(np.diff(idx[idx_arg])==1)[0] + 1
rise = np.hstack((0,rise,len(idx)))for i in range(rows*cols):normal[i] = np.sum(n[idx_arg[rise[i]:rise[i+1]]], axis=0)normal = normal.reshape(rows, cols, -1)
normal[0] += normal[-1]
normal[-1] = normal[0]
normal[:,0] += normal[:,-1]
normal[:,-1] = normal[:,0]
normal = normal.reshape(-1, 3)[idx]im = np.uint8(np.stack((np.arange(256), np.zeros(256), np.zeros(256)), axis=1))
texture = wxgl.Texture(im, ttype=wxgl.TEXTURE_1D, s_tile=wxgl.GL_CLAMP_TO_EDGE)m = wxgl.Model(wxgl.TRIANGLES, vshader, fshader, visible=True, opacity=True, inside=True)
m.set_vertex('a_Position', vs)
m.set_normal('a_Normal', normal)
m.set_argument('u_LightDir', (-5,-1,-5))
m.add_texture('u_Texture', texture)
m.set_proj_matrix('u_ProjMatrix')
m.set_view_matrix('u_ViewMatrix')
m.set_model_matrix('u_ModelMatrix')
m.set_cull_mode('back')glt.figure(elev=10)
glt.title('以法向量和光线向量的点积作为1D纹理坐标')
glt.model(m)
glt.show()

弹出窗口显式如下。

4.17 三维重建

wxgl.glplot.isosurface实现了基于MarchingCube算法的三维重建。

下面例子中使用GitHub本项目example路径下的头部CT图片完成头部三维重建。

import numpy as np
from PIL import Image
import wxgl
import wxgl.glplot as gltglt.title('基于头部CT的三维重建演示')
data = np.stack([np.flipud(np.fliplr(np.array(Image.open('res/headCT/head%d.png'%i)))) for i in range(109)], axis=0)
data = np.rollaxis(data, 2, 1)[...,3]
glt.isosurface(data, data.max()/8, color='#CCC6B0', x=(-0.65,0.65), y=(-1, 1), z=(-1, 1), light=wxgl.SkyLight())
glt.grid()glt.show()

弹出窗口显式如下。

4.18 静默生成GIF或视频文件

除了在UI上操作按钮可以生成GIF或视频文件,wxgl.glplot提供了静默生成GIF或视频文件的函数wxgl.glplot.capture。

运行下面这段代码,将会生成每秒50帧,共计300帧的mp4格式的视频文件。

import numpy as np
import wxgl.glplot as glttf_1 = lambda t:((0, 1, 0, (0.01*t)%360),) # 大球自转速度10°/sdef tf_2(t):theta = -(0.05*t)%360 # 小球公转和自转都是-50°/srotate = (0, 1, 0, theta) # 小球自转theta = np.radians(theta) # 角度转弧度r = 1 # 小球公转半径shift = (r*np.cos(theta), 0, -r*np.sin(theta)) # 小球公转return (rotate, shift)glt.uvsphere((0,0,0), 0.8, fill=False, transform=tf_1)
glt.uvsphere((0,0,0), 0.2, fill=False, transform=tf_2)glt.capture(r'd:\demo.mp4', fps=50, fn=300)

5 与wxPython集成

场景类wxgl.Scene是wx.glcanvas.GLCanvas的派生类。作为容器,场景对象通过调用自身的add_region方法创建视区wxgl.Region,视区对象提供模型绘制的方法。

5.1 常规视区

这段代码演示了wx.Frame和wxgl.Scene的集成方法。调用wxgl.Scene.add_region方法添加视区(wxgl.Region对象),而绘制网格曲面(mesh)和绘制坐标网格(grid)都是wxgl.Region对象的方法。

import wx
import numpy as np
import wxglclass mainFrame(wx.Frame):"""程序主窗口类,继承自wx.Frame"""def __init__(self):"""构造函数"""wx.Frame.__init__(self, None, -1, 'WxGL项目演示', style=wx.DEFAULT_FRAME_STYLE)self.Maximize()self.SetBackgroundColour(wx.Colour(240,240,240))self.scene = wxgl.Scene(self) # 创建场景self.reg = self.scene.add_region((0,0,1,1)) # 添加视区self.draw_mesh()def draw_mesh(self):"""网格模型"""# 生成球面网格数据lats, lons = np.mgrid[90:-90:91j, -180:180:180j]lats, lons = np.radians(lats), np.radians(lons)zs = np.cos(lats)*np.cos(lons)xs = np.cos(lats)*np.sin(lons)ys = np.sin(lats)# 生成纹理texture = wxgl.Texture('res/earth.jpg') self.reg.mesh(xs, ys, zs, texture=texture) # 绘制网格面self.reg.grid() # 绘制坐标网格if __name__ == "__main__":app = wx.App()frame = mainFrame()frame.Show(True)app.MainLoop()

弹出窗口显式如下。

5.2 锁定视区

一个场景可以创建多个视区。标题或Colorbar,可以绘制在一个锁定的(fixed)视区上——模型不能缩放,也不响应拖拽操作。

import wx
import numpy as np
import wxglclass mainFrame(wx.Frame):"""程序主窗口类,继承自wx.Frame"""def __init__(self):"""构造函数"""wx.Frame.__init__(self, None, -1, 'WxGL项目演示', style=wx.DEFAULT_FRAME_STYLE)self.Maximize()self.SetBackgroundColour(wx.Colour(240,240,240))self.scene = wxgl.Scene(self) # 创建场景self.reg = self.scene.add_region((0,0,0.8,1)) # 添加视区self.cb = self.scene.add_region((0.8,0,0.2,1), fixed=True) # 添加fixed视区self.draw_mesh()self.draw_colorbar()def draw_mesh(self):"""网格模型"""# 生成球面网格数据lats, lons = np.mgrid[90:-90:91j, -180:180:180j]lats, lons = np.radians(lats), np.radians(lons)zs = np.cos(lats)*np.cos(lons)xs = np.cos(lats)*np.sin(lons)ys = np.sin(lats)# 生成纹理texture = wxgl.Texture('res/earth.jpg') self.reg.mesh(xs, ys, zs, texture=texture) # 绘制网格面self.reg.grid() # 绘制坐标网格def draw_colorbar(self):"""Colorbar"""box = np.array([[-0.9,2],[-0.9,-2.5],[-0.5,2],[-0.5,-2.5]])self.cb.colorbar('hsv', (-50, 100), box, subject='温度')if __name__ == "__main__":app = wx.App()frame = mainFrame()frame.Show(True)app.MainLoop()

弹出窗口显式如下。

6 API Reference

6.1 constant

除了常规的模块和版本信息外,WxGL内置了常用的OpenGL常量。

  • wxgl.name

    模块名。

  • wxgl.version

    版本号。

  • wxgl.version_info

    版本信息。

  • wxgl.VERTEX_SHADER

    OpenGL.GL.GL_VERTEX_SHADER

  • wxgl.TESS_CONTROL_SHADER

    OpenGL.GL.GL_TESS_CONTROL_SHADER

  • wxgl.TESS_EVALUATION_SHADER

    OpenGL.GL.GL_TESS_EVALUATION_SHADER

  • wxgl.GEOMETRY_SHADER

    OpenGL.GL.GL_GEOMETRY_SHADER

  • wxgl.FRAGMENT_SHADER

    OpenGL.GL.GL_FRAGMENT_SHADER

  • wxgl.COMPUTE_SHADER

    OpenGL.GL.GL_COMPUTE_SHADER

  • wxgl.POINTS

    OpenGL.GL.GL_POINTS

  • wxgl.LINES

    OpenGL.GL.GL_LINES

  • wxgl.LINE_STRIP

    OpenGL.GL.GL_LINE_STRIP

  • wxgl.LINE_LOOP

    OpenGL.GL.GL_LINE_LOOP

  • wxgl.TRIANGLES

    OpenGL.GL.GL_TRIANGLES

  • wxgl.TRIANGLE_STRIP

    OpenGL.GL.GL_TRIANGLE_STRIP

  • wxgl.TRIANGLE_FAN

    OpenGL.GL.GL_TRIANGLE_FAN

  • wxgl.QUADS

    OpenGL.GL.GL_QUADS

  • wxgl.QUAD_STRIP

    OpenGL.GL.GL_QUAD_STRIP

  • wxgl.TEXTURE_1D

    OpenGL.GL.GL_TEXTURE_1D

  • wxgl.TEXTURE_1D_ARRAY

    OpenGL.GL.GL_TEXTURE_1D_ARRAY

  • wxgl.TEXTURE_2D

    OpenGL.GL.GL_TEXTURE_2D

  • wxgl.TEXTURE_2D_ARRAY

    OpenGL.GL.GL_TEXTURE_2D_ARRAY

  • wxgl.TEXTURE_3D

    OpenGL.GL.GL_TEXTURE_3D

  • wxgl.TEXTURE_RECTANGLE

    OpenGL.GL.GL_TEXTURE_RECTANGLE

  • wxgl.TEXTURE_CUBE_MAP

    OpenGL.GL.GL_TEXTURE_CUBE_MAP

  • wxgl.TEXTURE_CUBE_MAP_ARRAY

    OpenGL.GL.GL_TEXTURE_CUBE_MAP_ARRAY

  • wxgl.TEXTURE_BUFFER

    OpenGL.GL.GL_TEXTURE_BUFFER

  • wxgl.NEAREST

    OpenGL.GL.GL_NEAREST

  • wxgl.LINEAR

    OpenGL.GL.GL_LINEAR

  • wxgl.NEAREST_MIPMAP_NEAREST

    OpenGL.GL.GL_NEAREST_MIPMAP_NEAREST

  • wxgl.LINEAR_MIPMAP_NEAREST

    OpenGL.GL.GL_LINEAR_MIPMAP_NEAREST

  • wxgl.NEAREST_MIPMAP_LINEAR

    OpenGL.GL.GL_NEAREST_MIPMAP_LINEAR

  • wxgl.LINEAR_MIPMAP_LINEAR

    OpenGL.GL.GL_LINEAR_MIPMAP_LINEAR

  • wxgl.REPEAT

    OpenGL.GL.GL_REPEAT

  • wxgl.MIRRORED_REPEAT

    OpenGL.GL.GL_MIRRORED_REPEAT

  • wxgl.CLAMP_TO_EDGE

    OpenGL.GL.GL_CLAMP_TO_EDGE

6.2 util

WxGL函数。

6.2.1 wxgl.font_list

wxgl.font_list()

返回可用字体列表。无参数。

6.2.2 wxgl.color_list

wxgl.color_list()

返回可用颜色列表。无参数。

6.2.3 wxgl.color_help

wxgl.color_help()

返回可用颜色中英文对照表。无参数。

6.2.4 wxgl.cmap_list

wxgl.cmap_list()

返回颜色映射方案列表。无参数。

6.2.5 wxgl.cmap_help

wxgl.cmap_help()

返回颜色映射方案分类列表。无参数。

6.2.6 wxgl.cmap

wxgl.cmap(data, cm, invalid=np.nan, invalid_c=(0,0,0,0), drange=None, alpha=None, drop=False)

数值映射到颜色。参数说明如下:

data        - 数据
cm          - 调色板
invalid     - 无效数据的标识
invalid_c   - 无效数据的颜色
drange      - 数据动态范围,None表示使用data的动态范围
alpha       - 透明度,None表示不改变当前透明度
drop        - 舍弃alpha通道

6.2.7 wxgl.text2image

wxgl.glplot.text2image(text, size, color, family=None, weight=‘normal’)

文本转图像。参数说明如下:

text        - 文本字符串
size        - 字号,整型,默认32
color       - 文本颜色,浮点型元组、列表或numpy数组,值域范围[0,1]
family      - 字体,None表示当前默认的字体
weight      - 字体的浓淡:'normal'-正常(默认),'light'-轻,'bold'-重

6.3 light

WxGL光照情景模式类。

6.3.1 wxgl.BaseLight

wxgl.BaseLight(ambient=(1.0,1.0,1.0))

环境光照情景模式。参数说明如下:

ambient     - 环境光颜色,默认(1.0,1.0,1.0)

6.3.2 wxgl.SunLight

wxgl.SunLight(direction=(-5.0,-1.0,-5.0), color=(1.0,1.0,1.0), ambient=(0.3,0.3,0.3), **kwds)

太阳光照情景模式。参数说明如下:

direction   - 太阳光方向,默认(1.0,1.0,1.0)
color       - 太阳光颜色,默认(1.0,1.0,1.0)
ambient     - 环境光颜色,默认(1.0,1.0,1.0)
kwds        - 关键字参数stray           - 是否存在杂散光:默认Falseroughness       - 粗糙度(1-镜面反射系数):值域范围[0.0,1.0],默认0.2metalness       - 金属度(1-漫反射系数):值域范围[0.0,1.0],默认0.2pellucidness    - 透光度:值域范围[0.0,1.0],默认0.2shininess       - 光洁度(高光系数):值域范围(0.0,1.0],默认0.5

6.3.3 wxgl.LampLight

wxgl.LampLight(position=(5.0,1.0,5.0), color=(1.0,1.0,1.0), ambient=(0.3,0.3,0.3), **kwds)

定位光照情景模式。参数说明如下:

position    - 灯光位置,默认(5.0,1.0,5.0)
color       - 灯光颜色,默认(1.0,1.0,1.0)
ambient     - 环境光颜色,默认(1.0,1.0,1.0)
kwds        - 关键字参数stray           - 是否存在杂散光:默认Falseroughness       - 粗糙度(1-镜面反射系数):值域范围[0.0,1.0],默认0.2metalness       - 金属度(1-漫反射系数):值域范围[0.0,1.0],默认0.2pellucidness    - 透光度:值域范围[0.0,1.0],默认0.2shininess       - 光洁度(高光系数):值域范围(0.0,1.0],默认0.5

6.3.4 wxgl.SkyLight

wxgl.SkyLight(direction=(0.0,-1.0,0.0), sky=(1.0,1.0,1.0), ground=(0.5,0.5,0.5))

户外光照情景模式。参数说明如下:

position    - 主光方向,默认(0.0,-1.0,0.0)
sky         - 天光颜色,默认(1.0,1.0,1.0)
ground      - 地光颜色,默认(0.5,0.5,0.5)

6.3.5 wxgl.SphereLight

wxgl.SphereLight(key=0, factor=0.8)

球谐光照情景模式。参数说明如下:

key         - 情景序号,0~9,默认0
factor      - 反射衰减因子,值域范围(0.0,1.0],默认0.8

6.4 wxgl.Model

wxgl.Model(gltype, vshader, fshader, visible=True, opacity=True, inside=True, sprite=False)

WxGL模型类。参数说明如下:

gltype      - GL基本图元
vshader     - 顶点着色器源码
fshader     - 片元着色器源码
visible     - 模型可见性
opacity     - 模型不透明属性
inside      - 模型显示在视锥体内
sprite      - 是否开启点精灵

6.4.1 wxgl.Model.add_shader

wxgl.Model.add_shader(shader_src, shader_type)

添加着色器。参数说明如下:

shader_src  - 着色器源码
shader_type - 着色器类型

6.4.2 wxgl.Model.set_vertex

wxgl.Model.set_vertex(var_name, data, indices=None)

设置顶点。参数说明如下:

var_name    - 顶点在着色器中的变量名
data        - 顶点数据
indices     - 顶点索引数据

6.4.3 wxgl.Model.set_normal

wxgl.Model.set_normal(var_name, data)

设置顶点法向量。参数说明如下:

var_name    - 顶点法向量在着色器中的变量名
data        - 顶点法向量数据

6.4.4 wxgl.Model.set_texcoord

wxgl.Model.set_texcoord(var_name, data)

设置顶点纹理。参数说明如下:

var_name    - 顶点纹理在着色器中的变量名
data        - 顶点纹理数据

6.4.5 wxgl.Model.set_color

wxgl.Model.set_color(var_name, data)

设置顶点颜色。参数说明如下:

var_name    - 顶点颜色在着色器中的变量名
data        - 顶点颜色数据

6.4.6 wxgl.Model.set_psize

wxgl.Model.set_psize(var_name, data)

设置顶点大小。参数说明如下:

var_name    - 顶点大小在着色器中的变量名
data        - 顶点大小数据

6.4.7 wxgl.Model.add_texture

wxgl.Model.add_texture(var_name, texture)

添加纹理。参数说明如下:

var_name    - 纹理在着色器中的变量名
texture     - wxgl.Texture对象

6.4.8 wxgl.Model.set_view_matrix

wxgl.Model.set_view_matrix(var_name, vmatrix=None)

设置视点矩阵。参数说明如下:

var_name    - 视点矩阵在着色器中的变量名
vmatrix     - 视点矩阵或生成视点矩阵的函数,None表示使用当前视点矩阵

6.4.9 wxgl.Model.set_proj_matrix

wxgl.Model.set_proj_matrix(var_name, pmatrix=None)

设置投影矩阵。参数说明如下:

var_name    - 投影矩阵在着色器中的变量名
mmatrix     - 投影矩阵或生成投影矩阵的函数,None表示使用当前投影矩阵

6.4.10 wxgl.Model.set_model_matrix

wxgl.Model.set_model_matrix(var_name, mmatrix=None)

设置模型矩阵。参数说明如下:

var_name    - 模型矩阵在着色器中的变量名
mmatrix     - 模型矩阵或生成模型矩阵的函数,None表示模型无几何变换

6.4.11 wxgl.Model.set_argument

wxgl.Model.set_argument(var_name, var_value)

设置变量。参数说明如下:

var_name    - 变量在着色器中的变量名
var_value   - 变量值或生成变量值的函数

6.4.12 wxgl.Model.set_cam_pos

wxgl.Model.set_cam_pos(var_name)

设置相机位置。参数说明如下:

var_name    - 相机位置在着色器中的变量名

6.4.13 wxgl.Model.set_ae

wxgl.Model.set_ae(var_name)

设置相机方位角和高度角。参数说明如下:

var_name    - 相机方位角和高度角在着色器中的变量名

6.4.14 wxgl.Model.set_picked

wxgl.Model.set_picked(var_name)

设置拾取状态。参数说明如下:

var_name    - 拾取状态在着色器中的变量名

6.4.15 wxgl.Model.set_line_style

wxgl.Model.set_line_style(width=None, stipple=None)

设置线宽和线型。参数说明如下:

width       - 线宽
stipple     - 线型,重复因子(整数)和模式(16位二进制)组成的元组

6.4.16 wxgl.Model.set_cull_mode

wxgl.Model.set_cull_mode(mode)

设置面剔除方式。参数说明如下:

mode        - 剔除的面:'front'|'back'

6.4.17 wxgl.Model.set_fill_mode

wxgl.Model.set_fill_mode(mode)

设置填充方式。参数说明如下:

mode        - 填充模式:布尔型,或'FCBC'|'FLBC'|'FCBL'|'FLBL'

6.4.18 wxgl.Model.set_slide

wxgl.Model.set_slide(slide)

设置幻灯片函数。参数说明如下:

slide        - 以渲染时长(ms)为参数的函数,该函数返回布尔值

6.4.19 wxgl.Model.verify

wxgl.Model.verify()

验证模型数据、检查着色器源码。无参数。该方法通常无需用户显式调用。

6.5 wxgl.Texture

wxgl.Texture(tsrc, ttype=wxgl.GL_TEXTURE_2D, **kwds)

WxGL纹理类。参数说明如下:

tsrc        - 图像全路径或者np.array数组
ttype       - 纹理类型,可选项- wxgl.TEXTURE_1D- wxgl.TEXTURE_2D- wxgl.TEXTURE_2D_ARRAY- wxgl.TEXTURE_3D
kwds        - 关键字参数level       - 纹理分级数,默认1min_filter  - 纹理缩小滤波器,可选项:- wxgl.GL_NEAREST- wxgl.GL_LINEAR- wxgl.GL_NEAREST_MIPMAP_NEAREST- wxgl.GL_LINEAR_MIPMAP_NEAREST- wxgl.GL_NEAREST_MIPMAP_LINEAR- wxgl.GL_LINEAR_MIPMAP_LINEARmag_filter  - 纹理放大滤波器,可选项:- wxgl.GL_NEAREST- wxgl.GL_LINEARs_tile      - S方向纹理铺贴方式,可选项:wxgl.GL_REPEAT|wxgl.GL_MIRRORED_REPEAT|wxgl.GL_CLAMP_TO_EDGEt_tile      - T方向纹理铺贴方式,可选项:wxgl.GL_REPEAT|wxgl.GL_MIRRORED_REPEAT|wxgl.GL_CLAMP_TO_EDGEr_tile      - R方向纹理铺贴方式,可选项:wxgl.GL_REPEAT|wxgl.GL_MIRRORED_REPEAT|wxgl.GL_CLAMP_TO_EDGExflip       - 左右翻转yflip       - 上下翻转

6.5.1 wxgl.Texture.create_texture

wxgl.Texture.create_texture()

创建纹理对象。无参数。该方法通常无需用户显式调用。

6.6 wxgl.glplot

3D绘图工具包。

6.6.1 wxgl.glplot.figure

wxgl.glplot.figure(**kwds)

初始化当前画布,无返回值。参数说明如下:

proj        - 投影模式:'O' - 正射投影,'P' - 透视投影(默认)
zoom        - 视口缩放因子:默认1.0
azim        - 方位角:默认0°
elev        - 仰角:默认0°
azim_range  - 方位角限位器:默认-180°~180°
elev_range  - 仰角限位器:默认-180°~180°
smooth      - 反走样开关:默认True
style       - 场景风格'blue'      - 太空蓝(默认)'gray'      - 国际灰'white'     - 珍珠白'black'     - 石墨黑'royal'     - 宝石蓝

6.6.2 wxgl.glplot.subplot

wxgl.glplot.subplot(pos)

添加子图(Axes)对象。参数说明如下:

pos         - 子图在场景中的位置和大小三位数字    - 指定分割画布的行数、列数和子图序号。例如,223表示两行两列的第3个位置四元组      - 子图左下角在画布上的水平、垂直位置和子图的宽度、高度。以画布左下角为原点,画布宽度和高度都是1

6.6.3 wxgl.glplot.show

wxgl.glplot.show()

显示画布。无参数。

6.6.4 wxgl.glplot.savefig

wxgl.glplot.savefig(fn)

保存画布为文件。参数说明如下:

fn           - 文件名,支持.png和.jpg格式

6.6.5 wxgl.glplot.capture

wxgl.glplot.capture(out_file, fps=25, fn=50, loop=0)

生成mp4、avi、wmv或gif文件。参数说明如下:

out_file    - 输出文件名,可带路径,支持gif和mp4、avi、wmv等格式
fps         - 每秒帧数
fn          - 总帧数
loop        - 循环播放次数(仅gif格式有效,0表示无限循环)

6.6.6 wxgl.glplot.cruise

wxgl.glplot.cruise(func)

设置相机巡航函数。参数说明如下:

func        - 以渲染时长(ms)为参数的函数,返回一个字典,'azim'键为相机方位角,'elev'键为相机高度角,'dist'键为相机距离视点的距离

6.6.7 wxgl.glplot.title

wxgl.glplot.title(text, size=40, color=None, **kwds)

位于Axes顶部水平居中的标题。参数说明如下:

text        - 文本字符串:支持LaTex语法
size        - 字号:整型,默认40
color       - 文本颜色:支持预定义颜色、十六进制颜色,以及值域范围[0,1]的浮点型元组、列表或numpy数组颜色,默认使用场景的前景颜色
kwds        - 关键字参数family          - 字体,None表示当前默认的字体weight          - 字体的浓淡:'normal'-正常,'light'-轻,'bold'-重(默认)border          - 显示标题边框,默认Truemargin_top      - 标题上方留空与标题文字高度之比,默认0.6margin_bottom   - 标题下方留空与标题文字高度之比,默认0.2margin_left     - 标题左侧留空与标题文字高度之比,默认0.0margin_right    - 标题右侧留空与标题文字高度之比,默认0.0

6.6.8 wxgl.glplot.colorbar

wxgl.glplot.colorbar(cm, drange, loc=‘right’, **kwds)

Colorbar。参数说明如下:

cm          - 调色板名称
drange      - 数据的动态范围:元组、列表或numpy数组
loc         - 位置right           - 右侧bottom          - 底部
kwds        - 关键字参数subject         - 标题tick_format     - 刻度标注格式化函数,默认strdensity         - 刻度密度,最少和最多刻度线组成的元组,默认(3,6)endpoint        - 刻度是否包含值域范围的两个端点值scale           - 色条宽度、文字大小等缩放比例,默认Nonemargin_left     - 色条左侧留空,默认0.5margin_right    - 色条右侧留空,默认0.5margin_top      - 色条上方留空,默认0.5margin_bottom   - 色条下方留空,默认0.5

6.6.9 wxgl.Region.grid

wxgl.Region.grid(xlabel=‘X’, ylabel=‘Y’, zlabel=‘Z’, **kwds)

绘制网格和刻度。参数说明如下:

xlabel      - x轴名称,默认'X'
ylabel      - y轴名称,默认'Y'
zlabel      - z轴名称,默认'Z'
kwds        - 关键字参数xf              - x轴刻度标注格式化函数,默认stryf              - y轴刻度标注格式化函数,默认strzf              - z轴刻度标注格式化函数,默认strxd              - x轴刻度密度调整,整型,-1~3,默认0yd              - y轴刻度密度调整,整型,-1~3,默认0zd              - z轴刻度密度调整,整型,-1~3,默认0xc              - x轴标注文本颜色,默认(1.0,0.3,0)yc              - y轴标注文本颜色,默认(0,1.0,0.3)zc              - z轴标注文本颜色,默认(0,0.5,1.0)lc              - 网格线颜色,默认使用前景色tick_size       - 刻度标注字号,默认32label_size      - 坐标轴标注字号,默认40

6.6.10 wxgl.glplot.xrange

wxgl.glplot.xrange(xrange)

设置x轴范围。参数说明如下:

xrange       - x轴范围:2元组

6.6.11 wxgl.glplot.yrange

wxgl.glplot.yrange(yrange)

设置y轴范围。参数说明如下:

yrange       - y轴范围:2元组

6.6.12 wxgl.glplot.zrange

wxgl.glplot.zrange(zrange)

设置z轴范围。参数说明如下:

zrange       - z轴范围:2元组

6.6.13 wxgl.glplot.model

wxgl.glplot.model(m)

绘制wxgl.Model模型。参数说明如下:

m            - wxgl.Model实例

6.6.14 wxgl.glplot.text

wxgl.glplot.text(text, pos, color=None, size=32, loc=‘left_bottom’, **kwds)

2d文字。参数说明如下:

text        - 文本字符串
pos         - 文本位置:元组、列表或numpy数组,shape=(2|3,)
color       - 文本颜色:支持预定义颜色、十六进制颜色,以及元组、列表或numpy数组颜色,默认使用场景的前景颜色
size        - 字号:整型,默认32
loc         - pos对应文本区域的位置'left-top'      - 左上'left-middle'   - 左中'left-bottom'   - 左下'center-top'    - 上中'center-middle' - 中'center-bottom' - 下中'right-top'     - 右上'right-middle'  - 右中'right-bottom'  - 右下
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueslide           - 幻灯片函数,默认Noneambient         - 环境光,默认(1.0,1.0,1.0)family          - 字体:None表示当前默认的字体weight          - 字体的浓淡:'normal'-正常(默认),'light'-轻,'bold'-重

6.6.15 wxgl.glplot.text3d

wxgl.glplot.text3d(text, box, color=None, align=‘fill’, valign=‘fill’, **kwds)

3d文字。参数说明如下:

text        - 文本字符串
box         - 文本显式区域:左上、左下、右上、右下4个点的坐标,浮点型元组、列表或numpy数组,shape=(4,2|3)
color       - 文本颜色:支持预定义颜色、十六进制颜色,以及元组、列表或numpy数组颜色,默认使用场景的前景颜色
align       - 文本宽度方向对齐方式'fill'          - 填充'left'          - 左对齐'right'         - 右对齐'center'        - 居中对齐
valign      - 文本高度方向对齐方式'fill'          - 填充'top'           - 上对齐'bottom'        - 下对齐'middle'        - 居中对齐
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Truecull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列,默认Noneambient         - 环境光,默认(1.0,1.0,1.0)family          - 字体:None表示当前默认的字体weight          - 字体的浓淡:'normal'-正常(默认),'light'-轻,'bold'-重size            - 字号:整型,默认64。此参数影响文本显示质量,不改变文本大小

6.6.16 wxgl.glplot.point

wxgl.glplot.point(vs, color=None, cm=None, alpha=None, size=1.0, **kwds)

散列点。参数说明如下:

vs          - 顶点集:元组、列表或numpy数组,shape=(n,2|3)
color       - 颜色或数据:支持预定义颜色、十六进制颜色,以及元组、列表或numpy数组颜色;若为数据,其长度等于顶点数量
cm          - 颜色映射表:默认None。若该参数有效,color参数被视为与顶点一一对应的数据
alpha       - 透明度:None或0到1之间的浮点数(cm有效时有效)。默认None,表示不改变当前透明度
size        - 点的大小:数值或数值型元组、列表或numpy数组
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueopacity         - 模型不透明属性,默认True(不透明)inside          - 模型顶点是否影响模型空间,默认Trueslide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列,默认Noneambient         - 环境光,默认(1.0,1.0,1.0)

6.6.17 wxgl.glplot.line

wxgl.glplot.line(vs, color=None, cm=None, alpha=None, method=‘strip’, width=None, style=‘solid’, **kwds)

线段。参数说明如下:

vs          - 顶点集:元组、列表或numpy数组,shape=(n,2|3)
color       - 颜色或数据:支持预定义颜色、十六进制颜色,以及元组、列表或numpy数组颜色;若为数据,其长度等于顶点数量
cm          - 颜色映射表:默认None。若该参数有效,color参数被视为与顶点一一对应的数据
alpha       - 透明度:None或0到1之间的浮点数(cm有效时有效)。默认None,表示不改变当前透明度
method      - 绘制方法'isolate'       - 独立线段'strip'         - 连续线段'loop'          - 闭合线段
width       - 线宽:0.0~10.0之间,None使用默认设置
style       - 线型, 默认实线'solid'         - 实线 'dashed'        - 虚线'dotted'        - 点线'dash-dot'      - 虚点线
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认True(不透明)slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列,默认Noneambient         - 环境光,默认(1.0,1.0,1.0)

6.6.18 wxgl.glplot.surface

wxgl.glplot.surface(vs, color=None, cm=None, alpha=None, texture=None, texcoord=None, method=‘isolate’, indices=None, closed=False, **kwds)

三角曲面。参数说明如下:

vs          - 顶点集:元组、列表或numpy数组,shape=(n,2|3)
color       - 颜色或数据:支持预定义颜色、十六进制颜色,以及元组、列表或numpy数组颜色;若为数据,其长度等于顶点数量
cm          - 颜色映射表:默认None。若该参数有效,color参数被视为与顶点一一对应的数据
alpha       - 透明度:None或0到1之间的浮点数(cm有效时有效)。默认None,表示不改变当前透明度
texture     - 纹理:wxgl.Texture对象
texcoord    - 纹理坐标集:元组、列表或numpy数组,shape=(n,2|3)
method      - 绘制方法'isolate'       - 独立三角面'strip'         - 带状三角面'fan'           - 扇面
indices     - 顶点索引集,默认None,表示不使用索引
closed      - 带状三角面或扇面两端闭合:布尔型
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认True(不透明)cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.6.19 wxgl.glplot.quad

wxgl.glplot.quad(vs, color=None, cm=None, alpha=None, texture=None, texcoord=None, method=‘isolate’, indices=None, closed=False, **kwds)

四角曲面。参数说明如下:

vs          - 顶点集:元组、列表或numpy数组,shape=(n,2|3)
color       - 颜色或数据:支持预定义颜色、十六进制颜色,以及元组、列表或numpy数组颜色;若为数据,其长度等于顶点数量
cm          - 颜色映射表:默认None。若该参数有效,color参数被视为与顶点一一对应的数据
alpha       - 透明度:None或0到1之间的浮点数(cm有效时有效)。默认None,表示不改变当前透明度
texture     - 纹理:wxgl.Texture对象
texcoord    - 纹理坐标集:元组、列表或numpy数组,shape=(n,2|3)
method      - 绘制方法'isolate'       - 独立四角面'strip'         - 带状四角面
indices     - 顶点索引集,默认None,表示不使用索引
closed      - 带状三角面或扇面两端闭合:布尔型
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认True(不透明)cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.6.20 wxgl.glplot.mesh

wxgl.glplot.mesh(xs, ys, zs, color=None, cm=None, alpha=None, texture=None, ur=(0,1), vr=(0,1), method=‘T’, uclosed=False, vclosed=False, **kwds)

网格面。参数说明如下:

xs/ys/zs    - 顶点坐标集:元组、列表或numpy数组,shape=(m,n),m为网格行数,n为网格列数
color       - 颜色或数据:支持预定义颜色、十六进制颜色,以及元组、列表或numpy数组颜色;若为数据,shape=(m,n)
cm          - 颜色映射表:默认None。若该参数有效,color参数被视为与mesh网格匹配的数据
alpha       - 透明度:None或0到1之间的浮点数(cm有效时有效)。默认None,表示不改变当前透明度
texture     - 纹理:wxgl.Texture对象
ur          - u方向纹理坐标范围
vr          - v方向纹理坐标范围
method      - 绘制网格的方法:可选项:'T'- GL_TRIANGLES, 'Q' - GL_QUADS
uclosed     - u方向网格两端闭合:布尔型
vclosed     - v方向网格两端闭合:布尔型
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.6.21 wxgl.glplot.cylinder

wxgl.glplot.cylinder(c1, c2, r, color=None, texture=None, ur=(0,1), vr=(0,1), arc=(0,360), cell=5, **kwds)

圆柱。参数说明如下:

c1          - 圆柱端面圆心:元组、列表或numpy数组
c2          - 圆柱端面圆心:元组、列表或numpy数组
r           - 圆柱半径:浮点型
color       - 颜色:支持预定义颜色、十六进制颜色,以及元组、列表或numpy数组颜色
texture     - 纹理:wxgl.Texture对象
ur          - u方向纹理坐标范围
vr          - v方向纹理坐标范围
arc         - 弧度角范围:默认0°~360°
cell        - 网格精度:默认5°
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.6.22 wxgl.glplot.torus

wxgl.glplot.torus(center, r1, r2, vec=(0,1,0), color=None, texture=None, ur=(0,1), vr=(0,1), u=(0,360), v=(-180,180), cell=5, **kwds)

球环。参数说明如下:

center      - 球环中心坐标:元组、列表或numpy数组
r1          - 球半径:浮点型
r2          - 环半径:浮点型
vec         - 环面法向量
color       - 颜色:支持预定义颜色、十六进制颜色,以及元组、列表或numpy数组颜色
texture     - 纹理:wxgl.Texture对象
ur          - u方向纹理坐标范围
vr          - v方向纹理坐标范围
u           - u方向范围:默认0°~360°
v           - v方向范围:默认-90°~90°
cell        - 网格精度:默认5°
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.6.23 wxgl.glplot.uvsphere

wxgl.glplot.uvsphere(center, r, vec=(0,1,0), color=None, texture=None, ur=(0,1), vr=(0,1), u=(0,360), v=(-90,90), cell=5, **kwds)

使用经纬度网格生成球。参数说明如下:

center      - 锥底圆心坐标:元组、列表或numpy数组
r           - 锥底半径:浮点型
vec         - 轴向量
color       - 颜色:支持预定义颜色、十六进制颜色,以及元组、列表或numpy数组颜色
texture     - 纹理:wxgl.Texture对象
ur          - u方向纹理坐标范围
vr          - v方向纹理坐标范围
u           - u方向范围:默认0°~360°
v           - v方向范围:默认-90°~90°
cell        - 网格精度:默认5°
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.6.24 wxgl.glplot.isosphere

wxgl.glplot.isosphere(center, r, color=None, iterations=5, **kwds)

通过对正八面体的迭代细分生成球。参数说明如下:

center      - 锥底圆心坐标:元组、列表或numpy数组
r           - 锥底半径:浮点型
color       - 颜色:支持预定义颜色、十六进制颜色,以及元组、列表或numpy数组颜色
iterations  - 迭代次数:整型
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.6.25 wxgl.glplot.circle

wxgl.glplot.circle(center, r, vec=(0,1,0), color=None, arc=(0,360), cell=5, **kwds)

圆。参数说明如下:

center      - 锥底圆心:元组、列表或numpy数组
r           - 锥底半径:浮点型
vec         - 圆面法向量
color       - 颜色:支持预定义颜色、十六进制颜色,以及元组、列表或numpy数组颜色
arc         - 弧度角范围:默认0°~360°
cell        - 网格精度:默认5°
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.6.26 wxgl.glplot.cone

wxgl.glplot.cone(spire, center, r, color=None, arc=(0,360), cell=5, **kwds)

圆锥。参数说明如下:

spire       - 锥尖:元组、列表或numpy数组
center      - 锥底圆心:元组、列表或numpy数组
r           - 锥底半径:浮点型
color       - 颜色:支持预定义颜色、十六进制颜色,以及元组、列表或numpy数组颜色
arc         - 弧度角范围:默认0°~360°
cell        - 网格精度:默认5°
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.6.27 wxgl.glplot.cube

wxgl.glplot.cube(center, side, vec=(0,1,0), color=None, **kwds)

六面体。参数说明如下:

center      - 中心坐标,元组、列表或numpy数组
side        - 棱长:数值或长度为3的元组、列表、numpy数组
vec         - 六面体上表面法向量
color       - 颜色:支持预定义颜色、十六进制颜色,以及元组、列表或numpy数组颜色
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.6.28 wxgl.glplot.isosurface

wxgl.glplot.isosurface(data, level, color=None, x=None, y=None, z=None, **kwds)

基于MarchingCube算法的三维等值面。参数说明如下:

data        - 数据集:三维numpy数组
level       - 阈值:浮点型
color       - 颜色:支持预定义颜色、十六进制颜色,以及元组、列表或numpy数组颜色
x/y/z       - 数据集对应的点的x/y/z轴的动态范围
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.7 wxgl.Scene

wxgl.Scene(parent, smooth=True, style=‘blue’)

场景类,继承自wx.glcanvas.GLCanvas类。参数说明如下:

parent      - 父级窗口对象
smooth      - 反走样开关,默认开
style       - 场景风格,默认太空蓝'blue'      - 太空蓝'gray'      - 国际灰'black'     - 石墨黑'white'     - 珍珠白'royal'     - 宝石蓝

6.7.1 wxgl.Scene.add_region

wxgl.Scene.add_region(box, **kwds)

向场景内添加视区,返回视区对象(Region实例)。参数说明如下:

box         - 视区位置四元组:四个元素分别表示视区左下角坐标、宽度、高度,元素值域[0,1]
kwds        - 关键字参数proj        - 投影模式:'O' - 正射投影,'P' - 透视投影(默认)fixed       - 锁定模式:固定ECS原点、相机位置和角度,以及视口缩放因子等。布尔型,默认Falseazim        - 方位角:-180°~180°范围内的浮点数,默认0°elev        - 高度角:-180°~180°范围内的浮点数,默认0°azim_range  - 方位角限位器:默认-180°~180°elev_range  - 仰角限位器:默认-180°~180°zoom        - 视口缩放因子:默认1.0name        - 视区名

6.7.2 wxgl.Scene.set_style

wxgl.Scene.set_style(style)

设置场景风格。参数说明如下:

style       - 场景风格,可选项:'blue'|'gray'|'black'|'white'|'royal'

6.7.3 wxgl.Scene.render

模型渲染。无参数。

wxgl.Scene.render()

6.7.4 wxgl.Scene.save_scene

wxgl.Scene.save_scene(fn, alpha=True, buffer=‘front’, crop=False)

保存场景为图像文件。参数说明如下:

fn          - 保存的文件名
alpha       - 是否使用透明通道
buffer      - 显示缓冲区, 可选项:'front'|'back'。默认使用前缓冲区(当前显示内容)
crop        - 是否将宽高裁切为16的倍数

6.7.5 wxgl.Scene.start_animate

开始动画。无参数。

wxgl.Scene.start_animate()

6.7.6 wxgl.Scene.stop_animate

wxgl.Scene.stop_animate()

停止动画。无参数。

6.7.7 wxgl.Scene.pause_animate

wxgl.Scene.pause_animate()

暂停或重启动画。无参数。

6.7.8 wxgl.Scene.estimate

动画渲染帧频评估,返回当前渲染帧率。无参数。

wxgl.Scene.estimate()

6.7.9 wxgl.Scene.start_record

wxgl.Scene.start_record(out_file, fps, fn, loop)

开始生成gif或视频文件。参数说明如下:

out_file    - 文件名,支持gif和mp4、avi、wmv等格式
fps         - 每秒帧数
fn          - 总帧数
loop        - 循环播放次数(仅gif格式有效,0表示无限循环)

6.7.10 wxgl.Scene.stop_record

wxgl.Scene.stop_record()

停止生成gif或视频文件。无参数。

6.7.11 wxgl.Scene.restore_posture

还原场景内各视区的相机初始姿态。无参数。

wxgl.Scene.restore_posture()

6.8 wxgl.Region

wxgl.Region(scene, box, **kwds)

视区类。参数说明如下:

scene       - 视区所属场景对象
box         - 视区位置四元组:四个元素分别表示视区左下角坐标、宽度、高度,元素值域[0,1]
kwds        - 关键字参数proj        - 投影模式:'O' - 正射投影,'P' - 透视投影(默认)fixed       - 锁定模式:固定ECS原点、相机位置和角度,以及视口缩放因子等。布尔型,默认Falseazim        - 方位角:-180°~180°范围内的浮点数,默认0°elev        - 高度角:-180°~180°范围内的浮点数,默认0°azim_range  - 方位角限位器:默认-180°~180°elev_range  - 仰角限位器:默认-180°~180°zoom        - 视口缩放因子:默认1.0name        - 视区名

6.8.1 wxgl.Region.reset_box

wxgl.Region.reset_box(box=None)

重置视区位置和大小。参数说明如下:

box         - 视区位置四元组:四个元素分别表示视区左下角坐标、宽度、高度,元素值域[0,1]

6.8.2 wxgl.Region.clear

wxgl.Region.clear()

清空视区。无参数。

6.8.3 wxgl.Region.set_range

wxgl.Region.set_range(r_x=None, r_y=None, r_z=None)

设置坐标轴范围。参数说明如下:

r_x         - 二元组,x坐标轴范围
r_y         - 二元组,y坐标轴范围
r_z         - 二元组,z坐标轴范围

6.8.4 wxgl.Region.set_cam_cruise

wxgl.Region.set_cam_cruise(func)

设置相机巡航函数。参数说明如下:

func        - 以渲染时长(ms)为参数的函数,返回一个字典,'azim'键为相机方位角,'elev'键为相机高度角,'dist'键为相机距离视点的距离

6.8.5 wxgl.Region.save_posture

wxgl.Region.save_posture()

保存相机姿态。无参数。

6.8.6 wxgl.Region.restore_posture

wxgl.Region.restore_posture()

还原相机姿态。无参数。

6.8.7 wxgl.Region.set_model_visible

wxgl.Region.set_model_visible(name, visible)

设置模型显示属性。参数说明如下:

name        - 模型名
visible     - 布尔值

6.8.8 wxgl.Region.show_model

wxgl.Region.show_model(name)

显示模型。参数说明如下:

name        - 模型名

6.8.9 wxgl.Region.hide_model

wxgl.Region.hide_model(name)

隐藏模型。参数说明如下:

name        - 模型名

6.8.10 wxgl.Region.drop_model

wxgl.Region.drop_model(name)

删除模型。参数说明如下:

name        - 模型名

6.8.11 wxgl.Region.add_model

wxgl.Region.add_model(m, name=None)

添加模型。参数说明如下:

m           - wxgl.Model实例
name        - 模型名

6.8.12 wxgl.Region.text

wxgl.Region.text(text, pos, color=None, size=32, loc=‘left_bottom’, **kwds)

2d文字。参数说明如下:

text        - 文本字符串
pos         - 文本位置:元组、列表或numpy数组,shape=(2|3,)
color       - 文本颜色:浮点型元组、列表或numpy数组,值域范围[0,1],None表示使用场景默认的前景颜色
size        - 字号:整型,默认32
loc         - pos对应文本区域的位置'left-top'      - 左上'left-middle'   - 左中'left-bottom'   - 左下'center-top'    - 上中'center-middle' - 中'center-bottom' - 下中'right-top'     - 右上'right-middle'  - 右中'right-bottom'  - 右下
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueslide           - 幻灯片函数,默认Noneambient         - 环境光,默认(1.0,1.0,1.0)family          - 字体:None表示当前默认的字体weight          - 字体的浓淡:'normal'-正常(默认),'light'-轻,'bold'-重

6.8.13 wxgl.Region.text3d

wxgl.Region.text3d(text, box, color=None, align=‘fill’, valign=‘fill’, **kwds)

3d文字。参数说明如下:

text        - 文本字符串
box         - 文本显式区域:左上、左下、右上、右下4个点的坐标,浮点型元组、列表或numpy数组,shape=(4,2|3)
color       - 文本颜色:浮点型元组、列表或numpy数组,值域范围[0,1],None表示使用场景默认的前景颜色
align       - 文本宽度方向对齐方式'fill'          - 填充'left'          - 左对齐'right'         - 右对齐'center'        - 居中对齐
valign      - 文本高度方向对齐方式'fill'          - 填充'top'           - 上对齐'bottom'        - 下对齐'middle'        - 居中对齐
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Truecull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列,默认Noneambient         - 环境光,默认(1.0,1.0,1.0)family          - 字体:None表示当前默认的字体weight          - 字体的浓淡:'normal'-正常(默认),'light'-轻,'bold'-重size            - 字号:整型,默认64。此参数影响文本显示质量,不改变文本大小

6.8.14 wxgl.Region.point

wxgl.Region.point(vs, color=None, size=1.0, **kwds)

散列点。参数说明如下:

vs          - 顶点集:元组、列表或numpy数组,shape=(n,2|3)
color       - 颜色或颜色集:浮点型元组、列表或numpy数组,值域范围[0,1]
size        - 点的大小:数值或数值型元组、列表或numpy数组
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueopacity         - 模型不透明属性,默认True(不透明)inside          - 模型顶点是否影响模型空间,默认Trueslide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列,默认Noneambient         - 环境光,默认(1.0,1.0,1.0)

6.8.15 wxgl.Region.line

wxgl.Region.line(vs, color=None, method=‘strip’, width=None, stipple=None, **kwds)

线段。参数说明如下:

vs          - 顶点集:元组、列表或numpy数组,shape=(n,2|3)
color       - 颜色或颜色集:浮点型元组、列表或numpy数组,值域范围[0,1]
method      - 绘制方法'isolate'       - 独立线段'strip'         - 连续线段'loop'          - 闭合线段
width       - 线宽:0.0~10.0之间,None使用默认设置
stipple     - 线型:整数和两字节十六进制整数组成的元组,形如(1,0xFFFF)。None使用默认设置
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认True(不透明)slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列,默认Noneambient         - 环境光,默认(1.0,1.0,1.0)

6.8.16 wxgl.Region.surface

wxgl.Region.surface(vs, color=None, texture=None, texcoord=None, method=‘isolate’, indices=None, closed=False, **kwds)

三角曲面。参数说明如下:

vs          - 顶点集:元组、列表或numpy数组,shape=(n,2|3)
color       - 颜色或颜色集:浮点型元组、列表或numpy数组,值域范围[0,1]
texture     - 纹理:wxgl.Texture对象
texcoord    - 纹理坐标集:元组、列表或numpy数组,shape=(n,2|3)
method      - 绘制方法'isolate'       - 独立三角面'strip'         - 带状三角面'fan'           - 扇面
indices     - 顶点索引集,默认None,表示不使用索引
closed      - 带状三角面或扇面两端闭合:布尔型
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认True(不透明)cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.8.17 wxgl.Region.quad

wxgl.Region.quad(vs, color=None, texture=None, texcoord=None, method=‘isolate’, indices=None, closed=False, **kwds)

四角曲面。参数说明如下:

vs          - 顶点集:元组、列表或numpy数组,shape=(n,2|3)
color       - 颜色或颜色集:浮点型元组、列表或numpy数组,值域范围[0,1]
texture     - 纹理:wxgl.Texture对象
texcoord    - 纹理坐标集:元组、列表或numpy数组,shape=(n,2|3)
method      - 绘制方法'isolate'       - 独立四角面'strip'         - 带状四角面
indices     - 顶点索引集,默认None,表示不使用索引
closed      - 带状三角面或扇面两端闭合:布尔型
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认True(不透明)cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.8.18 wxgl.Region.mesh

wxgl.Region.mesh(xs, ys, zs, color=None, texture=None, ur=(0,1), vr=(0,1), method=‘T’, uclosed=False, vclosed=False, **kwds)

网格面。参数说明如下:

xs/ys/zs    - 顶点坐标集:元组、列表或numpy数组,shape=(m,n),m为网格行数,n为网格列数
color       - 颜色或颜色集:浮点型元组、列表或numpy数组,值域范围[0,1]
texture     - 纹理:wxgl.Texture对象
ur          - u方向纹理坐标范围
vr          - v方向纹理坐标范围
method      - 绘制网格的方法:可选项:'T'- GL_TRIANGLES, 'Q' - GL_QUADS
uclosed     - u方向网格两端闭合:布尔型
vclosed     - v方向网格两端闭合:布尔型
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.8.19 wxgl.Region.cylinder

wxgl.Region.cylinder(c1, c2, r, color=None, texture=None, ur=(0,1), vr=(0,1), arc=(0,360), cell=5, **kwds)

圆柱。参数说明如下:

c1          - 圆柱端面圆心:元组、列表或numpy数组
c2          - 圆柱端面圆心:元组、列表或numpy数组
r           - 圆柱半径:浮点型
color       - 颜色:浮点型元组、列表或numpy数组
texture     - 纹理:wxgl.Texture对象
ur          - u方向纹理坐标范围
vr          - v方向纹理坐标范围
arc         - 弧度角范围:默认0°~360°
cell        - 网格精度:默认5°
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.8.20 wxgl.Region.torus

wxgl.Region.torus(center, r1, r2, vec=(0,1,0), color=None, texture=None, ur=(0,1), vr=(0,1), u=(0,360), v=(-180,180), cell=5, **kwds)

球环。参数说明如下:

center      - 球环中心坐标:元组、列表或numpy数组
r1          - 球半径:浮点型
r2          - 环半径:浮点型
vec         - 环面法向量
color       - 颜色:浮点型元组、列表或numpy数组
texture     - 纹理:wxgl.Texture对象
ur          - u方向纹理坐标范围
vr          - v方向纹理坐标范围
u           - u方向范围:默认0°~360°
v           - v方向范围:默认-90°~90°
cell        - 网格精度:默认5°
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.8.21 wxgl.Region.uvsphere

wxgl.Region.uvsphere(center, r, vec=(0,1,0), color=None, texture=None, ur=(0,1), vr=(0,1), u=(0,360), v=(-90,90), cell=5, **kwds)

使用经纬度网格生成球。参数说明如下:

center      - 锥底圆心坐标:元组、列表或numpy数组
r           - 锥底半径:浮点型
vec         - 轴向量
color       - 颜色:浮点型元组、列表或numpy数组
texture     - 纹理:wxgl.Texture对象
ur          - u方向纹理坐标范围
vr          - v方向纹理坐标范围
u           - u方向范围:默认0°~360°
v           - v方向范围:默认-90°~90°
cell        - 网格精度:默认5°
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.8.22 wxgl.Region.isosphere

wxgl.Region.isosphere(center, r, color=None, iterations=5, **kwds)

通过对正八面体的迭代细分生成球。参数说明如下:

center      - 锥底圆心坐标:元组、列表或numpy数组
r           - 锥底半径:浮点型
color       - 颜色:浮点型元组、列表或numpy数组
iterations  - 迭代次数:整型
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.8.23 wxgl.Region.circle

wxgl.Region.circle(center, r, vec=(0,1,0), color=None, arc=(0,360), cell=5, **kwds)

圆。参数说明如下:

center      - 锥底圆心:元组、列表或numpy数组
r           - 锥底半径:浮点型
vec         - 圆面法向量
color       - 颜色:浮点型元组、列表或numpy数组
arc         - 弧度角范围:默认0°~360°
cell        - 网格精度:默认5°
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.8.24 wxgl.Region.cone

wxgl.Region.cone(spire, center, r, color=None, arc=(0,360), cell=5, **kwds)

圆锥。参数说明如下:

spire       - 锥尖:元组、列表或numpy数组
center      - 锥底圆心:元组、列表或numpy数组
r           - 锥底半径:浮点型
color       - 颜色:浮点型元组、列表或numpy数组
arc         - 弧度角范围:默认0°~360°
cell        - 网格精度:默认5°
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.8.25 wxgl.Region.cube

wxgl.Region.cube(center, side, vec=(0,1,0), color=None, **kwds)

六面体。参数说明如下:

center      - 中心坐标,元组、列表或numpy数组
side        - 棱长:数值或长度为3的元组、列表、numpy数组
vec         - 六面体上表面法向量
color       - 颜色:浮点型元组、列表或numpy数组
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.8.26 wxgl.Region.isosurface

wxgl.Region.isosurface(data, level, color=None, x=None, y=None, z=None, **kwds)

基于MarchingCube算法的三维等值面。参数说明如下:

data        - 数据集:三维numpy数组
level       - 阈值:浮点型
color       - 颜色:浮点型元组、列表或numpy数组
x/y/z       - 数据集对应的点的x/y/z轴的动态范围
kwds        - 关键字参数name            - 模型名visible         - 是否可见,默认Trueinside          - 模型顶点是否影响模型空间,默认Trueopacity         - 模型不透明属性,默认不透明cull            - 面剔除,可选项:'front', 'back', None(默认,表示使用当前设置)fill            - 填充,可选项:True, False, None(默认,表示使用当前设置) slide           - 幻灯片函数,默认Nonetransform       - 由旋转、平移和缩放组成的模型几何变换序列light           - 光照情景模式,默认太阳光照情景模式

6.8.27 wxgl.Region.colorbar

wxgl.Region.colorbar(cm, drange, box, mode=‘V’, **kwds)

ColorBar。参数说明如下:

cm          - 调色板名称
drange      - 值域范围或刻度序列:长度大于1的元组或列表
box         - 调色板位置:左上、左下、右上、右下的坐标
mode        - 水平或垂直模式:可选项:'H'|'V'
kwds        - 关键字参数subject         - 标题tick_format     - 刻度标注格式化函数,默认strdensity         - 刻度密度,最少和最多刻度线组成的元组,默认(4,7)endpoint        - 刻度是否包含值域范围的两个端点值

6.8.28 wxgl.Region.grid

wxgl.Region.grid(xlabel=‘X’, ylabel=‘Y’, zlabel=‘Z’, **kwds)

绘制网格和刻度。参数说明如下:

xlabel      - x轴名称,默认'X'
ylabel      - y轴名称,默认'Y'
zlabel      - z轴名称,默认'Z'
kwds        - 关键字参数xf              - x轴刻度标注格式化函数,默认stryf              - y轴刻度标注格式化函数,默认strzf              - z轴刻度标注格式化函数,默认strxd              - x轴刻度密度调整,整型,-1~3,默认0yd              - y轴刻度密度调整,整型,-1~3,默认0zd              - z轴刻度密度调整,整型,-1~3,默认0xc              - x轴标注文本颜色,默认(1.0,0.3,0)yc              - y轴标注文本颜色,默认(0,1.0,0.3)zc              - z轴标注文本颜色,默认(0,0.5,1.0)lc              - 网格线颜色,默认使用前景色tick_size       - 刻度标注字号,默认32label_size      - 坐标轴标注字号,默认40

十分钟玩转3D绘图:WxGL完全手册(第二版)相关推荐

  1. 十分钟玩转3D绘图:WxGL完全手册

    文章目录 1. 前言 1.1 WxGL是什么? 1.2 为什么选择WxGL? 1.3 安装和依赖关系 2. 快速体验 2.1 从正弦曲线开始 2.2 使用2D模式 2.3 子图布局 2.4 标题和文本 ...

  2. 十分钟玩转 vue3+高德地图AMap+geojson批量绘制Polygon地块数据展示【二、创建地图】

    十分钟玩转 vue3+高德地图AMap+geojson批量绘制Polygon地块数据展示[二.创建地图] 在template标签内创建下列DOM 1.在template标签内,创建container的 ...

  3. 电脑神器软件(二):十分钟玩转potplayer视频播放器

    电脑神器软件(二):十分钟玩转potplayer视频播放器

  4. 十分钟开发物联网:汽车防盗GPS追踪(4G版)

    追踪汽车的GPS定位信息以及获取汽车当前运动的三轴加速度值,通过GPS定位信息我们可以判断汽车当前的位置,通过三轴加速度值我们可以判断当前汽车的运动状态(比如是否在运动中或者停止中). 视频教程及实物 ...

  5. 十分钟开发物联网:智慧农业大棚环境监测(4G版)

    农业大棚环境监测设备集成了大棚中一些关键指标的测量传感器(包含:二氧化碳.光照强度.温度.湿度.紫外线),ShineBlink万能核心板采集这些传感器数据,并将它们上传至机智云:然后我们就可以在远程通 ...

  6. 十分钟玩转 jQuery+实例大全

    一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQuery对象 jQuery产 ...

  7. 十分钟玩转 jQuery、实例大全

    一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQuery对象 jQuery产 ...

  8. 带你十分钟快速入门画图绘图作图神器 Matplotlib_各种画图小结

    20220612 excel也可以画图 20220525 U-net架构(例如最低分辨率为32x32像素).每个蓝框对应一个多通道特征图.通道的数量在方框的顶部表示.x-y尺寸在盒子的左下边缘.白盒代 ...

  9. 【Unity 3D 学习】 《Unity 3D 游戏开发》(第二版 宣雨凇著) 书中一些名字注解

    前言 在学习<Unity 3D 游戏开发>这本书的过程中碰到了一些术语,比如序列化.反序列化.反射等,这些基本都是常见的程序员行话,但是感觉自己对这些术语总是一知半解,为了让自己更清楚地知 ...

  10. 虚拟局域网软件开源_玩转虚拟机,十分钟学会一台电脑安装3个操作系统

    玩转虚拟机,十分钟学会一台电脑安装3个操作系统 本文目录 一.什么是虚拟机 1.普通虚拟机 2.Java虚拟机 二.虚拟机的作用 三.虚拟机的安装需求 四.常用的虚拟机软件 1.VMware虚拟机 2 ...

最新文章

  1. Slide:深入了解Oracle自动内存管理ASMM by Maclean Liu
  2. Let's go home(HDU-1824)
  3. c# 封装“度分秒”与弧度之间的转换 以及datagridview控件的应用
  4. 明天支付宝就开始提现收费了!这几招可以让你受用
  5. Android 蓝牙键盘快捷键
  6. 洛谷分支结构题单前一半 深基例2到例9 P5710 数的性质 P5711 闰年判断 P5712 Apples P5713 洛谷团队系统 P5714 肥胖问题 P5715 三位数排序 P5716月份天数
  7. win10 重装我们找不任何驱动器
  8. 2012年2月51CTO壁纸点评活动获奖名单【已结束】
  9. 微信外部浏览器支付遇到:支付场景非法、appid 未关联paysignkey、商户支付下单id非法 等问题
  10. 【flask】适合生产环境的高并发部署方案(gunicorn + gevent + supervisor)
  11. 如何只用三步就能快速写一个网页
  12. 通过线构造面(C# + ArcGIS Engine 9.2)
  13. a标签和阻止事件冒泡
  14. 自媒体视频号博主个人兴趣认证怎么选择?
  15. K8S中的容器网络概述(编写中)
  16. AI每日小练习之磨砂玻璃质感图标
  17. 数据科学与计算机学院凌云,向凌云副教授
  18. IIC通信协议(STM32学习笔记 一)
  19. 【论文阅读】Don‘t be so sure! Boosting ASR Decoding via Confidence Relaxation
  20. mysql错误:1093-You can’t specify target table for update in FROM clause的解决方法

热门文章

  1. 关于 Windows 设置tomcat开机自动启动
  2. 台湾Google云计算计划负责人叶平讲解云计算
  3. AI Image Enlarger黑科技-人工智能无损放大图片素材不失真
  4. 【洛谷P4234】最小差值生成树
  5. 实测Maven上传jar包到私服的方法归纳
  6. 除了方文山,用TA你也能帮周杰伦写歌词了
  7. 香农公式说明了什么_香农公式理解
  8. Git版本管理工具使用知识汇总
  9. python代码收费_莱斯大学学费 - 高速公路收费的python设计代码
  10. 小组取什么名字好_最好的小组该取什么名字呢?