نوشته شده توسط
hector2000
سلام
چگونه فایلهای ایکس را نمایش دهم و چنانچه اگر این فایل شامل انیمیشن بود چطور ؟
با سپاس
می توانید از تابع D3DXLoadMeshFromX استفاده کنید که لیست texture ، material و Mesh لود شده را به شما می دهد:
D3DXLoadMeshFromX( "Test.x", D3DXMESH_SYSTEMMEM, gd3dDevice, NULL,
&pMtrlBuffer, NULL, &Materials, &pMesh );
برای انیمیشن باید یک سیستم skin بنویسید (مثلا با تعریف ID3DXAllocateHierarchy interface) و جسم را با استخوان بندی حرکت دهید، به این شکل که محتویات وزن هر راس را دریافت کنید و سپس آن راس را حرکت دهید. برای اجسام سفت و متحرک از حالت rigid-body می توانید استفاده کنید یعنی همه وزن های راس های جسم برای یک استخوان مقدار برابر دارند تا همه با هم حرکت کنند.
علاوه بر روش فوق برای اجسام فقط متحرک، شما می توانید اطلاعات مکانی جسم سه بعدی را در هر فریم از فایل به صورت یک Matrix ذخیره شده است بخوانید و سپس از توابع ریاضی DX استفاده کنید و کل جسم را در محیط در هر فریم تغییر موقعیت دهید، مانند:
ID3DXKeyframedAnimationSet
ID3DXAnimationSet
هر دوی مباحث ذکر شده بسیار وسیع هستند و حتما باید کتاب های مختص animation برای DirectX را مطالعه کنید تا نحوه پیاده سازی این سیستم ها را یاد بگیرید.