没有合适的资源?快使用搜索试试~ 我知道了~
SoftwareX 9(2019)211原始软件出版物现场动画N. 克雷阿蒂河Vidmar,P.斯特扎伊OGS-Istituto Nazionale di Oceanografia e di Geofisica Sperimentale,Borgo Grotta Gigante 42 c,Sconico,的里雅斯特,意大利ar t i cl e i nf o文章历史记录:收到2018年收到修订版,2019年1月16日接受,2019年关键词:PythonOpenGL矢量场动画a b st ra ct矢量场可视化在许多科学领域都很常见,为此已经开发了许多方法。Python可能是编写通过开放图形库利用现代图形卡功能对Python和OpenGL的简要将展示一个示例应用程序,以说明如何交互式控制的速度,颜色和数量的动画粒子是可能的,因为整个渲染过程发生在GPU中的实时。可以显示背景图像以添加用于解释结果的信息。©2019作者由爱思唯尔公司出版这是CC BY-NC-ND下的开放获取文章许可证(http://creativecommons.org/licenses/by-nc-nd/4.0/)。代码元数据当前代码版本0.1用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX_2018_174法律代码许可证MIT使用git的代码版本控制系统使用Python、GLSL的编译要求,操作环境依赖性Linux,Windows,Mac OS,Python,PyOpenGL,Numpy如果可用,链接到开发人员文档/手册https://bvidmar.bitbucket.io/fieldanimation/问题支持电子邮件ncreati@inogs.it0. 介绍矢量场的可视化是研究物理现象时的一个众所周知的问题。机翼周围的空气流动、心室中的血液流动、海洋中的水循环、风速、电磁场都是矢量场的例子。矢量场可以通过纹理平流[1]和基于几何的技术来可视化。在前者中,我们可以考虑点噪声[2]和线积分卷积(LIC)[3]方法。后者的例子是箭头/箭头图[4],流线[5],粒子追踪[6]。基于纹理的方法创建矢量场的密集,连续和它们便宜,快速,并帮助用户识别流中的特征几何方法需求∗通讯作者。电子邮件地址:ncreati@inogs.it(N. Creati)。https://doi.org/10.1016/j.softx.2019.02.008更多的计算资源,并且通常产生流的粗略和稀疏的图像如果追踪元素的数量足够密集,几何方法的质量和细节可以收敛到基于纹理的表示[7]。随着计算机硬件能力的提高,模拟中使用的矢量场网格点的数量不断增加,但目前单个CPU的最高速度是在其物理极限(略高于3 GHz),由于冷却问题。克服这一限制的解决方案是开发多核CPU。在同一时间的图形处理已委托给GPU之间的许多专用核心分布渲染。传统的编程语言并不是通过CPU和GPU架构提供的并发级别获利的最佳选择。MPI、OpenMP、CUDA和OpenCL是为了在内核之间分配工作负载而构建的,但它们的使用并不简单,通常仅限于IT专家。我们在这里描述了一个轻量级和高效的包,我们称之为2352-7110/©2019作者。由爱思唯尔公司出版。这是一篇开放获取的文章,使用CC BY-NC-ND许可证(http://creativecommons.org/licenses/by-nc-nd/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softx212N. 克雷蒂河Vidmar和P.Sterzai/SoftwareX 9(2019)211FA显示了一个矢量场的实时动画图片,可视化了沿着流线移动的彩色粒子,绘制了暗示速度矢量情况下系统时间演化的路径线。FA是用Python编写的[8],可视化算法基于OpenGL。1. python编程语言Python是一种面向对象的解释性语言,也是数据科学家在中小型数据集上进行原型化、可视化和运行数据分析的首选编程语言之一。其成功的主要原因是,它简单、自由、与其他语言友好、面向对象 并且有很多可用的库。它是最受欢迎的编程语言之一(根据TIOBE指数排名第四,https://www.tiobe.com/tiobe-index/),并且可以在网络上轻松找到数百个教程。Python哲学意味着语言是自给自足的,开箱即用,拥有所需的一切。如果与其他编译语言相比,它的解释本身就很慢,但其清晰而简单的语法使其成为科学家的理想选择,他们不能或不愿意依赖商业,有时昂贵的应用程序。习惯于Fortran、C或C++的程序员会对Python的默认标准库(www.example.comlibrary/index.html)的丰富性感到惊讶https://docs.python.org/3/它包含内置模块(用C编写),提供对系统功能的访问,例如Python程序员无法访问的文件I/O,以及用Python编写的模块,为日常编程中出现的许多问题提供标准化解决方案。Python是一种动态类型语言,完全面向对象。在使用变量或声明其类型之前不需要声明变量。每个变量只是一个绑定到名称的对象,未使用的(即未绑定的)对象会被解释器的垃圾收集系统每个对象都是自记录的,并且由于Python的内省性质,可以在运行时提取任何类型的文档,如对象描述或使用示例,都可以包含在代码本身中。Python将变量和函数的定义组织在称为模块的脚本文件中。模块中定义的所有对象都可以导入到其他脚本或模块中以重用。设计为一起工作的Python模块通常组织在具有层次目录结构的包中。最后,解释型语言速度慢的常见定理可以通过几个软件包来克服,这些软件包带来了快速的C或C++编译扩展,可以使用Python的清晰语法进行访问。其中有Numpy [9],一个强大的软件包,提供快速数组存储和微积分,Scipy [10]提供信号,几何,统计和许多其他工具。Cython [11]允许使用类似Python 的 语 法 创 建 快 速 扩 展 , 以 及 包 装 现 有 的 C 库 。https://pypi.org上的Python包索引是一个宝贵的资源,可以免费获得提高Python功能和性能的包。2. OpenGLFA可视化算法基于OpenGL [12]。OpenGL是图形硬件的编程接口,用于生成2D/3D场景。它是一个免费和快速的工具,可以创建高质量的图像,但它也可以用来做一些计算。 它不是一种编程语言,但它为硬件提供了一个应用程序编程接口(API),以尽可能快速有效地获得所需的结果。OpenGL在用户应用程序和底层硬件之间提供了一个层,这样程序就可以在没有先验知识的情况下工作。图形系统以及它如何工作或执行。API控制屏幕上每个像素的行为,从而通过管理转换由几个OpenGL指令定义的3D场景模型(图形管道)所用户显示器上的最终输出是所定义的3D模型的渲染 该 库 用 于 CAD 工 程 和 建 筑 应 用 程 序 , 计 算 机 生 成 图 像(CGI),游戏和电影行业。它可以追溯到90年代初,从那时起发展到满足行业需求。在2004年之前,图形管道是固定的,程序员不能修改3D场景最终渲染所涉及的步骤。屏幕像素应该如何表现在图形硬件中是硬编码的。2004年后,随着OpenGL 2.0标准的出现,图形卡从仅仅渲染单元转向固定的图形流水线被抛弃,取而代之的是更动态的可编程流水线。这一变化得益于一种新的图形硬件--图形处理器(GPU)的引入。GPU是高度并行化的,速度惊人,因为它们有许多小的可编程处理器(着色器核心)负责执行小程序(着色器)。着色器是用一种特殊的高级编译语言编写的,称为GLSL(OpenGL着色语言),它指导渲染场景所需的一些步骤。可编程操作的数量随着时间的推移而增加,并且自OpenGL(4.5)的最后一个版本以来,着色器也可以在主渲染管道之外目前,可编程图形流水线由用户完全可定制的一些阶段组成速度的提高取决于渲染流水线在高并行架构上的执行;每个由着色器定义的可编程阶段都在多个着色器核心上执行(在现代GPU中多达数千个)。图形化不受OpenGL的控制:硬件可以完成这项任务。3D场景的构建是一个复杂的操作,因为OpenGL只提供基本的几何工具。场景中的每个对象都必须由许多顶点定义,这些顶点由值表示空间中的x、y和z,以点、线或三角形等几何图元组织,因此复杂场景的可视化可能需要编写数百行代码。 OpenGL应用程序必须集成在某些窗口系统中,以便提供输入,输出和用户与场景的交互,因为API只负责渲染。3. FA码设计目前,大型数值模型的可视化是棘手的,由于所需的图形资源的高需求。模糊科学家无法兼顾数值模型和可视化系统的效率。商业应用程序或免费应用程序,如Visit [13]或Paraview [14],通常用于可视化数据并理解其含义。不幸的是,这些应用程序只提供标准的可视化工具,如quivers或streamplots,并且速度很慢或需要将数据集转换为特定格式。Field Animation是在模拟软件包PyGmod [15]的开发过程中编写的,用于快速准确地可视化地球动力学变形场。由于固体(岩石)和流体(水或熔体)材料的不同流变行为,模拟的特点是强烈的横向粘度和速度变化在本文中,我们参考0.1版本。FA实现粒子跟踪可视化算法[16],其中粒子根据场流线移动,给出其图案和流线的瞬时图像。这是一种众所周知的方法,当种子的数量太大时,N. 克雷蒂河Vidmar和P.Sterzai/SoftwareX 9(2019)211213×Fig. 1. 粒子坐标x和y分别存储在纹理点颜色的四个字节(RGBA)中 的 两 个字节中。点的重叠掩盖了重要信息。因此,开发了FA,以便用户可以实时交互和更改某些参数[17],以改善可视化。这个Python包使用PyOpenGL [18]和Numpy包来获取大多数可用硬件。输入向量场是一个由Numpy处理的二维数组,渲染通过OpenGL进行Pure PyOpengl优于其他知名的Python包,如VisPy [19],Mayavi2[20],ModerGL [21]或pyglet [22],因为这些高级接口引入了不可避免的限制。PyOpenGL是标准OpenGLC库的原始和透明绑定这种方法允许用户自由地将FA作为小部件嵌入到任何其他OpenGL编程管道的采用[12]允许使用大量粒子(数百万),因此可以使用更详细的模型。大部分计算是由GPU完成的,并由GLSL编写的着色器进行检测CPU只负责一些数据结构和数组的初始化通过这种方法,程序- mer可以专注于将使用高效Python库导入的数据集FA有两个支持模块,纹理和着色器,处理OpenGL纹理和着色器代码加载,编译和链接。FieldAnimation类负责安排所有数据,为OpenGL上下文设置正确的参数 用于渲染场景并定义绘图工作流。动画图像是通过实例化FieldAnimation类创建的:清单1:动画图像创建动画图像= 场动画(宽度,高度,f i e l d)参数width和height是窗口的垂直和水平像素尺寸,field是一个包含field组件的NxMx2数组所有FA类和函数都尽可能简单,以减少依赖性,但新功能可以很容易地添加到FA子类中清单1中创建的动画图像可以集成到任何窗口系统中。3.1. 粒子跟踪算法FA实现了一个简单的OpenGL阶段序列来在屏幕上绘制:一个顶点着色器,一个计算着色器和一个片段着色器。OpenGL用固定的函数连接这些着色程序在绘图过程中,GPU执行着色器,沿着管道输送其输入和输出,直到像素在最后出来。顶点着色阶段处理顶点处理,如空间变换,照明和安排工作,为下一个渲染阶段。片段着色器管理几何图元光栅化后的阶段,并定义屏幕上像素的颜色粒子跟踪开始于在屏幕上生成随机粒子位置的数组。此数组存储在OpenGL纹理对象中,将它们编码为颜色(RGBA值)。例如,一个100像素的纹理可以用这种方式10.00点的位置。粒子坐标被编码为两个字节,RG为x,BA为y(见图1)。①的人。因此,每个纹理像素可以为每个坐标存储65536个不同的值。纹理被传递到顶点着色器中的GPU,原始粒子位置使用顶点着色器中的“texture fetchedmethod”[ 12 ]从RGBA纹理中检索从纹理中解码粒子位置是通过一个带有粒子绝对索引的数组来实现的,该数组传递给着色器。清单2:用于从RGBA纹理解码跟踪器位置的GLSL顶点着色器代码。#版本430layout(location = 0)in floatindex;均匀采样器2D示踪剂;均匀浮动示踪剂;//模型-视图-投影矩阵均匀mat4MVP;uniform floatpoint;out vec2tracerPos;voidmain(){//提取RGBA值vec4color =texture(tracers),vec2(fract(index / tracersRes),floor(index /tracersRes)/tracersRes);//将当前跟踪器位置从//像素01-02颜色. r / 255.0 +颜色.b,颜色.g/ 255.0 +颜色. a);gl_PointSize= pointSize;2016 -04-0401:01:02tracerPos.x,tracerPos.y,0,1);}核心算法在Field- Animation实例的draw方法中执行,其中在主渲染循环的每个步骤中发生以下操作1. 绘制向量场的模或用户定义的图像(如果需要);2. 设置帧缓冲区纹理(屏幕纹理)作为主要渲染目标:(a) 在屏幕纹理上绘制背景纹理具有固定的不透明度;(b) 从currentTrac- ersPosition纹理解码粒子位置并将其绘制在屏幕纹理上;3. 将渲染目标设置为活动窗口;4. 在活动窗口上绘制屏幕纹理5. 交换屏幕纹理和背景纹理;6. 计算新的粒子位置(在更新着色器中)并将其编码到nextTracersPosition纹理中;7. 交换nextTracersPosition纹理和currentTracersPosition纹理;第6步完全在GPU中进行,利用其大规模并行性。 2010年之前构建的GPU只能在 片段着色器,而较新的着色器可以利用专用的计算着色器。但是在计算着色器中进行更新有更多的优点(清单3):214N. 克雷蒂河Vidmar和P.Sterzai/SoftwareX 9(2019)2111. 代码可读性更强,渲染和计算过程清晰分离;2. 粒子位置解码是使用GLSLimageLoad函数完成的。这个函数为每个像素检索存储在图像中的精确值,而纹理函数,通常用于顶点或片段着色器,从最近的像素获得插值;3. 计 算 着 色 器 使 用 的 GPU 核 心 的 数 量 可 以 通 过OpenGLglDispatchCompute函数进行调整;4. 不需要分配额外的帧缓冲器纹理来存储每个渲染步骤中的新粒子位置5. 计算着色器可将性能提高10%清单3:来自实现的计算着色器的示例GLSL代码。图二. 软件包的示例目录中提供的应用程序的屏幕截图显示了偶极子的电场vec2random_pos = random_vector(new_seed);pos=mix(pos,random_pos,dropp);25年5月, 0)/255. 0)的范围内;//将新的位置保存在//outputimageimageStore(resultImage,uv,new_pos);}vec4new_pos =vec4(fract(pos= 255 . 0),在计算新的粒子位置期间,每个粒子P被移动到使用矢量场(从给定网格内插)计算的新位置P_ne_w(x_ne_w,y_ne_w),并且创建新的随机点P_rand(x_rand, y_rand如果Prand“足够接近”Pnew,则P将被Prand用于比较的距离由用户可选的衰减值驱动,该衰减值控制粒子的逐渐死亡。由于GLSL语言不提供一个本地的随机数发生器,ber几个算法进行了测试。所采用的随机发生器模型使用简单的整数哈希函数,并将结果插入浮点尾数[23]。此函数创建范围[0,1]内的均匀分布数。当然,我想,还可以使用一些替代方法来实现相同的场可视化:将随机点存储在顶点缓冲区对象(VBO)中,并在每个渲染步骤中通过变换反馈方法更新它[12];将CPU用于算法的计算部分,GPU仅用于渲染;• 使用CUDA或OpenCL编写整个算法。然而,所有上述方法增加了程序的复杂性,并可能降低效率。该算法可以通过使用自OpenGL 3.1以来引入的统一缓冲区对象(UBO)来进一步改进。所有变量都可以分组到指定给着色器属性的结构中。UBO使代码更清晰,并提高性能。4. 一个工作示例FA图像的创建非常简单:只需实例化FA类,传递向量字段数组并调用其drawpublicvoidrun(){//通过Globalindexorkitemprocessed//这是一个简单的例子。ivec2uv=ivec2(gl_GlobalInvocationID. xy);//RetrievsRGBAcolorfrminputimagevec4color=imageLoad(tracers,uv);//Convertscoloretrapositionsvec2pos=vec2(颜色. r / 255.0 +颜色。b、颜色。g / 255.0 +色。a);//Bi lnearinterplateofieldvaluefor//tracervec2velocity =mix(fieldMin,fieldMax,lookup Field(pos));//Normalizesfieldfloatspeed_t=length(velocity y)/legth(fieldMax);//Calculatestraffestvec2o f s e t =vec2(v elocity. x,v el o city ty .年)的滤波器速度因子;//上传数据类型位置信息,wrappingarond//这是一个绑定的对象。Periodicboundary//alongxandyif(periodic){pos =fract( 1 . 0 + pos + o f s e t);}否则{pos = pos + o f s e t ;}//Defineedforadomtrac ersvec2seed =(pos + uv)种子;//Decyisachhnceacerwilll//restartartartartartartartartarndomposititonn//在一个虚拟的数据块中创建一个新的数据块。//将函数值与函数值进行比较//在一个文件夹中创建一个文件夹//我的位置很低。//增加快速跟踪器的重置速率floatnw_seed=random_vec2(seed);floatdecay=decay+speed_tdrop =step(1 . 0− decay,new_seed);//Createsnwranddomtracrp osition··N. 克雷蒂河Vidmar和P.Sterzai/SoftwareX 9(2019)211215#默认值现场动画。速度因子= 0.25场动画. 衰减=0.003场动画。decayBoost = 0.01= −==-图三. 偶极子的电场:速度参数对可视化的影响。 (a)默认速度0.25;(b)速度1.8。 粒子移动得更快,并且路径线拉伸。图四、地 球 动力学 模拟的速度场。(a)颜色是cubehelix [24]色图中的场模量,参数为gamma 0.9,minSat 0.2,maxSat 5.0,minLight 0.5,maxLight 0.9,startHue 240.0,endHue 300.0。所实现的cubehelix算法可以使用HSL颜色空间值或仅使用标准的开始和旋转开关。(b)固定颜色。图五、 螺旋场:不同的 颗粒大小。(a)点大小=1;(b)点大小=2;(c)点大小=3。方法在主渲染循环中。一个例子(图。2)展示如何在可视化应用程序中使用FA,可以在examples目录中找到。该应用程序依赖于两个OpenGL包:pyimgui [25]用于交互式设置可视化参数,GLFW [26]用于在窗口系统中渲染由FA图中的交互式GUI。 2允许修改可视化FA作为实例属性嵌入的参数(清单4):清单4:FieldAnimation类属性参数的详细说明速度:设置场轨迹线的长度,即粒子的速度:值越高,粒子轨迹长度越长(图1)。 3)、衰变: 设置粒子的寿命;现场动画 . fadeOpacity=0.996场动画。color =(0 .五,一。0,1。0)现场动画.调色板=真域 动画.点 大小=1.0场动画 示踪剂计数=10000场动画.定期=True Field Animation . drawField =False216N. 克雷蒂河Vidmar和P.Sterzai/SoftwareX 9(2019)211图六、 风速模量作为背景图像与白色颗粒痕迹。衰减增强:在低强度场区域增加点密度;不透明度:设置粒子在背景图像上的不透明度;颜色:通过基于立方体螺旋的颜色图[24 ]根据场强设置粒子的颜色(图25)。 4 A);调色板: 将粒子的颜色设置为恒定值(图4B);点大小:设置动画粒子的大小(像素)(图)。 5)。大小还取决于OpenGLGL_VERTEX_POINT_SIZE标志。大于3的值会产生奇怪的效果。可以使用自定义标记代替点,但这会影响整体渲染速度;示踪剂数量设置移动粒子的数量周期性:如果勾选,则移动到渲染窗口边界之外的点将从相反的窗口进入;绘制场:绘制场模数作为背景图像。 在示例应用程序中,场模量通过立方体螺旋彩色图呈现(图1)。 6)。图中的字段组合框。图2允许在应用中实现并在图3至图6中示出的一些合成矢量场中进行选择。FA自动缩放提供的矢量场,以提供最佳的视觉效果。速度和衰减参数有助于微调可视化,并应用于更好地理解物理现象。5. 结论FA实现了一个基本的Python类,用动画粒子技术来描绘矢量场。它已被开发来显示在地球动力学模拟中发生的变形场,但它已被推广到可视化任何二维矢量场。OpenGL通过编程管道负责渲染和计算过程FA的整体性能不受使用Python作为主要编程语言的影响,因为大部分计算由GPU完成,其余操作利用Numpy方法。利益冲突作者声明他们没有利益冲突。引用[1]Laramee Robert S,Hauser Helwig,Doleisch Helmut,Vrolijk Benjamin,Post Frits H,Weiskopf Daniel. 流动可视化的最新技术:基于致密和纹理的技术。ComputGraphForum2004;23(2):203-21.http://dx.doi.org/10.1111/j.1467-8659.2004.00753.x网站,[2] van Wijk Jarke J. Spot Noise Texture Synthesis for Data Visualization.第18 届 计 算 机 图 形 与 交 互 技 术 年 会 论 文 集 。 ACM Press; 1991 ,http://dx.doi.org/10.1145/122718. 122751。[3]卡布拉尔·布莱恩,这位是利多姆·利思·凯西.使用线积分卷积成像矢量场。第20届计算机图形与交互技术年会论文集。SIGGRAPH '93,New York,NY,USA:ACM; 1993,p. 263-70. http://dx.doi.org/10.1145/166117.166151,网址http://doi.acm.org/10.1145/166117.166151网站,[4] Klassen RV,Harrington SJ. Shadowed hedgehogs:一种用于可视化3D矢 量 场 的 2D 切 片 的 技 术 。 第 91 章 .IEEE 计 算 Press.http://dx.doi.org/10.1109/visual.1991.175792网站。[5]Kenwright DN,Mallinson GD。一种基于双流函数的三维流线跟踪算法。92.第92章. IEEE计算Press. http://dx.doi.org/10.1109/visual.1992.235225网站。[6]莱恩·大卫·A. UFAT:用于时间相关流场的粒子示踪剂。 在:会议的可视化'94的 会 议 记 录 。 Los Alamitos , CA , USA : IEEE Computer Society Press;1994,p. 257 http://dl.acm.org/-64,URL www.example.com citation.cfm?电话:0510 - 877951135[7]韦斯科普夫·丹尼尔,埃勒巴赫·戈登.流动可视化概述。可视化手册2005;261-78。[8]范 罗 森 湾 Python 教 程 。 技 术 报 告 CS-R9526 , 阿 姆 斯 特 丹 : 信 息 学 中 心(CWI); 1995年。[9]Walt Stéfan van der,Colbert SCris,Varoquaux Gael. The numpyar-ray:astructure for efficient numerical computation. Comput Sci Eng2011;13(2):22-30.[10]Jones Eric,Oliphant Travis,Peterson Pearu,et al.SCiPy 2001年网址http://www.scipy.org/网站。[11][10]张文辉,张文辉. Cython:两个世界中最好的。Comput Sci Eng 2011;13(2):31-9. http://dx.doi的网站。org/10.1109/MCSE.2010.118,[12]伍·梅森,奈德·杰奇,戴维斯·汤姆,施莱纳. OpenGL编程指南。Addison-Wesley Reading;1999.[13]Childs Hank , Brugger Eric , Whitlock Brad , Meredith Jeremy , AhernSean,Pugmire David,Biagas Kathleen,Miller Mark,Harrison Cyrus,Weber GuntherH , Krishnan Hari , Fogal Thomas , Sanderson Allen ,Garth Christoph , Bethel E Wes , Camp David , Rübel Oliver , DurantMarc,Favre Jean M,Navrátil Paul. VisIt:一个终端用户工具,用于可视化和分析非常大的数据。优势:高性能可视化-实现极端规模的科学洞察力。2012年,第357比72[14]Ayachit Utkarsh。paraview指南:并行可视化应用程序。Kitware,Inc.; 2015年。[15]Creati Nicola,Vidmar Roberto,Sterzai Paolo.在HPC中使用Python进行地球 动 力 学 模 拟 。 在 Kathryn Huff 和 James Bergstra ( Eds.) 诉 讼第 14 届Python in Science大会2015; p.158比63[16]福 勒 · 大 卫 威 尔 · 科 林 用 于 表 示 单 变 量 向 量 场 映 射 的 笔 划 。CHCCS/SCDHM;1989年。[17]杨晓萍,王晓萍.流场可视化的重要性驱动粒子技术。在:2008年IEEE太平洋可视化研讨会。2008年,第71-8页。http://dx.doi.org/10.1109/PACIFICVIS.2008的网站。4475461[18]弗 莱 彻 · 迈 克 ·C PyOpenGL 。 可 在 线 查 阅 : http : //pyopengl 。sourceforge.net/网站。[19]坎帕诺拉·卢克,克莱因·阿尔玛,罗桑·西里尔,鲁吉尔·尼古拉斯. VisPy 2013.网址http://www.vispy.org/。[20]拉玛昌德朗·帕布玛雅维2008.网址https://github.com/enthought/mayavi.[21]Dombi Szabolcs。ModernGL。2016.网址:https://github.com/cprogrammer1994/ModernGL。[22]霍克纳·亚历克斯小矮人2007.网址https://bitbucket.org/pyglet/pyglet/wiki/Home.[23]Stackoverflow 。 glsl 的 随 机 噪 声 函 数 。 在 线 可 访 问 :https://stackoverflow.com/questions/4200224/random-noise-functions-为glsl。[24]绿色广告。天文强度图象显示的彩色方案。Bull Astron Soc India2011;(39):289-95.[25]贾沃斯基·米哈尔平吉。在线可从https://github.com/swistakm/pyimgui获取。[26]里姆弗洛里安glfw。在线可用发件人:https://github.com/FlorianRhiem/pyGLFW.
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功