分享
 
 
 

基于VRML的虚拟音乐厅

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

基于VRML的虚拟音乐厅

一.VRML简介

有没有见过三维网页,有没有见过网上商店的3D展示品,是不是感叹它们的真实感强,引人入胜?其实很多就是用VRML做的,VRML(Virtual Reality Modeling Language)是一种与互联网结合,用来描述三维交互世界的程序语言,可应用于创建虚拟现实的对象、景象和展示模型等。但是我们今天要做的不是虚拟3D网页,而是虚拟3D音乐厅,一个属于你自己的"虚拟音乐厅",怎么样?心动吧,心动不如行动,跟我来吧!:)

二.准备工作

"磨刀不误砍材工",先来看看我们需要准备些什么:

首先,如果你的浏览器是Netscape的Navaigator的话,恭喜你,你不需要装任何插件就可浏览vrml网页;但是,如果是IE的话,还要装外挂程序,如ParallelGraphics公司开发的Cortona,或platinum公司开发的Cosmo Player,可以到上"华军软件园"down,网址是:http://www.onlinedown.net.安装过程就像装flash插件一样简单.

还要准备好Broland公司的最新"利器"--Delphi7.

好,"万事具备,只欠东风",现在就开始:

三.具体实现过程

打开Delphi7.0,新建一个Project,在Form上添加一个Button,按钮的Caption属性设为"打开音频文件";再添加一个OpenDialog控件,用于打开音频文件;然后再在控件栏中的Internet项选取WebBrowser控件,WebBrowser控件用于把IE浏览器内置于Form窗体里.

好,现在双击Button1,在里面填入以下代码:

procedure TForm1.Button1Click(Sender: TObject);

var

fp : TextFile;//文本文件

CurrentDir : string;//文件路径

sSelectSong:String;//用于组成VRML文件

begin

if OpenDialog1.Execute() then//选择音频文件

begin

sSelectSong:= sSelectSong+'Shape {appearance Appearance {material Material {}} geometry Sphere {radius 0.25}}';

sSelectSong:= sSelectSong+'Sound { source AudioClip { url "';

sSelectSong:= sSelectSong+ExtractFileName( OpenDialog1.FileName) ;//打开音频文件

sSelectSong:= sSelectSong+'" loop TRUE } ';

sSelectSong:= sSelectSong+' maxBack '+'10.0';

sSelectSong:= sSelectSong+' maxFront '+'10.0';

sSelectSong:= sSelectSong+' minBack '+'5';

sSelectSong:= sSelectSong+' minFront '+'6';

sSelectSong:= sSelectSong+'spatialize FALSE}';

//产生.vrml文件,并调用IE浏览器播放

AssignFile(fp, 'wrltestfile.wrl');//指定生成vrml的文件名

Rewrite(fp);

Writeln(fp,'#VRML V2.0 utf8');

Writeln(fp,sSelectSong); //写入vrml代码

CloseFile(fp);

GetDir(0,CurrentDir);//取文件路径

WebBrowser1.Navigate(CurrentDir+'/wrltestfile.wrl');

end

end;

简单吧,好,现在就运行看看.

四.运行与扩展程序

运行后,按"打开音频文件"选择.WAV或.MIDI音频文件播放(注意是.WAV或.MIDI文件,.MP3文件经笔者测试有些机子可以播放,有些不能,因为VRNL2.0标准只支持这两种音频格式和MPEG视频格式),用你的鼠标在上面前后或左右地慢慢拖动,你会感觉到声音的变化,好好地体会体会,是不是跟现实的声音传播一样真实啊?

但是,这时候的场景是非常简单的,里面只有一个圆球,四周漆黑一遍(姑且想象成在茫茫宇宙中吧:)),如果你已经熟悉VRML语法的话,你可以做出更加漂亮的场景,这样你在你自己做的场景里面听心爱的音乐,在里面走动,音乐随着你的走动在不断改变...

笔者通过对上面程序的扩展,作成一个完整的虚拟音乐播放器--虚拟音乐厅,并且参加广东省的高校杯获得一等奖,我想各位也可以通过扩展做一个属于自己的"虚拟音乐厅"..怎样扩展呢?其实通过以上程序的运行会产生一个名为wrltestfile.wrl的文件,包含以下vrml代码:

(1) #VRML V2.0 utf8

(2) Shape {

(3) appearance Appearance {material Material {}}

(4) geometry Sphere {radius 0.25}}

(5) Sound {source AudioClip {url "jita.WAV" loop TRUE }

(6) maxBack 10.0 maxFront 10.0 minBack 5 minFront 6

(7) spatialize FALSE

(8) }

也许有人会奇怪,这么一点代码就能做成上面的效果?秘密就在我们一开始装的vrml的插件,这些插件就有如一个游戏引擎一样重要,它借助浏览器执行VRML代码.让我们来分析以下上面的VRML代码吧,其实,上面的8句代码,我们在程序里面都有出现,只是第五句有点不同,对啦,就是加入了"jita.WAV",这是我们通过OpenDialog引入的外部.WAV音频文件.聪明的你可能想到了,通过改变或增加其他VRML代码,不是可以达到个丰富的互动效果吗,完全正确!你可以通过改变第四句的radius来改变圆球的大小,或者把圆球改成其他形状(例如做个音箱),你可以通过改变第六句的 maxBack , maxFront ,minBack和minFront来改变声源的扩展方向扩展范围,另外还可以通过在第八句的后面添加一下代码来加入你喜欢的场景背景图案:

(9) Background

(10) {

(11) frontUrl "bgsky.jpg"

(12) backUrl "bgsky.jpg"

(13) leftUrl "bgsky.jpg"

(14) rightUrl "bgsky.jpg"

(15) topUrl "bgsky.jpg"

(16) bottomUrl "bgsky.jpg"

(17) }

分析一下就知道,第(11)句加入场景中的前背景图片,第(12)句加入场景中的后背景图片,第(13)句加入场景中的左背景图片,第(14)句加入场景中的右背景图片,第(15)句加入场景中的上背景图片,第(16)句加入场景中的底背景图片,我在这里加入的图片是前后上下都一样的,你可以随意加入自己喜欢的图片,当然你的图片要放在程序本目录下.

当然你还可以加入其他的东东,加入其他的互动效果.例如要做成一个完整的播放器还要有菜单选择,播放暂停,换歌等功能,另外,你还可以定制多个声源点("音箱"),方法就是添加多个sound节点,例如你可以在上面代码的基础上添加一个背景声音(如鸟叫声)的代码:

Sound {source AudioClip {url "bird.WAV" loop TRUE }

然后分别调节maxBack , maxFront ,minBack和minFront,就可以出来很好的效果,但是要提醒的是增加过多的声源点将会导致占用资源过多,从而拖满你的机子哦,而且会出现重叠音现象.

充分发挥你的想象力吧,只要你知道了VRML的一些基本原理和知识,然后遵从以上的方式,没有你做不到的,只有你想不到的.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有