C#应用视频教程2.1 OPENGL虚拟仿真介绍

OPENGL的虚拟仿真对于工控自动化的意义很大,虽然市面上有很多的第三方软件比如Solidworks,Mathlab,ProE等等软件可以做仿真,而且能够实现的功能包括了流体分析,力学分析,摩擦力分析等等,这些都是我们自己写一个简单仿真软件无法实现的,然而如果要做一个标准的软件,我们就只能使用C++,C#,JAVA这些软件自己写了。

????

仿真的意义在于可以提高编程效率,在空间轨迹规划部分,如果不能可视化的数据,我们就无法快速定位到错误,也无法直观的看到自己写的控制程序是否合理(在我的另一个TwinCAT倍福PLC教程中我介绍了可以用第三方软件的图标工具采集每个电机轴的位置,速度,加速度曲线,那样做确实也是一个做法,但是通用性,快捷性都不如自己用上位机来实现)

?

C#中集成OPENGL有很多个类库,最简单的是SharpGL,除此之外还有CSharpGL,CSGL,OpenTK,EWDraw,TAO等等,本节教程将重点介绍ShargGL,因为简单的使用用这个就够了,其他类库性能更高,但是用法也更复杂,如果要移植到其他框架类库,其实只是部分代码改改,核心的思想都没有变。与OPENGL对应的是微软自家的DirectX,相比之下OPENGL的通用性更广,可以借鉴的资料也更多

?

如果要深入研究这部分内容,可以研究高手的代码(比如SharpGL为我们提供了一些范例程序),此外网上比较火的还有NEHE的教程,我都放在了本节教程的参考代码中(最好还是先看网上系列化的帖子入门学习)

?

首先是我们还是做WinForm的程序,把下载的SharpGL的类库都放到Debug目录下

?

把SharpGL.dll直接拖放到VS的工具箱,然后可以看到多出来几个控件,拖放一个OpenGLControl控件到窗体上

?

定位到这个控件的OpenGLDraw事件,然后直接在里面复制粘贴下面的代码(就是绘图的过程,跟基础教程的GDI+绘图很像)

?

这个代码的运行效果是绘制一个三角形,然后绘制一个矩形(基本照抄了网上的文章,但是跟他的部分有一些不一样,直接复制粘贴无法正常运行,其实就是差了一点点,比如画三角形他是OPENGL.TRIANGLES,而我是OPENGL.GL_TRIANGLES,可能是类库的版本不同导致的,前面讲了如果是移植到别的类库也就是名字不太一样)

?

接下来解释一下刚才的代码,前面初始化部分就不说了,你还是需要脑子里想清楚自己目前手里拿着一支笔,正好在画布的中间位置,笔尖垂直于画布(画布就是你刚才拖放的控件,你可以把控件拖放到其他地方,也可以修改大小,但是一旦开始画就是以这个控件当前尺寸为基础算起点)。每一次执行Translate就是沿着X,Y,Z平移指定的距离,每一次执行Rotate就是绕着X,Y,Z旋转指定的角度,而gl.LoadIdentity方法就是重置画笔到初始位置,gl.Vertex方法就是戳一个点,每绘制一个东西都是从gl.Begin(XXX)到gl.End结束

?

再接着复杂一点,我们除了随时可以调整画笔的位置和姿态,还可以随时修改画笔的颜色(注意是RGB的三种颜色的混合,比如R=1.0f,G=0.0f,B=0.0f就表示全是Red,G,B都没有,感兴趣的可以用PS的调色板观察一下各种颜色的RGB分配情况,只要知道可见光都可用RGB三种颜色的混合叠加出来,当然RGB也只是一种叠加模式,CMYK好像也是一种,还有更加低端的颜色处理方式比如灰度图像)

?

?

更多教学视频和资料下载,欢迎关注以下信息:

我的优酷空间:

http://i.youku.com/acetaohai123

?

我的在线论坛:

http://csrobot.gz01.bdysite.com/

?

问题交流:

QQ:910358960

邮箱:[email protected]

?

?

?

?

?

时间: 2024-10-13 17:04:17

C#应用视频教程2.1 OPENGL虚拟仿真介绍的相关文章

C#应用视频教程2.4 OPENGL虚拟仿真介绍

