财讯中国

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

来源:网络 2021-12-24 15:24:04

引言

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

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

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-17 13:48:41
最强性能二合一轻薄本ROG幻X 1月24日即将开启预约
2022-01-17 13:48:30
小米竖向折叠屏 价格有惊喜主打女性市场
2022-01-17 13:48:19
QQ飞车手游S联赛总决赛 真我GT2系列成2022官方指定用机
2022-01-17 13:48:08
免费获得小米有品会员!小米有品有鱼App3月停运给用户送福利
2022-01-17 13:47:57
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-17 13:46:06
【手慢无】240GB固态秒杀促销 仅售168元
2022-01-17 12:12:24
AMD新款Radeon Pro专业卡:终于用上6nm
2022-01-17 12:12:16
《永劫无间》再曝新英雄 顾清寒傲立雪中
2022-01-17 12:12:07
三星新品发布会2月9日召开 S22系列即将登场
2022-01-17 12:12:00
12月显卡出货量下降19%,还是涨价的锅
2022-01-17 12:11:52
Intel i5-12400性能暴涨30%!还是超频管用
2022-01-17 12:11:44
黑鲨和玩家同在!新机沿用SSD存储?
2022-01-17 12:11:36
是买不起的样子:3090ti起步2万3
2022-01-17 12:11:27
无线充电加持!曝iPad Pro 6升级M2处理器
2022-01-17 12:11:19
宁德时代:不差钱还融资是为了增产
2022-01-17 12:11:11
好评94%!7万在线!《战神》PC版疯了
2022-01-17 12:11:00
【必买】支持MagSafe磁吸功能 魅族PANDAER“黑化独角兽”手机壳支持iPhone 13系列
2022-01-17 12:10:53
腾讯游戏:寒假打游戏的时间最多14个小时
2022-01-17 12:10:43
1小时游玩假?腾讯春节防沉迷日历发布
2022-01-17 12:10:34
2月9日亮相 Galaxy S22全新配色将来袭
2022-01-17 12:10:23
京东2022年将招聘超2万高校毕业生
2022-01-17 12:10:15
美国拍卖5G频谱 运营商投入超300亿美元
2022-01-17 12:10:06
8088元起 微软Surface Pro 8 商用版正式开售
2022-01-17 12:09:58
起售或是250欧元 Redmi Note 11将在欧洲发布
2022-01-17 12:09:50
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-17 12:08:06
好料好味道,有礼有年味——京味客祝您虎年福礼满满
好料好味道,有礼有年味——京味客祝您虎年福礼满满
2022-01-17 10:59:35
iPad Pro 6曝光:配置拉满 3月发布 7000起
2022-01-17 10:58:23
非公RTX 3090 Ti显卡海外竟上架:最贵2.9万 翻了一倍
2022-01-17 10:58:14
三星2月9日发布S22系列:真机在官网曝光
2022-01-17 10:58:03
三星S21手机限时立减1450 现3549 今晚截止
2022-01-17 10:56:24
2022年第五届CRO全球责任峰会成功举办
2022年第五届CRO全球责任峰会成功举办
2022-01-17 10:55:22
三星全年卖3亿台手机:卖最多的不是S21
2022-01-17 10:55:01
售价过万!曝三星Galaxy S22 Ultra有1TB版
2022-01-17 10:54:49
2022年PS5必买游戏榜单:照着买没错
2022-01-17 10:54:40
【手慢无】新装机神器 i5-12400F处理器1499元热销
2022-01-17 10:54:30
英特尔13代酷睿或将增大缓存容量 L2 + L3达到68 MB
2022-01-17 10:54:20
功耗爆表 i5-12400超频至 5.2 GHz
2022-01-17 10:54:07
配有手写笔 moto G Stylus手机视频曝光:屏幕开孔位于中央
2022-01-17 10:53:50
小米MIX FOLD2真机上手图曝光 内屏无挖孔
2022-01-17 10:53:38
通话变吵闹?iPhone13移除电话降噪功能
2022-01-17 10:53:25
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-17 10:49:36
周秉钧韩银山一行参观广东东江纵队纪念馆
周秉钧韩银山一行参观广东东江纵队纪念馆
2022-01-17 09:21:35
小米新机海外发售:竟然比小米12 Pro强
2022-01-17 09:09:34
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-17 09:08:04
iPad Pro 6曝光:升级M2处理器并支持120HZ高刷新率
iPad Pro 6曝光:升级M2处理器并支持120HZ高刷新率
2022-01-17 08:41:04
苹果新旗舰AR设备曝光:可支持8K分辨率,售价超万元
苹果新旗舰AR设备曝光:可支持8K分辨率,售价超万元
2022-01-17 08:38:24
三星S22 Ultra曝光:12GB+512GB版本售价超万元
三星S22 Ultra曝光:12GB+512GB版本售价超万元
2022-01-17 08:33:04
成本上升!曝AMD EPYC处理器涨价10%~30%!
成本上升!曝AMD EPYC处理器涨价10%~30%!
2022-01-17 08:31:18
中国区12月显卡出货量出炉:七彩虹近20万出货量稳坐第一
中国区12月显卡出货量出炉:七彩虹近20万出货量稳坐第一
2022-01-17 08:28:59
Intel i5-12400全核超频5.2GHz:最大加速功耗117W
Intel i5-12400全核超频5.2GHz:最大加速功耗117W
2022-01-17 08:27:51
微信iOS版更新加入语音暂停功能:长语音消息可暂停并继续播放
微信iOS版更新加入语音暂停功能:长语音消息可暂停并继续播放
2022-01-17 08:26:14
低级错误!火狐浏览器无法上网原因竟是程序员大小写搞错了
低级错误!火狐浏览器无法上网原因竟是程序员大小写搞错了
2022-01-17 08:24:11
藏起来我就用不了了?教你如何在Win11上找出隐藏IE浏览器
藏起来我就用不了了?教你如何在Win11上找出隐藏IE浏览器
2022-01-17 08:22:23
一键切换不用愁!Win11必备小工具让体验更顺手
一键切换不用愁!Win11必备小工具让体验更顺手
2022-01-17 08:18:40
想让Win11运行Win10开始菜单 下载这个小程序 1秒解决
2022-01-17 07:42:21
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-17 07:40:45
专业卡也用上6nm?AMD新款Radeon Pro专业卡曝光
2022-01-17 06:11:37
PC画质居然更优秀?《战神4》三平台对比
2022-01-17 06:11:29
显卡盲盒!800块有机会抽到RTX3090
2022-01-17 06:11:22
Intel 13代酷睿缓存或将提升至68MB
2022-01-17 06:11:14
三星Galaxy S22发布会将在2月9日23:00开启
2022-01-17 06:11:07
Powerbeats用户集体起诉苹果
2022-01-17 06:10:59
史上最烂《战地》续作!外挂都不想为其更新
2022-01-17 06:10:52
44万人强力围观 小米之家山西分舵开了个话题直接上热搜
2022-01-17 06:10:44
Win11测试出现乱码!中文阅读受到影响
2022-01-17 06:10:34
雷蛇灵刃14发布:标配锐龙9 6900HX 顶配3080Ti 售价1.3万
2022-01-17 06:10:25
美国玩家也氪金!《原神》2021年在美国狂赚近25亿人民币
2022-01-17 06:10:17
小米平板5系列全量更新MIUI13 不会更新的看这里
2022-01-17 06:10:09
苹果首次允许App内第三方支付
2022-01-17 06:10:00
十年了!Windows11新音量调节指示器
2022-01-17 06:09:52
买得起Kindle看不起书 到底谁在为电子水墨屏买单?
2022-01-17 06:09:44
摩托罗拉新机曝光 搭载骁龙SM8475+125W快充
2022-01-17 06:09:34
威刚秀肌肉!PCIe 5.0固态读取速度恐怖!14GB/s
2022-01-17 06:09:25
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-17 06:08:02
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-16 22:46:35
曝iPhone 14全系标配120Hz:起售价还是5999
2022-01-16 21:09:44
ROG新品!在CES推出42英寸显示器 OLED面板
2022-01-16 21:09:33
12代酷睿新品!雷神推出游戏/设计新主机
2022-01-16 21:09:21
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-16 21:08:01
Moto新机曝光,即将开启两亿像素新时代
2022-01-16 19:41:57
小米11系列开启推送MIUI 13系统,公测反馈良好
2022-01-16 19:41:44
红魔7跑分、配置曝光,单核1219,多核3732
2022-01-16 19:40:37
Redmi K50 高配版有望搭载索尼 IMX766 传感器
2022-01-16 19:40:15
解决镀金端子氧化发黑问题 苹果将推新版Lightning充电线
2022-01-16 19:40:02
120Hz高刷 OPPO平板电脑现身跑分网站
2022-01-16 19:39:51
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-16 19:38:29
2000元到手 骁龙680版Redmi Note11要来
2022-01-16 18:10:05
2月9日见!三星S22系列手机发布会定档
2022-01-16 18:09:49
小米 11 Ultra开启内测NFC“读写勿扰”与“解锁后使用”功能
2022-01-16 18:09:35
后置四摄 红米Redmi Note 11S渲染图曝光
2022-01-16 18:09:21
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-16 18:08:02
现磨咖啡5元一杯 蜜雪冰城讨好小镇青年
2022-01-16 17:18:11
又一家中资企业打入日本加密货币市场 Amber数亿日元买下持牌交易所
2022-01-16 17:17:59
电动车 没有新革命
2022-01-16 17:17:47
电动车“私桩共享可行吗”引热议 威马汽车创始人给答案
2022-01-16 17:17:37
防疲劳、还是导航信号?高速路上的绿色激光灯有什么用?
2022-01-16 17:17:25
AT&T、Dish和T-Mobile投入数十亿美元购买更多5G频谱
2022-01-16 17:17:14
美国税局可能会对NFT和加密货币征收不同的税
2022-01-16 17:17:03
虚拟偶像满足粉丝想象?专家预警或影响结婚生子
2022-01-16 17:16:50

热门文章

热点专题