تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 5 از 5

نام تاپيک: مباحث اختصاصی آموزشی سه بعدی (فلش)

  1. #1
    کاربر فعال انجمن دات نت عــــلی's Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    زیر سایه عرش الهی
    پست ها
    2,335

    پيش فرض مباحث اختصاصی آموزشی سه بعدی (فلش)

    با سلام خدمت عزيزان:

    اين هم آموزش سه بعدي فلش اميدوارم خوشتون بياد.

    سه بعدی چیست ؟
    یعنی صفحه افقی . محورX سه بعد در اصل یعنی سه محور یا سه صفحه .معمولا محور
    یعنی صفحه عمق . اگر چیزی را بالا یا Zیعنی صفحه عمودی ومحور Y
    Yپائین کرده یا به گونه ای تغییر مقیاس دهید که درازتر به نظر برسد از محور
    استفاده می کنید .اگر چیزی را چپ و راست کرده یا به گونه ای تغییر مقیاس استفاده می کنیدXدهید که عریض تر به نظر برسد از محور
    سه بعدی سازی در فلش
    و غیره نیست Swift 3D , Maya ,3D Studio Max فلش یک برنامه سه بعدی ساز مانند
    ولی راههای مختلفی برای شبیه سازی در فلش وجود دارد . موضوع مهم در شبیه سازی تصاویر سه بعدی در فلش ، استفاده از ترفندهاست



    ادامه دارد...

  2. #2
    کاربر فعال انجمن دات نت عــــلی's Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    زیر سایه عرش الهی
    پست ها
    2,335

    پيش فرض

    و محاسبات سه بعدی Drawing API



    مقدمه

    محتویات فیلمهای سه بعدی که در فلیمهای فلش از آنها استفاده می شود ، معمولا پیش از انتشار فیلم ساخته می شوند. طراحان می توانند موضوعات گرافیکی را از منابع بیرونی وارد فلش کرده و یا از ابزارهای ترسیمی فلش برای ترسیم استفاده کنند. سپس در امده و ثابت و بدون تغییر می شوندSWFاین موضوعات در زمان انتشار فایل در قالب

    از طرفی وقتی موضوعاتی در هنگام پخش فیلم فلش ایجاد می شوند می گوئیم این موضوعات گرافیکی در زمان اجرا بطور پویا ایجاد شده اند
    برای رسم موضوعات Drawing API در فلش این کار را انجام میدهد . از Drawing API
    گرافیکی واکنش گرا استفاده می شود
    در فلش Drawing API









    سه روال مهم در Drawing API براي ترسيم خط ، منحني و نقطه و يكي براي پاك كردن وجود دارد:

    روال ترسیمی :

    1.moveTO(x,y): مكان جاري ترسيم را به مختصات X , y منتقل مي كند.
    2.lineTo(x,y):یک خط از مکان ترسیم قبلی به ترسیم مختصات x,y ميكند.سپس مکان ترسم جدید را در تعریف مختصات x, y می كند.
    3.curveTo(contorl_x,control_y,x,y):یک منحنی از مکان ترسیم قبلی به مختصات x,y ترسيم ميكند.سپس مكان ترسيم جديد را در مختصات x,y تعريف مي كند.

    clear():تمام ترسیمات انجام شده در فیلم را پاک می کند.
    Last edited by عــــلی; 18-07-2007 at 14:58.

  3. #3
    کاربر فعال انجمن دات نت عــــلی's Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    زیر سایه عرش الهی
    پست ها
    2,335

    پيش فرض حرکت از شکل دوبعدی به شکل سه بعدی

    چون فلش در اصل برای کارهای سه بعدی سازی طراحی نشده است ، نمی توانیم از شتاب دهنده سه بعدی کمک بگیریم . یعنی در هنگام سه بعدی سازی در فلش باید توازنی بین پیچیدگی و سرعت برقرار کنیم . به عبارت دیگر برای برخورداری از سرعت باید ترسیمات را ساده کنیم
    در ادامه یک مکعب ساده رسم می کنیم . یک مکعب از هشت راس ( که نطقه نامیده می شود ) و شش وجه تشکیل شده است
    برای Drawing API در فلش از آرایه های چند بعدی برای ذخیره هر راس و سپس از روال
    ترسیم وجوه استفاده کنیم
    یک سند جدید فلش را ایجاد کنید و ابعاد آن را روی 400×400پیکسل تنظیم می کنیم . فریم یک از خط زمان اصلی را انتخاب کنید و دستورات زیر را وارد کنید. این کدها یک آرایه از نقاط مکعب ایجاد می کنند
    points = new Array (8) ;
    points [0] = new Array (100,100,-100) ;

    points [1] = new Array (100,-100,-100) ;

    points [2] = new Array (-100,-100,-100) ;

    points [3] = new Array (-100,100,-100) ;

    points [4] = new Array (100,100,100) ;

    points [5] = new Array (100,-100,100) ;

    points [6] = new Array (-100,-100,100) ;

    points [7] = new Array (-100,100,100) ;


    در هر فریم انیمیشن باید مختصات تغییر یافته را دانسته ودر یک آرایه دیگر ذخیره کنیم
    xpoints = new Array ();for (i=0; i<8; i++) xpoints [i] = new Array ();
    بچرخانیم .کمی بعد ، عمل چرخاندن و دیگر Yهمچنین می خواهیم نقاط را حول محور
    تغییرات با جزئیات شرح داده خواهند شد
    theta = 0;

    createEmptyMovieClip ( "cube" , 1);

    this.onEnterFrame = function () {

    theta += 0.01;

    if (theta > 6.28) theta -= 6.28;

    // transform the points

    for (i=0; i<8; i++) {

    xpoints [i] [0] = points [1] [2] *Math.sin (theta) +

    points [i] [0] *Math.cos ( thera );

    xpoints [i] [1] = points [i] [1];

    xpoints [i] [2] = points [i] [2] *Match.cos (theta) -

    points [i] [0] *Math.sin ( theta) ;

    p = 500 / ( xpoints [i] [2] + 500 ) ;

    xpoints [i] [0] *= p;

    xpoints [i] [1] *= p;

    xpoints [i] [0] += 200;

    xpoints [i] [0] +=200;

    }

    برای ایجاد وجوه استفادهDrawing API پس از تغییر شکل نقاط اصلی مکعب از روال های
    می کنیم
    with (cube) {

    clear ();

    lineStyle (4) ;

    // draw face 1

    moveTO (xpoints [0] [0] , xpoints [0] [1] ) ;

    lineTO (xpoints [1] [0] , xpoints [1] [1] ) ;

    lineTO (xpoints [2] [0] , xpoints [2] [1] ) ;

    lineTO (xpoints [3] [0] , xpoints [3] [1] ) ;

    lineTO (xpoints [0] [0] , xpoints [0] [1] ) ;

    // draw face 2

    moveTO (xpoints [4] [0] , xpoints [4] [1] ) ;

    lineTO (xpoints [7] [0] , xpoints [7] [1] ) ;

    lineTO (xpoints [6] [0] , xpoints [6] [1] ) ;

    lineTO (xpoints [5] [0] , xpoints [5] [1] ) ;

    lineTO (xpoints [4] [0] , xpoints [4] [1] ) ;

    // draw face 3

    moveTO (xpoints [0] [0] , xpoints [0] [1] ) ;

    lineTO (xpoints [4] [0] , xpoints [4] [1] ) ;

    lineTO (xpoints [5] [0] , xpoints [5] [1] ) ;

    lineTO (xpoints [1] [0] , xpoints [1] [1] ) ;

    lineTO (xpoints [1] [0] , xpoints [0] [1] ) ;

    // draw face 4

    moveTO (xpoints [1] [0] , xpoints [1] [1] ) ;

    lineTO (xpoints [5] [0] , xpoints [5] [1] ) ;

    lineTO (xpoints [6] [0] , xpoints [6] [1] ) ;

    lineTO (xpoints [2] [0] , xpoints [2] [1] ) ;

    lineTO (xpoints [1] [0] , xpoints [1] [1] ) ;

    // draw face 5

    moveTO (xpoints [2] [0] , xpoints [2] [1] ) ;

    lineTO (xpoints [6] [0] , xpoints [6] [1] ) ;

    lineTO (xpoints [7] [0] , xpoints [7] [1] ) ;

    lineTO (xpoints [3] [0] , xpoints [3] [1] ) ;

    lineTO (xpoints [2] [0] , xpoints [2] [1] ) ;

    // draw face 6

    moveTO (xpoints [4] [0] ,

    xpoints [4] [0] );

    lineTO (xpoints [0] [0] ,

    xpoints [0] [1] );

    lineTO (xpoints [3] [0] ,

    xpoints [3] [1] );

    lineTO (xpoints [7] [0] ,

    xpoints [7] [1] );

    lineTO (xpoints [4] [0] ,

    xpoints [4] [1] ); }};
    فیلم خود را امتحان کنید
    اولین گام به دنیای سه بعدی موفقیت آمیز بود ، ولی مطالبی را هنوز مطرح نکرده ایم . اول اینکه مثال قبل یک فریم ساده سیمی بود . اگر وجوه را رنگ امیزی کنیم این مثال عملی نخواهد بود بود . زیرا همیشه یک وجه مکعب ، در حال چرخش روی وجوه دیگر خواهد بود. دوم اینکه تغییر در چرخش به خوبی نمایش داده می شود ، ولی تعقیب ان کمی سحت است . سوم این که هنوز نحوه اثر نور بر وجوه مکعب را بررسی نکرده ایم
    Last edited by عــــلی; 18-07-2007 at 15:07.

  4. #4
    کاربر فعال انجمن دات نت عــــلی's Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    زیر سایه عرش الهی
    پست ها
    2,335

    پيش فرض موتور سه بعدی

    موتور سه بعدی ساز چهار نوع تغییر شکل را تعریف می کند : تغییر مکان ، تغییر مقیاس ، چرخش و پرسپکتیو . حال هر عمل را کمی شرح می دهیم
    تغییر مکان
    تغییر مکان را می توان با عمل حجمع انجام داد . در اکشن اسکریپت می توان مکان نقطه
    تغییر داد . مثلا tz, , ty . tx را با افزودن P
    p[0] += tx;

    p[1] += ty;

    p[2] += tz;

    جا به جا میشود tz , ty , tx به اندازه z , y ,x پس از این تغییر در طول محورهای p نقطه
    تغییر مقیاس
    sz , sy ,sx را با استفاده از p تغییر مقیاس یعنی عمل اکشن اسکریپت می توان نقطه
    بدین صورت تغییر مقیاس داد
    p[0] *= sx;

    p[1] *= sy;

    p[2] *= sz;


    چرخش
    چرخش را می توان با تغییر اندازه حول یک محور اندازه گیری کرد . چرخش در موتور سه z x را بدین صورت حول محور p تعریف شده است . نقطه z , y , x بعدی ساز ما حول محور
    می چرخانیم
    y = p[1] *Math.cos ( theta ) - p[2] *Math.sin ( theta ) ;

    z = p[1] *Math.sin ( theta ) + p[2] *Math.cos ( theta ) ;

    p[1] = y;

    p[2] = z;

    می چرخانیم y را بدین صورت حول محور p نقطه
    z = p[2] *Math.cos ( theta ) - p[0] *Math.sin ( theta ) ;

    x = p[2] *Math.sin ( theta ) + p[0] *Math.sin ( theta ) ;

    p[2] = z;

    p[0] = x;

    می چرخانیم z را بدین صورت حول محور p نقطه
    x = p[0] *Math.cos ( theta ) - p[1] *Math.sin ( theta ) ;

    y = p[0] *Math.sin ( theta ) + p[1] *Math.cos ( theta ) ;

    p[0] = x;

    p[1] = y;
    پرسپکتیو یا تغییرنما
    هنگامی که به نقشه دو بعدی یک خانه نگاه میکنیم چیزی را می بینیم که اصطلاحا یک x صفحه منطبق با محورx , yترسیم موازی نامیده می شود . در ترسیم موازی محورهای
    صحنه هستند x , y های
    x , yکه در مقدار perspective برای یافتن مقدار perspective =c/(c+z) از فرمول ساده
    بیشتر باشد اثر پرسپکتیو کمتر c نقطه ضرب خواهد شد استفاده میکنیم . هرچه مقدار
    تغییر می دهند عبارتند از c را با ثابت p میشود . دستوراتی که به نقطه
    if ( c-p[2] == 0 ) perspective = 1;

    else p = perspective / p [2] + perspective;

    if (c <= 0) perspective = 1;

    p [0] *= perspective;

    p[1] *= perspective;


    تمام شد.
    قربان شما علي. .

  5. #5
    آخر فروم باز flashman's Avatar
    تاريخ عضويت
    May 2007
    محل سكونت
    کنگــــاور- انجمن فلـــش
    پست ها
    1,015

    پيش فرض Hi

    سلام دوسته من


    Thnaks Man. Very Nice

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •