VRML زبان مدل سازی واقعیت مجازی
ساعت ۱٢:٠۳ ‎ب.ظ روز یکشنبه ۱٩ اردیبهشت ۱۳۸٩  کلمات کلیدی:

VRML که به صورت V-R-M-L یا Vermil تلفظ می شود، کلمه ای اختصاری برای Virtual Reality Modeling Language  یا زبان مدل سازی واقعیت مجازی است. این زبان که توسعه واقعیت مجازی و فناوری های مدل سازی سه بعدی است در می 1994 توسط مارک بسکی [9] تن پاریسی[10] و گاوین بل[11] نوشته شد. آنها در انجمن حرفه ایی گرافیک کامپیوتری نسبت به ایجاد یک برنامه جلوه خاص ویژه برای دنیای انیمیشن سه بعدی تعاملی در روی وب اقدام نمودند که موتور محرک این کار زبان VRMLبود.


VRML در مقایسه با HTML
 VRML چیزی شبیه [12]HTML است .برخی آن را HTML  سه بعدی دانسته اند، استاندارد جدیدی برای توصیف دنیا و اشیاء سه بعدی است. خوشبختانه از ابتدای کار این زبان استاندارد بود. این زبان به عنوان یک تکنولوژی برای نمایش گرافیک سه بعدی مورد پذیرش قرار گرفته است زیرا راه قابل دسترس و راحت برای دنیای تعاملی است.
 VRML  در حقیقت یک زبان پویانمایی تعاملی است و اجازه می دهد سازنده های صفحات وب با آن فضای سه بعدی بسازند و اشیاء سه بعدی در وب را ببینند. در آن home page  تبدیل به home space  می شود.
 VRML  به عنوان نوعی زبان متنی این امکان را می دهد که دنیای مجازی همراه با اشیاء و اشکال سه بعدی با تمام رنگها و بافت ها، منابع نور، مه، سایه، انیمیشن و حتی جلوه های صوتی به منظور ظاهر واقعی دادن به آنها با استفاده از دستورالعملهای ساده به راحتی ایجاد شوند.
 VRML  یک ابر فضای سه بعدی را پدید می آورد که با فشردن کلیدهای روی کامپیوتر می توان در این جهان سه بعدی به هر سو رفت. در ارتباطات با سرعت کم قادر است کارکند چون هندسی با متن معمولی است و به خوبی down load  می شود و کدهایش به راحتی به ویندوز و linux  منتقل می شود.
