آموزش ساخت 3D با ActionScript

mfsh_1369

Member
سلام به همه ی دوستان
تو انجمن داشتم یه گشتی می زدم به یه مبحث برخوردم به اسمه : " چرخاندن يك جسم به طور سه بعدي " به نظرم رسید این مبحث رو ایجاد کنم تا یه مقدار بهتر و کاملتر در مورد این موضوع آموزش هایی داده بشه. هم یه مقدار این انجمن از یکنواختی در بیاد.
از همه ی دوستانی که در این زمینه کار هایی کردن یا توانایی آموزش دارند می خوام همکاری کنن.

با تشکر
 

mfsh_1369

Member
برای شروع من یه چند تا مثال در این زمینه پیوست می کنم که هر کدوم از این فایل ها با روش هایی متفاوت ساخته شده که در آینده در این مبحث توضیح داده می شه.
 

پیوست ها

  • textInSpace_fog.zip
    17.9 کیلوبایت · بازدیدها: 100
  • drawing10.zip
    4.4 کیلوبایت · بازدیدها: 80
  • sample3_organic_masks.zip
    17.5 کیلوبایت · بازدیدها: 73

shirini_forush

Well-Known Member
ببخشید دیر شد!

قبل از انتقالات انجمن پست زده بودم. پاک شد.
ظاهرا mfsh_1369 جان یه سری از نمونه های کتاب Flash 3D Cheats Most Wanted رو گذاشتن.
اگر توضیح لازم بود بفرمایید.
اینم یه سری نمونه ی دیگه(مال اون کتاب نیست):
 

پیوست ها

  • safir187(1).zip
    20.7 کیلوبایت · بازدیدها: 63
  • safir187(2).zip
    22.4 کیلوبایت · بازدیدها: 65
  • safir187(3).zip
    14.4 کیلوبایت · بازدیدها: 62

Nasab187

Member
در مورد سومي هم توضيح بدين . چه جوري صفحه ها پشت و روي هم قرار مي گيرن و رنگشون تنظيم ميشه ؟
 

mfsh_1369

Member
با سلام به همه دوستان
به دلیل تاخیری که در ارسال پست داشتم عذر می خوام.
با تشکر از همه پیغام هایتان.


امروز می خوام class ای رو آموزش بدم که با اون می توننید شکل ها هندسی 3d بسازید
امروز تمام مشخصات این کلاس رو براتون می گم و یک مثال را آموزش میدم
نام کلاس: Draw3d

