财讯中国

交互式虚拟三维环境的设计简介

来源:网络 2022-01-24 19:30:14

引言

虚拟现实,是指用计算机生成的一种虚拟环境,它能使人们进入一个三维的、多媒体的虚拟世界,通过一些操作界面,与其中的虚拟对象进行交互,再配合各种传感器和机械部件,给人们带来一种身临其境的感受。随着计算机软硬件的发展以及图形处理能力的增强,虚拟现实技术在军事、医疗、教育、工业以及游戏中的应用已经越来越广泛。

虚拟三维环境是虚拟现实技术中一个极其重要的部分,虽然可以用现成的三维引擎来制作,但是由于绝大多数的三维引擎价格不菲,并且其主要面向三维游戏市场。所以,如果要解决的问题不是特别复杂,完全可以通过 自己编程并使用一些工具软件来完成。

1 开发环境与软件

1.1 Microsoft Visual C++ 6.0

Microsoft Visual C++6.0(以下简称为 vC++6.0)是由微软公司出品的功能强大的可视化开发平台之一,我们可以利用它在 Windows 操作系统上完成应用程序的创建、编码、测试、完善等各个阶段的工作。

I.2 OpenGL

OpenGL(开放性图形库 Open Graphics Library)是一个3DAPI,它独立于硬件系统和操作系统,是跨平台的“图形硬件的软件接口”,具有高度的可移植性。它包括了大量的绘图和显示函数,用于快速创建实时 3D图形,主要用于图形专业 领域 ,已经 成 为工 业 标准,目前的最新版本是OpenGL2.0。

1.3 3dsmax 7

3ds max 7是由Autcdesk公司出品的用于制作3D模型和动画的软件,使用它可以制作出栩栩如生的人物、动物、植物和建筑物等各种 3D模型和动画。我们使用 3ds max 7来制作一些动植物、建筑物的 3D模型,并将其导出为 3ds文件,然后在虚拟三维环境中调用。

1.4 Vue 5 Infinite

Vue5 Infinite(以下简称为 vue5)由e-on软件公司出品,它也可以用来制作 3D模型和动画,其特长在于对 3D 自然环境的模拟。在虚拟三维环境中,天空的真实感是影响视觉效果的重要因素之一,我们使用 Vue5的环境模拟功能制作出在各种大气条件下的天空的图片,然后把这些图片作为虚拟三维环境中的“天空盒”的材质贴图,展现出逼真的大气环境效果。另外,我们还可以使用 Vue5强大的地形编辑功能制作出一些不同特征的地形模型来充实虚拟三维场景。

2 虚拟场景中的三维模型的制作

2.1 天空盒模型

我们使用3ds max 7等工具软件来制作虚拟三维场景中的3D模型等元素。首先从天空开始,打开 3ds max 7,创建一个立方体 ,调整其边长到一个比较大的值(比如 2000米)我们把这个立方体称为天空盒。接着制作天空盒的材质贴图,也就是大气环境的图片。打开 Vue5,选择“载人大气”选项 ,然后从弹出的对话框中选择一种你需要的大气环境(当然你也可以使用其编辑功能创建自己想要的大气效果),然后点击文件菜单下的“导出天空”选项,将大气环境作为位图导出,再使用图片处理工具把整幅位图分解为与立方体六个面相对应的六幅位图;再次进入 3ds max 7,选中刚才的立方体,使用材质编辑器把刚才导出的天空图片赋予立方体,进行一些调整,天空盒的模型就完成了。最后一步就是把天空盒的模型导出为“3dS’’类型的文件,以便在程序中调用。

2.2 建筑物等各种实体的模型

根据需要,还应在场景中添加一些建筑物之类的三维模型,当然了,这些模型也是我们使用 3ds max 7制作的,具体的制作方法这里不再赘述。但是要注意,制作的 3D模型要在程序中实时绘制,因此,在制作模型时,不能一味追求精细,应该有意识地控制多边形的数量,以提高程序运行时的渲染速度。同样,把制作好的模型保存为“3ds”类型的文件。

2.3 树木等植物

一般采用 2D图片的方法来显示植物,这样 ,即使场景中有一大片树林,也不会影响渲染的速度。制作植物图片时 ,首先应选择合适 的植物图片(最好是正面平视的照片)对图片做一些简单的处理 ,使其满足以下几个要求:1)图片尺寸为 2的 N次方(32、64…);2)图片的底色以及不需要显示的地方为纯黑色。以便在程序中将这些地方处理成透明状态。最后,将图片保存为“bmp”格式,虚拟三维场景 中的植物就做好了。

2.4 生成地形数据

