آموزش ساخت بازی سه بعدی به زبان Basic با دارک بیسیک Dark Basic
تهیه و آموزش نرم افزار دارک بیسیک
 
 
پنج‌شنبه 12 اردیبهشت 1392 :: 23:11 ::  نويسنده : darkbasic

 با استفاده از دستورات این فصل می توانیم نور ایجاد کنیم . می توانیم رنگ آن ها ، جهت پخش ( جهتی که نور به آن سمت تابیده می شود ) و فاصله ای برد نورها ( مقدار فاصله ای که نور باید تا آن فاصله تابش داشته باشد ) و همچنین موقعیت مکانی آن ها را در فضای سه بعدی مشخص کنیم .

 
دستور MAKE LIGHT
با استفاده از این دستور می توانیم از 1 تا 7 نور جدید ایجاد کنیم . مانند دستورالعمل زیر :
 
MAKE LIGHT LightNumber
 
طبق این دستورالعمل به جای LightNumber شماره ای بین 1 تا هفت برای نام نورهای جدیدمان قرار می دهیم . یعنی تنها هشت نور می تواند در صحنه وجود داشته باشد . بعلاوه نور شماره ی صفر که نور پیش فرض صحنه است و همیشه وجود دارد . مانند مثال زیر :
 
Make Light 5
Wait Key
 
در این مثال نوری با شماره ی 5 ایجاد شد .
 
دستور DELETE LIGHT
این دستور نور ایجاد شده را از صحنه حذف می کند . مانند مثال زیر :
 
Make Light 1
Make Light 2
Delete Light 1
Wait Key
 
در این مثال نور هایی با شماره های 1 و 2 ایجاد و سپس نور شماره ی 1 حذف شد .
 
نکته : نور شماره ی صفر که نور پیش فرض صحنه است را نمی توانیم حذف کنیم .
 
دستور HIDE LIGHT
این دستور نور موجود در صحنه را غیر فعال می کند . یعنی با اجرای این دستور ، وجود نور مورد نظر هیچ تاثیری بر روی صحنه نخواهد داشت . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Cone 6,10
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,0
Wait 2000
Hide Light 0
Wait Key
 
در این مثال نور شماره ی صفر که نور پیش فرض صحنه است ، غیر فعال ( بی تاثیر ) می شود .
 
دستور SHOW LIGHT
اگر با دستور قبلی (HIDE LIGHT ) نوری را غیر غعال کرده بودیم . با این دستور می توانیم آن نور را دوباره فعال کنیم . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Cone 6,10
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,0
Hide Light 0
Wait 2000
Show Light 0
Wait Key
 
دستور POSITION LIGHT
با این دستور موقعت مکانی نور مورد نظرمان را در فضای سه بعدی مشخص می کنیم . مانند دستورالعمل زیر :
 
POSITION LIGHT LightNumber,X,Y,Z
 