--------------------------------------------------------------------------------------------------------------
متد های کلاس Draw3D | شرح
-------------------------------------------------------------------------------------------------------------
(Draw3D(pointCount,faceCount | یک متد سازنده ، یک عنصر جدید draw3D با تعداد
مشخص نقطه و وجه ایجاد می کند.
-------------------------------------------------------------------------------------------------------------
(Draw3D.setPoint(i,x,y,z |نقطه ای در نشانه گر i را در مختصات (x,y,z) تنظیم
می کند
------------------------------------------------------------------------------------------------------------
(Draw3D.setFace(i,a | یک وجه را در نشانگر i به همراه آرایه ای از نقاط داده
شده در a تعیین می کنه
------------------------------------------------------------------------------------------------------------
()Draw3D.clearTransform |تمام تغیرات شکل انجام شده را پاک می کند.
---------------------------------------------------------------------------------------------------------------
(Draw3D.scale(sx,sy,sz |شکل را در سه محور تغییر مقیاس می دهد
--------------------------------------------------------------------------------------------------------------
(Draw3D.translate(dx,dy,dz |شکل را در سه محور تغییر شکل می دهد
-------------------------------------------------------------------------------------------------------------
(Draw3D.rotateX(theta
(Draw3D.rotateY(theta
(Draw3D.rotateZ(theta
این 3 تابع نقاط را روی 3 محور x , y , z می چرخاند
------------------------------------------------------------------------------------------------------------
(Draw3D.applyPerspective(p |یک تابع پرسپکتیو ساده را با استفاده از مقدار p
اعمال می کند
------------------------------------------------------------------------------------------------------------
(Draw3D.setFillColor(r,g,b | رنگ زمینه را در زمان رندر چند ضلعی تنظیم می کند
------------------------------------------------------------------------------------------------------------
(Draw3D.setFillAlpha(alpha |شفافیت (alpha) را در هنگام رندر تنظیم می کند
--------------------------------------------------------------------------------------------------------------
(Draw3D.setLineColor(r,g,b |رنگ خطوط را در زمان رندر تنظیم می کند
------------------------------------------------------------------------------------------------------------
(Draw3D.setLineWeight(w | ضخامت خط را تنظیم می کند
-------------------------------------------------------------------------------------------------------------
()Draw3D.setShadeOn |سایه روشن را فعال می کند
----------------------------------------------------------------------------------------------------------
()Draw3D.shadeOff |سایه روشن را غیر فعال می کند
-------------------------------------------------------------------------------------------------------------------
()Draw3D.render |شکل را رندر می کند
---------------------------------------------------------------------------------------------------------------------------------------


مثال:
یک فایل جدید flash باز کنید و ابعاد آن را 400*400 بدهید با استفاده از کلاس Draw3D یک مکعب می سازیم
در فریم 1 کد های زیر را وارد کنید
PHP:
#include "draw3d.as"
m = new Draw3D (8, 6);
m.setPoint (0,  100,  100, -100); // Point 0
m.setPoint (1,  100, -100, -100); // Point 1
m.setPoint (2, -100, -100, -100); // Point 2
m.setPoint (3, -100,  100, -100); // Point 3
m.setPoint (4,  100,  100,  100); // Point 4
m.setPoint (5,  100, -100,  100); // Point 5
m.setPoint (6, -100, -100,  100); // Point 6
m.setPoint (7, -100,  100,  100); // Point 7
m.setShadeOn ();
m.setLineWeight (2);
m.setLineColor (0, 0, 0);
m.setFillColor (.4, .4, .8);
m.setFillAlpha (100);
m.setFace (0, new Array (0, 1, 2, 3));
m.setFace (1, new Array (4, 7, 6, 5));
m.setFace (2, new Array (0, 4, 5, 1));
m.setFace (3, new Array (1, 5, 6, 2));
m.setFace (4, new Array (2, 6, 7, 3));
m.setFace (5, new Array (4, 0, 3, 7));

theta = 0;

m.scene.onEnterFrame = function () {
	with (_root) { 
		m.clearTransform();
		m.rotateY (theta);
		m.applyPerspective (500);
		theta += .02;
		if (theta > 6.282) theta -= 6.282;
		m.render ();
	}
};
فایل را اجرا کنید.
----------------------------------------------------------------------------------------------------
این کد با فرا خوانی کلاس Draw3D و با استفاده از مند های آن یک مکعب رسم می کند 22 خط اول
در خط های بعد با یک loop با مشخصاتی که در خط های بالا وارد کردیم می سازد .
 

پیوست ها

  • draw3d.zip
    1.5 کیلوبایت · بازدیدها: 49
  • sample.zip
    4.3 کیلوبایت · بازدیدها: 40

a.gh.n

Member
مطالب جدید و جالبیه!
22.gif
 

roshanaiy

Active Member
اول از همه تشكر شديد و فراوان مي كنم از mfsh جان .
چرا بايد اين قدر سطح انجمن پايين باشه كه وقتي يه تاپيك ساده و سطحي مطرح مي شه هزار نفر بريزن جواب بدن و وقتي يك همچنين تاپيك هاي پر بار و غني و به روزي كه بسيار استفاده داره اما سخته فقط 9 نفر جواب بدن ! و اين قدر كسي بازديد نكنه و به روزش نكنه كه بره اون پايين يا اصلا از فهرست خارج شه !!!:eek:
اميدوارم از من نرنجي مدير . اما من اين رو ضعف شما مي دونم كه به همچين تاپيك ها يي رو بهش نمي پردازي و يه تاپيك مي زني با نام چي چي پلير در فلش و اون رو مي زاري اون بالا كه هيچ وقت پايين نياد .
اميدوارم تو ايران اهم و مهم تشخيص داده بشن
 

mfsh_1369

Member
با سلام به همه ی دوستان
من هم با آقای roshanaiy موافقم و ازشون واقعا ممنونم
اول بگم من دیگه نو این انجمن همچین کار هایی نمی کنم ! نمی گم کاره بزرگی کردم من فقط قصد داشتم یه آموزشی داده باشم اما وقتی دیدم از این کارم استقبال چندانی نشد کاملا ناامید شدم
دوستمون آقای roshanaiy راست میگه من هم قبلا این موضوع رو گفتم "این انجمن سطح پایینی داره "تو این انجمن به چیز هایی سطح پایین خیلی توجه می شه اما به موضوع هایی که واقعا ارزش دارن،توجه خاصی نمی شه
البته این موضوع خود به خود پیش نیومده خود کاربران این انجمن باعث شدن .
من واقعا تاسف می خورم وقتی می بینم یه سری از کاربران با زدن پست هایی مثل "من یک پروژه گرفتم اما نمی تونم انجام بدم لطفا حرکی می تونه برای من انجام بده " از این پست ها در این انجمن زیاده من دلیلش رو نمی دونم شاید یکی از دلایش ضعف در کاره مدیران باشه
در آخر من از همه ی کاربران و مدیران این انجمن تقاضا دارم در بهبود شرایط حال حاضر تلاش کنن
با تشکر MFSH
 
آخرین ویرایش:

roshanaiy

Active Member
متاسفانه همكاري خيلي كم ديده مي شه . قرار بود اين تاپيك با همكاري همه بالا بياد و به يه مرجع كامل 3d در فلش تبديل شه . به نظرم واقعا كار خوبي از آب در مياد . البته اگه همه همكاري مي كردن . بعد از يك مدت مي شد يكي از كاملترين مراجع . اما حيف .
ببينيد با بنده خدا mfsh چه كرديم كه اصلا بي خيال شد . آيا وقتي كسي يه پست مي زنه بايد در جوابش بگيم " چه پست خوبي زدي . مرسي ؟!!! " همين ؟ خوب دكمه تشكر كه اون پايين هست . اين قسمت پيغام براي ادامه مطلب و يا كامل كردن اون ه و كارهايي اين چنيني . اما انگار اين كار واقعا سخته !!!
 

omid020

Member
نه تو رو خدا اينجوري صحبت نكنيد ! اين اولين باريه كه مي بينم تو فوروم مجيد آنلاين يه همچين بحث هايي ميشه . شما اگه نتونيد فوروم مجيد آنلاين رو با اين سابقه طولاني بالا ببريد و توش فعاليت كنيد ، پس ديگه كجا ميخواين ياد بدين و ياد بگيرين .
من تعداد پستام زياد نيست ولي خيلي وقته كه از فوروم مجيد آنلاين استفاده مي كنم . حيف كه رشته درسيم به كامپيوتر و It چندان مربوط نيست و الا خودمم هم تا اونجا كه مي تونستم به دوستان كمك مي كردم 8)
 

roshanaiy

Active Member
اميد جان خيلي عجيبه كه شما اولين بارتونه كه همچين بحث هاي رو مي بينيد . البته من خودم تو انجمن هايي مثل گرافيك دوبعدي و اينا نديدم اما اينجا زياد ديدم . حالا الان هم نمي خوام موضوع تاپيك رو با جر و بحث خراب كنم . اما ديدم در فرومي كه به قول شما سابقه اي طولاني داره به موضوع هاي بي محتوا اهميت داده مي شه و به به موضوعات مهم اصلا توجهي نمي شه . البته شايد اين موضوع از نظر ديگران مهم نباشه اما به نظر من خيلي مهمه .
از mfsh جان خواهش مي كنم كه اين تاپيك رو ادامه بده . شايد خيلي ها فكر كنن هيچ اهميتي نداره . اما مطمعنا كسان ديگري هم هستند كه براشون مهمه . اصلا دوست ندارم كه بين بچه هاي اين انجمن با حرف هام تفرقه بي افته . (هر چند اتحاد زياد و رابطه صميمي اي هم ديده نمي شه) . اما به انجمن فوتوشاپ يه مراجعه بفرمايد . در تمام تاپيك ها مديرانش بدون شك حداقل 1 پاسخ را مي دهند و نه پاسخي الكي بلكه به جهت اطلاعاتي كه دارند و رشته شان در دانشگاه نيز همين است (البته اشاره مستقيم به كس خاصي در اين انجمن نيست) و يك پست نيز در بالا همه پست ها هست به جهت معرفي اعضا كه با يكديگر بيشتر آشنا شوند و خلاصه جوي صميمي بين آنها هست . حالا بگذريم و من اميدوارم روابط بهتر بشه (اينجا)
و اما در مورد مسئله 3d در فلش بايد بگم سطحش بالا هست و دوستان نيز اطلاع چنداني ندارند . من در پست بعدي توضيح مختصري در باب اين مسئله خواهم داد تا تاپيك ار خط اصليش منحرف نشه و دوستان بيشتر با اين موضوع و كاربردش آشنا بشن
 

roshanaiy

Active Member
سه بعدي چيست ؟

سه بعدي در اصل يعني سه محور يا سه صفحه . معمولا محور X يعني صفحه افقي ، محور Y‌يعني صفحه عمودي و محور Z يعني صفحه عمق . اگر چيزي را بالا و پايين كرده يا به گونه اي تغيير مقياس دهيم كه طويل تر به نظر برسد از محور Y استفاده كرده ايم . اگر چيزي را چپ و راست كرده يا به گونه اي تغيير مقياس دهيم كه عرض تر به نظر برسد از محور X استفاده كرده ايم و اگر چيزي را عقب و جلو (كوچك و بزرگ) كرده يا به گونه اي تقيير مقياس دهيم كه عميق تر به نظر برسد از محور Z استفاده كرده ايم .



سه بعدي سازي در فلش

فلش يك برنامه سه بعدي ساز مانند 3D Max , Maya , Swif 3D و ... نيست ولي راههاي مختلفي براي شبيه سازي در فلش وجود دارد . موضوع مهم در شبيه سازي تصاوير در فلش ، استفاده از ترفندهاست .

To Be Continue
 

omid020

Member
خوشحالم كردي :lol:، ما اميد يادگيريمون فقط به شما دوستاني است كه بدون هيچ چشم داشتي توي اين انجمن ها وقت ميزاريد .
ممنون
 

mfsh_1369

Member
سلام
از دوست عزیزroshanaiy واقعا ممنونم برای فعالیتی که دارین
از شما هم ممنونم آقای omid020 به نکته یه خوبی اشاره کردین هدف فعالیت من تو این انجمن فقط آموزش و کمک به دیگر دوستانه .
اما در مورد این موضوع(3D)
کاملا در مورد این موضوع در فلش آقای roshanaiy درست میگن

امادر مورد ادامه ی این مبحث
من به خاطر شما دوستان که می بینم به کارهای دیگران اهمیت می دین این موضوع رو ادامه می دم و در مقابل برای بار دوم می گم از همه ی دوستان می خوام تو این کار من رو همراهی کنن
*من به دلیل کارهای زیادی که دارم شاید نتونم به صورت مکرر آموزش رو ادامه بدم اما تلاشم رو می کنم.
با تشکر MFSH
 
آخرین ویرایش:

UnknownUser

Well-Known Member
سلام. واقعا خیلی خوبه که در مورد این چنین چیز هایی آموزش داده می شه من تو هیچ فررومی همچین چیزی رو ندیدم
تو این کار من هم قبلا فعایلتی داشتم اما فکر نمی کنم تا این حد بلد باشم اما اگه بتونم من هم همکاری می کنم :lol:
 

roshanaiy

Active Member
لول . ناشناخته جان خدا رو شكر كه شما پيدا شدي . و قدر دونستي . اگه بتوني در ادامه دادن اين تاپيك كمك كني خيلي ممنون مي شم .
از دوستان هم مي خوام ديگر توضيحات و تشكرات اضافي ( اسپم ) وارد مبحث نكنن و بگذارند يك دست باشه فقط جنبه آموزشي داشته باشه . براي تشكر از اون دكمه 58 * 20 پيكسلي كه روش نوشته تشكر استفاده كنيد
post_thanks.gif
:دي
 

جدیدترین ارسال ها

بالا