地形的创建不再采用预先建模的方式,而采用在程序中实时绘制的方法,便于在场景中漫游时检测并计算出所处位置的地面高度。具体步骤如下:首先,建立一个三维浮点型数组来保存地形的顶点坐标值,三个分量分别为地形顶点的x、Y、z坐标;然后,我们再建两个数组,分别用来保存顶点的索引值(整型)和曲面贴图的平面坐标(浮点型);接着 ,使用一段循环代码来随机生成地面的高度值,同时给三个数组赋值 ;最后,调用 OpenGL中的函数 glEnableClientState()和glVertexPointev()来载入地形顶点坐标数组,凋用 glEnableClientState()和glTexCoordPointer()函数来载人顶点索引数组。这样,地形的初始化工作就完成了,可以把这个过程写成一个函数,名字叫做 lniin(),便于在程序中调用。

3 创建基于 OpenGL的应用程序框架

OpenGL中所有的绘图函数都必须在 OpenGL的环境中运行,这个环境称为 OpenGL框架。OpenGL框架还必须运行在 Windows应用程序框架 中。也就是说,首先要建立Windows应用程序框架,用它响应和处理各种消息和命令,然后再 建立 OpenGI 运行环境 框架,并 在其中调用各种OpenOL绘 图函数 。

3.1 创建 Windows应用程序框架

首先,在 VC十 +6.0中新建 一个 Win32应用 程序(Win32 Application);然后,添加四个全局变量 htX2、hRC、hWnd和 hlnstance,分别用来保存设备描述表、着色描述表、窗口句柄和程序的实例句柄;接下来在应用程序中包含 g1.h,glu.h、glaux.h三个头文件以及 opengl32.1ib、glu32.1ib、glaux.1ib三个静态链接库文件;最后,在程序中加入 winMain()函数和 WndProc()函数(具体方法请参考 MSDN)。其中,WinMain()函数是主程序的入口,我们在其中添加一些代码创建 Windows窗口,并在 WinMain()函数 中使用PeekMessage()函数完成消息循环(即程序的主循环,被程序反复执行),它用来监听并向 WndProc()函数传递 肖息。WndProc()是一个窗口回调函数,用来处理各种窗口消息并响应外部事件。这样,一个基本的 Windows框架就建成了。

3.2 创建 OpenGL运行环境框架

步骤如下:1)对 OpenGL运行环境进行初始化设置;2)调用 OpenGL函数库中的函数完成绘图和显示工作并刷新屏幕,可以把完成这些工作的代码编写成一个函数,命名为DrawScene(),以便在程序中调用;3)在程序退出之前释放各种资源,断开 OpenGL与Windows窗121的连接。

3.3 框架程序间的关系

winMain()函数是程序的入口,我们用它创建一个窗口并设置其大小和样式。WndProc()回调函数会对“创建窗口”这个消息作出响应 ,马上调用 OpenGL框架中的 SetPixelFomat()函数检测机器对 OpenGL的支持情况,并安装OpenGL显示接口。当窗 口创建成功后,WndProc()函数对窗口尺寸变化消息作出响应,调用 OpenGL框架中的 gluPerspective()等函数对 OpenGL视 12I进行变换调整。Windows窗口生成后,就进入程序的主循环,在其中调用 DrawScene()函数绘制场景,同时监听和分配各种消息。程序退出时,调用 OpenGL中的 wglDeleteContext()函数来切断 OpenGL与 Windows窗口的连接。

关键词: 设计 简介 环境 三维 虚拟 交互式

相关新闻