这一部分我们首先实现视图控制(包括了平移/旋转/缩放),前面我们已经讲过,通过lookat一个函数,或者通过translate+rotate两个函数,都能实现视图的控制(两个函数的方式比较简单,但是通用性不够,因为这个更像是画布就像去参观卖房子的模型,你可以把模型随便上下左右移动翻转看外面,但是如果要像第一人称视角到房子里面爬窗户,上房顶,钻地道,这种视角肯定是不够的.可以想象CS游戏中,整个地图场景必然是唯一的,每个游戏玩家都可以控制一组视角,视角的lookat九个参数不同导致了可以仰望,俯瞰

C#应用视频教程2.2 OPENGL虚拟仿真介绍

三维在理解了如何绘制2D元素之后,我们尝试绘制3D元素. 其实多个三角形也能够成四面体,多个长方形也能够成六面体,所以绘制3D元素的时候,只要顶点数量匹配就行了 ? 这里我们尤其注意,我把绘制之前的三个平移和三个旋转单独拿出来做成变量,如果你的TranslateZ默认值是0的话,你默认看到的是黄色面,如果把TranslateZ设置为负值,则看到了红色,且越来越小,如果把TranslateZ设置为正数,则啥也看不到了.这里读者还需要有一个额外的空间想象能力,就是你的观察视角在哪里.默认的时候你的观

C#应用视频教程2.3 OPENGL虚拟仿真介绍

本节最重要的一个内容,就是让视野可以平移+旋转+缩放(就像打CS游戏一样以第一人称视角去观察物体,如果可能的话W,S,A,D四个按键控制人物移动,还有鼠标控制视角),本节最重要的一个概念就是设置观察视角(gl.LookAt函数,这个函数一共有九个参数,我们可以分成三组,第一组XYZ表示了眼睛的位置,第二组XYZ表示了物体的XYZ,第三组代表人眼睛的朝向,正常为(0,1,0),如果不用眼睛而是用相机作比喻,相机正常安装放置,也可以倒180度安装放置,则对应参数为(0,-1,0),也可以斜着放置,总

虚拟仿真实验室

1.虚拟仿真实验室的国内现状 虚拟仿真实验室是虚拟现实技术应用研究的重要载体. 随着虚拟实验技术的成熟,人们开始认识到虚拟仿真实验室在教育领域的应用价值,它除了可以辅助高校的科研工作,在实验教学方面也具有如利用率高.易维护等诸多优点.近年来,国内的许多高校都根据自身科研和教学的需求建立了一些虚拟实验室. 对于国内教学型虚拟实验室的建设,有关部门提出如下几点建议: 1.用"平民化"的技术实现教学型虚拟实验室的建设和应用 2.更新实验教学观念,重新认识虚拟实验室 3.切合实际,合理选择开发

虚拟仿真实验教学开启新时代

华锐视点主营业务是为国内政府单位和民营企业提供专业的虚拟现实解决方案,包括:智慧城市综合解决方案.商业地产虚拟仿真系统.数字城市.展览展示.城市规划.数字沙盘.城市应用.三维动画.环幕立体.园林景观.工业流程模拟.Ipad售楼系统.景区三维展示.网络三维展馆.三维培训课件.水利电力GIS系统等一体化的服务以及全方位的解决方案. 随着虚拟仿真技术的发展,虚拟仿真实验教学已成为一种重要的教学方式.它不仅能克服传统实验时间.空间上的限制,还具有极强的交互性,可进行实验过程的指导,实验成绩的统计查询等实

虚拟仿真引擎中的消息机制

 1.虚拟仿真引擎和游戏引擎在消息机制方面的异同 虚拟仿真引擎与游戏引擎极为相似,但又有其不同之处.游戏引擎重在游戏体验,所以60-120HZ的画面刷新率和事件刷新率依然足够.但虚拟仿真引擎不但需要仿真体验,更需要更高速度的消息机制.试想在动作捕捉的应用中,动作捕捉设备的刷新率的典型值是120HZ,或者是需要记录一个设备的运动轨迹,也需要更高的刷新率.但是在中等以上复杂度的渲染中根本无法达到120HZ,同时如果需要进行立体渲染,可以预见渲染速率是不会超过60HZ的,因为超过60HZ的立体渲染

虚拟仿真引擎消息机制

 1.虚拟仿真引擎和游戏引擎在消息机制方面的异同 虚拟仿真引擎与游戏引擎极为相似,但又有其不同之处. 游戏引擎重在游戏体验.所以60-120HZ的画面刷新率和事件刷新率依旧足够.但虚拟仿真引擎不但须要仿真体验.更须要更快速度的消息机制.试想在动作捕捉的应用中,动作捕捉设备的刷新率的典型值是120HZ,或者是须要记录一个设备的运动轨迹,也须要更高的刷新率.可是在中等以上复杂度的渲染中根本无法达到120HZ,同一时候假设须要进行立体渲染,能够预见渲染速率是不会超过60HZ的,由于超过60HZ的立

虚拟仿真调试在线课堂-第一期

目录 虚拟仿真调试在线课堂-第一期 前言.网盘文件说明 一.三菱Q系列编程软件GX works2的安装 二.三菱PLC程序编写演示 三.三菱MX component通讯软件的配置 四.与虚拟仿真环境的信号调试 4.0 整体通讯原理解析 4.1 Ugateway软件的安装 4.2 GX_Works2运行仿真 4.3 Ugateway软件的设置 4.4 运行虚拟仿真模型 五.虚拟设备功能结构分析 六.样例控制程序解析 七.编写控制程序调试教学 虚拟仿真调试在线课堂-第一期 前言.网盘文件说明 网盘文

【转】OpenGL相关函数库介绍

原文:http://blog.chinaunix.net/uid-20638550-id-1909182.html OpenGL 函数库相关的API有核心库(gl).实用库(glu).辅助库(aux).实用工具库(glut).窗口库(glx.agl.wgl)和扩展函数库等. 从图1可以看出,gl是核心,glu是对gl的部分封装.glx.agl.wgl 是针对不同窗口系统的函数.glut是为跨平台的OpenGL程序的工具包,比aux功能强大.扩展函数库是硬件厂商为实现硬件更新利用OpenGL的扩