طبق این دستورالعمل به جای LightNumber شماره ی نور مورد نظر و به جای X و Y و Z فاصله ی نور تا محور های X و Y و Z مختصات فضای سه بعدی را قرار می دهیم . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Sphere 6,10 : Ghost Object On 6
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,-150
Hide Light 0 : Make Light 1
Sync On : Sync Rate 30
intAngle As Integer = 0
Do
(Inc intAngle : intAngle = WrapValue(intAngle
Position Object 6,Sin(intAngle)*100,70,Cos(intAngle)*100
(X = Object Position X(6
(Y = Object Position Y(6
(Z = Object Position Z(6
Position Light 1,X,Y,Z
Control Camera Using Arrowkeys 0,1,1
Sync
Loop
 
در این مثال نور شماره یک با موقعت مکانی کره ( پا به پای کره ) حرکت می کند .
 
دستور SET LIGHT RANGE
این دستور مشخص می کند که نور مورد نظرمان تا چه مسافتی را روشن کند ( با چه شدتی پخش شود ) . مانند مثال زیر :
 
Make Object Sphere 1,10 : Position Object 1,0,-50,100
Make Object Sphere 2,10 : Position Object 2,0,150,150
Make Object Sphere 3,10 : Position Object 3,70,80,150
Make Object Sphere 4,10 : Position Object 4,-30,50,130
Make Object Sphere 5,10 : Position Object 5,10,100,120
Make Object Sphere 6,10 : Ghost Object On 6
Position Object 6,0,20,150
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,40,-50
Hide Light 0 : Make Light 1
Position Light 1,0,20,150
Sync On : Sync Rate 30
intRange As Integer = 0
Do
Inc intRange : If intRange > 1000 Then intRange = 0
Set Light Range 1,intRange
(Text 10,10,"Light Range ="+Str$(intRange
Control Camera Using Arrowkeys 0,1,1
Sync
Loop
 
دستور COLOR LIGHT
این دستور رنگ نور مورد نظرمان را تعیین می کند . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Sphere 6,10 : Ghost Object On 6
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,-150
Hide Light 0 : Make Light 1
(Color Light 1,Rgb(255,0,0
Sync On : Sync Rate 30
intAngle As Integer = 0
Do
(Inc intAngle : intAngle = WrapValue(intAngle
Position Object 6,Sin(intAngle)*100,70,Cos(intAngle)*100
(X = Object Position X(6
(Y = Object Position Y(6
(Z = Object Position Z(6
Position Light 1,X,Y,Z
Control Camera Using Arrowkeys 0,1,1
Sync
Loop
 
نورها در DarkBasic به دو دسته تقسیم می شوند .
1- نور نقطه ای یا همه سویه (POINT LIGHT )
نور نقطه ای نوری است که تمام اطراف خود را نورپردازی می کند . مانند خورشید و یا شمع .
2- نور جهت دار (SPOT LIGHT )
نور جهت دار تنها یک جهت را روشن می کند . مانند چراغ ماشین و یا پروژکتور ها که تنها به یک جهت نورپردازی دارند .
 
با ایجاد نور جدید توسط دستور Make Light نور از نوع Point Light یعنی نور نقطه ای ایجاد می شدند . مانند خورشید . می توانیم توسط دستورات Set Spot Light و Set Point Light نوع نور ها را عوض کنیم . مانند دستورات زیر :
 
دستور SET POINT LIGHT
با استفاده از این دستور نور مورد نظرمان را به نور نقطه ای ( Point Light ) تبدیل می کنیم . مانند دستورالعمل زیر :
 
SET POINT LIGHT LightNumber,X,Y,Z
 
طبق این دستورالعمل به جای LightNumber شماره ی نور و به جای X و Y و Z مختصات نور را در فضا مشخص می کنیم . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Box 7,400,10,400 : Position Object 7,0,100,0
Make Object Sphere 6,10 : Ghost Object On 6
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,-150
Set Point Light 0,0,0,0
(Color Light 0,Rgb(255,255,0
Sync On : Sync Rate 30
intAngle As Integer = 0
Do
(Inc intAngle : intAngle = WrapValue(intAngle
Position Object 6,Sin(intAngle)*100,70,Cos(intAngle)*100
(X = Object Position X(6
(Y = Object Position Y(6
(Z = Object Position Z(6
Position Light 0,X,Y,Z
((Text 10,10,"X = "+Str$(Light Position X(0
((Text 10,30,"Y = "+Str$(Light Position Y(0
((Text 10,50,"Z = "+Str$(Light Position Z(0
Rotate Light 0,0,90,0
Control Camera Using Arrowkeys 0,1,1
Sync
Loop
 
در این مثال نور پیش فرض را به نور نقطه ای تبدیل کردیم . سپس آن را در محیط می گردانیم .
 
دستور SET NORMALIZATION ON و دستور SET NORMALIZATION OFF
دستور Set Normalization On باعث می شود که نوردهی به اشیاء ، حالت نرمال و نرمی داشته باشد و دستور Set Normalization Off این حالت را خنثی می کند .
 
دستور SET SPOT LIGHT
این دستور نور مورد نظر را به نور جهت دارد تبدیل می کند . مانند دستورالعمل زیر :
 
SET SPOT LIGHT LightNumber,InnerAngle,OuterAngle
 
طبق این دستورالعمل به جای LightNumber شماره ی نور مورد نظر و به جای InnerAngle شعاع داخلی نوری که پخش می شد به شکل مخروط را قرار می دهیم و به جای OuterAngle شعاع خارجی نوری که پخش می شود بصورت تار و به شکل مخروط است ( نیمه شفاف است تا طبیعی به نظر برسد ) را قرار می دهیم . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Box 7,400,10,400 : Position Object 7,0,100,0
Make Object Sphere 6,10 :Ghost Object On 6
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,-150
Sync On : Sync Rate 60
intAngle As Integer = 0
hide Light 0
make light 2
set spot light 2,45,90
color light 2,512,100,100
position light 2,0,100,0
Set Normalization On
Do
(Inc intAngle : intAngle = WrapValue(intAngle
Position Object 6,Sin(intAngle)*100,70,Cos(intAngle)*100
(X = Object Position X(6
(Y = Object Position Y(6
(Z = Object Position Z(6
Control Camera Using Arrowkeys 0,1,1
rotate light 2,0,intAngle,0
Sync
Loop
 
دستور POINT LIGHT
با این دستور می توانیم جهت نور را با استفاده از مختصات یک نقطه ی فرضی در فضا مشخص کنیم . مانند دستورالعمل زیر :
 
POINT LIGHT LightNumber,X,Y,Z
 
طبق این دستورالعمل به جای LightNumber شماره ی نور مورد نظر و به جای X و Y و Z مختصات یک نقطه ی فرضی در فضا را قرار می دهیم ، تا نور به آن نقطه نگاه کند . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Box 7,400,10,400 : Position Object 7,0,100,0
Make Object Sphere 6,10 :Ghost Object On 6
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,-150
Sync On : Sync Rate 60
intAngle As Integer = 0
hide Light 0
make light 2
set spot light 2,45,90
color light 2,512,100,100
position light 2,0,100,0
Set Normalization On
Do
(Inc intAngle : intAngle = WrapValue(intAngle
Position Object 6,Sin(intAngle)*100,70,Cos(intAngle)*100
(X = Object Position X(6
(Y = Object Position Y(6
(Z = Object Position Z(6
Control Camera Using Arrowkeys 0,1,1
rotate light 2,0,intAngle,0
Point Light 2,0,0,500
Sync
Loop
 
دستور ROTATE LIGHT
این دستور نور مورد نظر را حول محور های X و Y و Z خودش می چرخاند . البته تاثیر این دستور فقط برای نورهایی از نوع Spot Light می باشد ، چون نور همه سویه به همه ی اطراف نور پخش می کند و چرخش آن تاثیری بر محیط نخواهد داشت . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Box 7,400,10,400 : Position Object 7,0,100,0
Make Object Sphere 6,10 : Ghost Object On 6
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,-150
Sync On : Sync Rate 60
intAngle As Integer = 0
hide Light 0
make light 2
set spot light 2,45,90
color light 2,512,100,100
position light 2,0,100,0
Set Normalization On
Do
(Inc intAngle : intAngle = WrapValue(intAngle
Position Object 6,Sin(intAngle)*100,70,Cos(intAngle)*100
(X = Object Position X(6
(Y = Object Position Y(6
(Z = Object Position Z(6
Control Camera Using Arrowkeys 0,1,1
rotate light 2,0,intAngle,0
Point Light 2,0,0,500
Sync
Loop
 
دستور FOG ON
این دستور باعث ایجاد مه در صحنه می شود .
 
دستور FOG COLOR
با این دستور رنگ مه ایجاد شده در صحنه را مشخص می کنیم .
 
دستور FOG DISTANCE
این دستور میزان دید دوربین را در مه مشخص می کند ، که کمترین دید دوربین حالتی است که در آن ،Fog Distance  برابر صفر است ، که هیچ چیز جز مه دیده نمی شود و بیشترین دید دوربین حالتی است که در آن Fog Distance برابر 5000 باشد ، که همه چیز دیده می شود و مه تاثیر بسیار کمی دارد . مانند مثال زیر :
 
Make Object Box 1,400,10,400 : Position Object 1,0,-5,0
Make Object Box 2,400,100,10 : Position Object 2,0,50,-200
Make Object Box 3,400,100,10 : Position Object 3,0,50,200
Make Object Box 4,10,100,400 : Position Object 4,-200,50,0
Make Object Box 5,10,100,400 : Position Object 5,200,50,0
Make Object Box 7,400,10,400 : Position Object 7,0,100,0
Make Object Sphere 6,10 : Ghost Object On 6
Load Image "C:\Program Files\Dark Basic Software\Dark Basic Professional\Help\gfx\backdrop.Jpg",1
For I=1 To 6 : TEXTURE OBJECT I,1 : Next I
Position Camera 0,50,-150
Sync On : Sync Rate 60
intAngle As Integer = 0
fog on
fog distance 3500
(fog color rgb(128,128,255
Do
(Inc intAngle : intAngle = WrapValue(intAngle
Position Object 6,Sin(intAngle)*100,70,Cos(intAngle)*100
Control Camera Using Arrowkeys 0,1,1
Sync
Loop
 
دستور FOG OFF
این دستور باعث حذف مه از صحنه می شود .



 
 
 

ورود کاربران

خوش آمدید! لطفا وارد حساب خود شوید

رمز عبور را فراموش کرده‌اید؟
حساب کاربری ندارید؟

فراموشی رمز عبور

نام کاربری یا ایمیل خود را وارد کنید

یا

ثبت نام کاربران

در چند ثانیه حساب کاربری خود را بسازید

قبلا ثبت نام کرده‌اید؟

نظرات کاربران

دیدگاه خود را با ما در میان بگذارید