交互式虚拟三维环境的设计简介
2022-01-24 19:30:14
饮水机原理图
2022-01-24 19:30:09
关于对LED球泡灯罩(灯壳)问题进行的研究分析
2022-01-24 19:30:04
Linux 5.17增加了对RISC-V sv48的支持
2022-01-24 18:22:03
微软强制升级Windows 10 20H2:还用上了机器学习
2022-01-24 18:21:56
经典控制面板不死:Windows 11又退回来一步
2022-01-24 18:21:49
小鹏P7泊车时失控加速?回应:弱势场景存在感知局限
2022-01-24 18:21:41
曝苹果今年秋季将发布迄今最多的硬件产品:包括四款iPhone 14
2022-01-24 18:21:34
苹果停止特殊福利!法国版iPhone 12/13“消失” 不享有特权
2022-01-24 18:21:27
春节回家必看:微信把你需要的功能集齐了
2022-01-24 18:21:19
Google Drive开始向用户警告其托管的可疑文件
2022-01-24 18:21:10
Google Chrome新改进:使手动保存网站密码变得更加容易
2022-01-24 18:21:02
新年新声势 Apple Music独家企划令新年虎虎"声"风
2022-01-24 18:09:17
小米MIX 5 Pro长啥样?设计师渲染图曝光细节
2022-01-24 18:09:09
约980元!5年前的AMD RX 550显卡被再次售卖
2022-01-24 18:09:00
【在线观点】官方提醒防骗,微信红包封面为啥成了“暴利生意”
2022-01-24 18:08:52
小米坐稳印度出货量头把交椅:占全年25%
2022-01-24 18:08:43
也适用于Surface Pro 8 LTE Surface Pro 8推送2022年1月驱动更新
2022-01-24 18:08:34
OPPO Reno7系列全球上线 将于2月4日在印度发布
2022-01-24 18:08:24
小米曾经花费200万元设计的新logo注册成功!
2022-01-24 18:08:15
Logo也要对标苹果?小米黑白商标获批
2022-01-24 18:08:04
安卓手机GPS导航使用技巧
2022-01-24 18:00:23
亿芯网强势亮相全国电子展
2022-01-24 18:00:16
信捷推出功能强大的小型可编程控制器XC系列
2022-01-24 18:00:10
伺服电机系统测试解决方案
2022-01-24 18:00:04
苹果客服回应iPhone 13粉屏:设备硬件没问题
2022-01-24 16:51:34
微信宣布“游戏春晚”:10款游戏竟然有《原神》 网友神调侃
2022-01-24 16:51:24
“苹果迄今为止最大新品”悬了!苹果汽车团队项目遭打击
2022-01-24 16:51:13
三年保值率超117% 丰田埃尔法成2021年中国最保值车型
2022-01-24 16:51:02
神舟ZX9游戏本进行更新:配有12代酷睿处理器
2022-01-24 16:38:46
外观有惊喜!特斯拉量产版Cybertruck照片首次曝光
2022-01-24 16:38:33
车顶维权、信息“裸奔”...中消协发布“2021年十大消费维权舆情热点”
2022-01-24 16:38:18
【手慢无】限量1950块 小米有品首发海鸥长津湖联名限量版手表
2022-01-24 16:38:04
microsdhc卡是什么
2022-01-24 16:30:26
无线病房呼叫系统硬件设计方案
2022-01-24 16:30:19
液晶电视面板的介绍(一)
2022-01-24 16:30:12
Power Integrations与Future Electronics签署全球分销协议
2022-01-24 16:30:04
QQ内测超级QQ秀:全新3D人物形象可付费改变外形
QQ内测超级QQ秀:全新3D人物形象可付费改变外形
2022-01-24 15:15:25
苹果回应iPhone13粉屏问题:是系统BUG,不是硬件问题
苹果回应iPhone13粉屏问题:是系统BUG,不是硬件问题
2022-01-24 15:13:03
因ISP遭DDoS攻击 至少8名安道尔Minecraft鱿鱼游戏选手淘汰
2022-01-24 15:10:47
蛮牛也要“触电” 曝兰博基尼即将彻底告别纯内燃机
2022-01-24 15:10:39
锤子数码科技破产申请已全部撤回
2022-01-24 15:10:32
日本零售商销售2017年的Radeon RX 550 约合979元
2022-01-24 15:10:24
北京冬奥礼仪服曝光:美丽动人 零下30度不怕冷
2022-01-24 15:10:17
民营火箭公司星河动力宣布完成12.7亿B及B+轮融资
2022-01-24 15:10:09
免费观看3分钟后要掏钱 微信视频号上线首个付费直播间
2022-01-24 15:10:02
比尔·盖茨发布拜年视频:祝福所有中国人 “新春快乐”
2022-01-24 15:09:54
丰田全新旗舰SUV渲染图曝光:1月26日全球首发
2022-01-24 15:09:46
闪铸用户故事 l 看工科大学生如何玩转3D打印
2022-01-24 15:09:39
Joby Aviation S4 eVTOL最新速度达到205英里/小时
2022-01-24 15:09:37
冰封竞界酷到底,机械师水冷电竞本直播来袭
2022-01-24 15:09:29
比科技股还惨 数字货币已蒸发一万亿市值
2022-01-24 15:09:28
[图]苹果迷惑设计图鉴
2022-01-24 15:09:17
1月27日开售 机械师钢铁侠版键鼠套装来啦
2022-01-24 15:09:16
比特币大跌,萨尔瓦多又买410枚,总统戏称要去麦当劳打工
2022-01-24 15:09:09
小米两款高分辨率旗舰曝光 Redmi也有大屏旗舰
2022-01-24 15:09:05
累计涨幅超1200% “14倍大牛股”九安医疗回应收购微软
2022-01-24 15:08:58
罗永浩锤子撤回全部破产申请?官方回应
2022-01-24 15:08:53
1亿像素!吉林一号卫星高清俯瞰中国田野:真地大物博
2022-01-24 15:08:47
长这样?小米MIX 5高清渲染图曝光 或配4800万像素前置屏下摄像头
2022-01-24 15:08:40
本周连上七天班 网友:感觉春节就放了三天
2022-01-24 15:08:37
【手慢无】优派2K不闪屏显示器999元
2022-01-24 15:08:28
飞行汽车AirCar获适航证:搭载宝马140马力1.6T发动机
2022-01-24 15:08:25
折叠屏手机的售价两年内或将至五六千元
2022-01-24 15:08:16
实测华为ADS自动泊车 轻松停进断头垂直车位:大V博主直呼市面最强
2022-01-24 15:08:14
搭载15.6英寸屏幕 华硕天选 3系列笔记本正式上架
2022-01-24 15:08:03
2021年十大消费维权舆情热点:车顶维权、超前点播上榜
2022-01-24 15:08:02
苹果年内秋季发布硬件产品远超以往:包含四款新iPhone及MacBook Pro等
苹果年内秋季发布硬件产品远超以往:包含四款新iPhone及MacBook Pro等
2022-01-24 15:06:03
面积单位换算及公式表
2022-01-24 15:00:24
如何提高逆变效率中的整机转换效率?
2022-01-24 15:00:16
第二代Nest恒温器拆解
2022-01-24 15:00:09
全球3G解析及网速大比拼
2022-01-24 15:00:02
苹果发布iOS 15.3 RC版并关闭iOS 15.2验证通道 主要进行安全更新并修复错误
苹果发布iOS 15.3 RC版并关闭iOS 15.2验证通道 主要进行安全更新并修复错误
2022-01-24 14:52:04
2K+120Hz!小米MIX 5屏幕参数曝光
2022-01-24 13:41:46
RTX 3050性能曝光:成绩接近GTX 1660Ti
2022-01-24 13:41:37
催生iOS 15.3 苹果回应iPhone 13粉屏
2022-01-24 13:41:29
2月1日开卖 Msi 12代酷睿游戏本要来啦
2022-01-24 13:41:21
6.7英寸2K 120Hz高刷屏!小米12 Ultra曝光 骁龙8加持
2022-01-24 13:41:13
新技术融于一身 尼克尔 Z 400mm f/2.8 TC VR S开发者访谈
2022-01-24 13:41:05
软件工程主管离职 苹果汽车再等3年
2022-01-24 13:40:56
华硕天选3它带着12代酷睿来了!华硕多款12代酷睿笔记本已经开启预约!
2022-01-24 13:40:48
锤子科技破产申请已撤回!罗永浩称不再做手机
2022-01-24 13:40:40
跳槽元宇宙 苹果汽车团队软件工程主管离职
2022-01-24 13:40:32
京东超体人气火爆!明星赵文卓到店与重庆消费者欢乐迎新年
2022-01-24 13:40:24
三星新旗舰S22发布会日期官方泄露:2月9号发布
2022-01-24 13:40:15
开放买买买 英国Apple Store正常营业
2022-01-24 13:40:07
旷世和无界要来啦 2022机械革命新春发布会将举行
2022-01-24 13:39:59
Apple Car可能要凉 团队高管几乎全部离职
2022-01-24 13:39:51
锤子手机要重生了?锤子数码科技破产申请已全部撤回
2022-01-24 13:39:42
首款无孔骁龙8旗舰手机曝光:22G内存+640G存储
2022-01-24 13:39:34
2台小米12 Pro的价格 三星S22价格曝光
2022-01-24 13:39:27
微信付费直播间上线:9块钱能看一天
2022-01-24 13:39:19
首发到手13499元 ROG幻X二合一轻薄本开启预约
2022-01-24 13:39:10
小米卢伟冰做Redmi K50调研 性价比和相机要哪个?
2022-01-24 13:38:59
游戏也有轻薄本 ROG幻X仅1.2kg塞入RTX 3050Ti
2022-01-24 13:38:50
撤回全部破产申请 锤子的债老罗快要还完了
2022-01-24 13:38:40
DJI Mavic 3发布重要固件 这一次值得更新
2022-01-24 13:38:29
《王者荣耀》海外收入超6亿元!《原神》成最赚钱中国出海手游
2022-01-24 13:38:16
三种凯华 BOX轴体可选 黑峡谷已发X3/X5 Pro三模机械键盘
2022-01-24 13:38:03
亚马逊市值蒸发2600亿美元,称霸全球云服务的他怎么了?
2022-01-24 13:30:36

热门文章

热点专题