HTML برای طراحی یک صفحه دو بعدی و VRML برای ساخت صحنه های سه بعدی که اصطلاحا به آنها Virtual World گفته می شود، به کار می رود . نتیجه اجرای فایل های HTML یک محیط دو بعدی با اصطلاح صفحه  Pageاست، ولی اجرای فایل های VRML توسط مرورگر، یک فضای سه بعدی را می سازد که اصطلاح صحنه Scene   را برایش به کاربرده‌اند.
VRMLبه نحوی توسعه داده شده که به HTML وابسته نباشد، با این حال در VRML نیز از همان پروتکل ها برای انتقال فایل از طریق اینترنت استفاده شده است .بنابراین هر چیز که در مورد اینترنت و وب آموخته اید، در VRML هم کاربرد خواهد داشت .شما می توانید فایل های ساخته شده توسط VRML را با مرورگرهای VRML یا مرورگرهای معمولی HTML مثل Internet Explorer 5 به بالا مشاهده کنید .
آدرس (URL) فایل های VRML شبیه فایل های HTML به نظر می رسند، با این تفاوت که پسوند فایل های HTML به صورت .html و .htm است، در حالی که در فایل های (( World files) VRML از پسوندهای.flr ، .wrz و .wrl استفاده می شود.فایل های VRML فقط محتوی متن هستند، با این حال پس از خوانده شدن توسط مرورگرها، یک محیط کاملا گرافیکی را می سازند.
برای نمایش یک فضای VRML از طریق وب باید یک برنامه به شکل Plugin برای مرورگر پیکره بندی شود که مشهورترین آنها paltinum وCosmoplayer  هستند به این ترتیب که مرورگر فایلهای world  را خوانده دستورات آن را به داخل یک محیط مستطیل شکل روی صفحه وب می کشد .یکبار که فایلها اجرا شوند و با مرورگر خاص باز شوند کدهای توصیفی اشیا را توصیف می کنند و آن را به صورت گرافیکی برای کاربر نمایش می دهد و نیازی نیست که هر بار مرورگر نصب گردد.
 اکثر مرورگرها رابط گرافیکی مشابهی دارند منلا Control panel  یا  dashboard که به کاربر اجازه می دهد در صحنه راه برود یا آن پرواز کند یا مسیری را navigate کند کاربر می تواند نور را کنترل کند و زاویه دید و حتی چشم انداز صحنه را تنظیم کند .
 مهمترین وظیفه VRML این است که مشخص کند چگونه یک صحنه سه بعدی در دنیای مجازی ساخته شود. اگر بخواهیم تخصصی تر بگوییم ،VRML یک زبان صحنه پردازی است هدف این بود که راه حلی آسان مثل HTML برای این کار ارائه شود که قابلیت توسعه نیز داشته باشد .
 از تفاوت  دیگرVRML با HTML در این است که می تواند به مرورگر دستوراتی را در مورد محل قرار گیری اشیاء سه بعدی و رنگ آنها بدهد و به طور اساسی این امکان را فراهم می کند تا مرورگر نقطه ها را به هم متصل کند. در حالی که HTML فقط گونه های ساده متن و تصاویر از پیش ساخته شده را برای ساخت یک صفحه دو بعدی در کنار هم قرار می دهد.
 
 مشخصه های زبانVRML
 VRML نه یک زبان برنامه نویسی همه منظوره مثل++ C و نه زبان اسکریپت مثل  جاوا اسکریپت و نه یک زبان تعریف صفحه مثل HTML است  .همان طور که قبلا نیز اشاره شد ، VRML یک زبان صحنه پردازی است که هندسه و رفتار یک صحنه سه بعدی که اصطلاحا به آن World گفته می شود را معین می کند. زبان مدل سازی واقعیت مجازی بدون نیاز به ایستگاه کاری یا نرم افزار های کاربردی ، قادر به ساخت تصاویر پیچیده سه بعدی در کامپیوترهای شخصی است و به وسیله دستورهای متنی اشکال چند ضلعی رنگی و واقعی را تعریف می کنند .
 
خصوصیات دو نسخه VRML.1.0 ، VRML 2.0
بینVRML1 و VRML2 تفاوتهایی وجود دارد. به طور خلاصه صحنه های ساخته شده توسطVRML1 ، ایستا هستند که اصطلاحا به آنها Static World  گفته می شود، در حالی که در VRML2 قابلیت حرکت و نیز ارتباط با کاربر Interactive World گنجانده شده است. ،VRML 1.0 فقط قابلیتها و دستورات پایه ای برای پیوند دادن اشیای دنیای مجازی به صحنه ها را شامل می شد.
  VRML 2.0یعنی با فرمت  UTF8رمز گشایی می شود. بنابراین می توان هر صحنه سه بعدی را با جزییات با استفاده از فایلهای بسیار کوچک ساخت و آنها به راحتی  down load  می شوند. این روی شبکه خیلی مهم است مثلا می توان یک تصویر متحرک سه بعدی logo  را به صفحه اول تعبیه کرد که این زمان کمتر از یک صفحه متحرک یا gif  زمان کمتری    می برد.   ویژگیها و خصوصیات هر یک از این نسخه ها، به شرح زیر است :


 خصوصیاتVRML 1.0
- اشیای استاندارد مکعب ، کره ، مخروط، استوانه ، متن
- اشیای اختیاری سطوح ، مجموعه خطوط، نشانگرها
- قابلیتهایfly through ،walk through ،examine scenes
- نورپردازی
- دوربین ها دید از زوایای مختلف
- قرار دادن بافت (texture) روی اشیاء
- کلیک روی پیوندها
- تعریف و استفاده مجدد از اشیاء
 
 VRML 2.0علاوه بر خصوصیات VRML 1.0 ویژگیهای زیر را نیز داراست :
- اشیای متحرک
- سویچ ها
- سنسورها
- اسکریپت ها جاوا یا جاوا اسکریپت
- درج شونده ها رنگ ، مکان ، جهت و..
- رنگ و بافت زمینه
- صوت فایل های WAV وMIDI
- بافت های متحرک
- Event routing
تعریف و استفاده مجدد از اشیاء و رفتارها (behaviors) و تاثیرپذیری و اضافه کردن گره های جدید به زبان ، با استفاده از PROTO وEXTERNPROTO
مهمترین تفاوت بین دو نسخه این است که VRML 2.0 تعریف دقیق و پذیرفته شده برای کل دنیا دارد که توسط موسسه جهانی استاندارد به تصویب رسیده است ، (ISO/IEC-14772-1:1997) در حالی که VRML 1.0 این گونه نیست .
 
 
اولین خط هر فایل VRML 2.0 با عبارت زیر شروع می شود:

#VRML V2.0 UTF8

ولی بیشتر مرورگرهای VRML 2.0 می توانند فایل های VRML 1.0 را بخوانند ولی هیچ کدام از مرورگرهای مخصوص VRML 1.0 نمی توانند فایل های VRML 2.0 را بخوانند .
 
اجزاء اساسی یک فایلVRML
در این قسمت به طور خیلی خلاصه به بررسی مفاهیم پایه ای برنامه نویسی VRML می پردازیم و بدین منظور VRML 1.0 را مورد بررسی قرار می دهیم .همه فایل های VRML با یک Header شروع می شوند که فایل را برای خوانده شدن و اجرا به مرورگر معرفی می کند برای VRML 1.0 به این صورت است که اولین خط هر فایل VRML 1.0 با عبارت زیر شروع می شود:

#VRML V 1.0 ascii
Separator{
Separator{
Material{
emissiveColor 100{
Sphere{}
{
{

 زبان مدل سازی واقعیت مجازی دارای فایل های متنی است که قادر به ترسیم اشکال گرافیکی است. اشکال تعریف شده در زبان VRML گره نامیده می شود .اجزاء یا اشیای پایه ای VRML را گره Node می نامند .سه نوع گره وجود دارد
 
Shape Nodes :که هندسه اشیاء را مشخص می کند، VRML 1 0چهار نوع شکل از پیش تعریف شده را پشتیبانی می کند :مکعب ، مخروط ، استوانه و کره
Property Nodes که چگونگی ترسیم شدن یک شی ء را مشخص می کند،یکی از مهمترین آنها، Material node است که رنگ و ظاهر یک شی ء را مشخص می کند .رنگها بر طبق استاندارد RGB تعریف می شوند
Grouping Nodes که به کمک آنها می توانیم گروهی از اشیاء را به عنوان یک شی ء جدید تعریف کنیم مهمترین نوع از این گره ها، گره Separator است که موجب می شود مجموعه ای از گره ها را بتوان به صورت یک گره واحد در نظر گرفت
 

گره های مختلف پس از مرتب شدن در کنار هم یک گراف صحنه Scene graph را تشکیل می دهند که مجموعه آنها نیز یک VRML World یا همان صحنه را می سازند. گراف صحنه Scene graph ،نمایش سلسله مراتبی همه اشیا بصری دنیای مجازی است


  VRMLحداقل 36 گره مختلف را شامل می شود که هر کدام از آنها نیز بحثها و مثالهای مخصوص به خود را دارند. هنگام استفاده از یک گره برنامه ریزی شده، گره به وسیله تکنیک های تصویر متحرک شروع به کار می کند. این گره ها مراحل عملیات را دنبال می کنند .گره ها اشکال سه بعدی را ایجاد و نقطه دید کاربر را معین می کنند .
 
 سند VRML چگونه است ؟
ساختارش شامل یک header  گراف صحنه است و خط اول سند با کاراکتر #  آغاز می شود. Scene graph دارای عبارتهای node, value HTML و پارامترهای آن است.
بعد از header باید گره ها نوشته شود که با یک آکولاد ( باز ) و تعداد و مقادریر فیلدها و یک آکولاد بسته بیان می شود. ازanchor ب رای لینک به صفخات مهم وخرکت به صفخات دیگر استفاده می شود.با استفاده از این اجزاء می توان برنامه ساده زیر را نوشت:

#VRML V 1.0 ascii

 مشکلات
پیاده سازی یک فضای سه بعدی در وب با Java. DirectX, VRML, Flash., QuickTime   انجام میشود و محیط هایی را برای کاربران فراهم میکنند اما از مشکلات3D ( plug in ) و شاید مرورگرهای خاص استو مشکل دیدن تصاویر down load کردن برخی نزم افزارها است که افزایش پهنای باند اتصالات، دیدن انیمیشن ها را ساده تر می کند. ارسال فایل VRML  که توصیف کننده دنیای مجازی است ، می توانند چند دقیقه یا بیش از نیم ساعت طول بکشد که بستگی به حجم دنیای محازی و سرعت اتصال دارد.VRMLبا تمام جذابیتهای دنیای واقعیت مجازی یک مشکل اساسی دارد ممکن است خیلی حجیم باشد و بارگذاری و تعامل آن بسیار کند که با افزایش پهنای باند این مشکل نیز برطرف خواهد شد.
نسل بعدی VRML را X3D  نامیده اند که همانند Xml ساده تر گسترش می یابد.

مدل مفهومی مرورگر VRML


 Cycle Through Three Shapes
#VRML V2.0 utf8
 
Group {
children [
DEF TOUCH TouchSensor {}
DEF SWITCH Switch {
whichChoice 0
choice [
Shape {
appearance Appearance {
material Material { diffuseColor 1 0 0 }
}
geometry Sphere {}
}
Shape {
appearance Appearance {
material Material { diffuseColor 0 1 0 }
}
geometry Box {}
}
Shape {
appearance Appearance {
material Material { diffuseColor 0 0 1 }
}
geometry Cone {}
}
]
}
]
}
 
DEF SCRIPT Script {
eventIn SFBool clicked
eventOut SFInt32 which
field SFInt32 num 0
url "vrmlscript:
function clicked(val) {
if(val) {
num = (num + 1) % 3;
// same as num = num + 1; if(num==3) num=0;
which = num;
}
}"
 
}
 
ROUTE TOUCH.isActive TO SCRIPT.clicked
ROUTE SCRIPT.which TO SWITCH.whichChoice
http://accad.osu.edu/~mlewis/VRML/Class/jsShapeCycle.html
D.2 Simple example
http://www.cs.vu.nl/~eliens/documents/vrml/reference/APPD.HTM#D.2
This example contains a simple scene defining a view of a red sphere and a blue box, lit by a directional light:

Figure D-1: Red sphere meets blue box
#VRML V2.0 utf8
Transform {
children [
NavigationInfo { headlight FALSE } # We'll add our own light
 
DirectionalLight { # First child
direction 0 0 -1 # Light illuminating the scene
}
 
Transform { # Second child - a red sphere
translation 3 0 1
children [
Shape {
geometry Sphere { radius 2.3 }
appearance Appearance {
material Material { diffuseColor 1 0 0 } # Red
}
}
]
}
 
Transform { # Third child - a blue box
      translation -2.4 .2 1
rotation 0 1 1 .9
children [
Shape {
geometry Box {}
appearance Appearance {
material Material { diffuseColor 0 0 1 } # Blue
}
}
]
}
 
] # end of children for world
}
 
 
PRIVATE
Figure D.1: Red sphere meets blue box
 
 

#VRML V2.0 utf8
Transform {
children [
NavigationInfo { headlight FALSE } # We'll add our own light
 
DirectionalLight { # First child
direction 0 0 -1 # Light illuminating the scene
}
 
Transform { # Second child - a red sphere
translation 3 0 1
children [
Shape {
geometry Sphere { radius 2.3 }
appearance Appearance {
material Material { diffuseColor 1 0 0 } # Red
}
}
]
}
 
Transform { # Third child - a blue box
translation -2.4 .2 1
rotation 0 1 1 .9
children [
Shape {
geometry Box {}
appearance Appearance {
material Material { diffuseColor 0 0 1 } # Blue
}
}
]
}
 
] # end of children for world
}