سوال در مورد نمایش اشکال سه بعدی در ویژوال c

arezaee

New Member
سلام.
اول بگم من این سوال را یک قسمت دیگه هم مطرح کردم ولی فکر میکنم جای درست این سوال اینجا باشه


من یک شکل سه بعدی طراحی شده دارم , میخوام این شکل را توی ویژوال C نمایش بدم و بصورت کنترلی دوران بدم. البته این کار قسمتی از برنامه است و بقیه قسمتها ربطی به گرافیک نداره.

مشکل من توی import کردن فایلهای سه بعدی هست. این فایلها با پسوند stl هستند، البته میشه به فرمتهای دیگه مثلا 3ds max تبدیلشون کرد.

ابزارهایی مثل ewdraw این کار را می کنند ولی نسخه crack شده اش را ندارم.

کسی میتونه یک راه حل خوب و عملی به من پیشنهاد بده؟
ممنون
 

Mahdi_Rashed

Active Member
بستگی داره به حجم و تعداد پولیگانای شی . اینکه چه نوع تکسچر و چه شیدر هایی داره ؟ اینا رو بگین تا بتونم بهتر کمک کنم
 

arezaee

New Member
سلام. ممنون از توجهت
راستش من زیاد ایناش را نمی دونم و اصلا هم برام مهم نیست.
فرض کنید چند تا شکل خیلی ساده مثل یک صفحه دایره ای هستن که میخوام تو برنامه ام حول محورهای x,y,z مستقل دوران بدمشون

اصلا فکر کنم هیچ texture خاصی نداره و مهم نیست که چی باشه. اون شکل از نظر فیزیکی مهم هست که درست نمایش یده، رنگش، نورپردازیش و اینا اصلا مهم نیست
 

Mahdi_Rashed

Active Member
خوب بهتر شد . برنامه نویسی با زبان C مربوط میشه به DirectX ها قدیمی . مشکلی پیش نمیاد ولی من بهتون C# رو پیشنهاد میکنم . برای ساخت همچین چیزی در هر زبانی اول باید همه ی Componentهایی که توسط DirectX SDK رو داشته باشید . DirectX SDK رو از سایت ماکروسافت دانلود کنید یا اگر دارید که چه بهتر . در کتابخانش به بخش زبان C برید و همشو در پروژه load کنید . این کار از طریق object Browser در VS 2005 به بالا قابل انجام هست . برای شروع تعریفات سیستم 3بعدی اول باید یک کد برای تعیین محل Local در محیط 3بعدی بنویسید . پس یک کلاس با عنوان Vector3 ایجاد میکنید که 3 متغیر شناور X , Y و Z رو با مقادیر ثابت 0.0 در خودش نگاه میکنه . بعد از طریق Object Browser یکی از فرمتهای 3بعدی رو که با زبان C سازگاری داره در پروژه لود کنید و کل فایل رو به عنوان یک کلاس مثلاً Format تعریف کنید . حالا با استفاده از دستورات get و getrpoperty که نمیدونم توی C چی میشه از طریف کلاس Format فایل 3بعدی خودتون رو که باید در پوشه ی Resource باشه در پروژه بیارید . این فایل رو با فرمت خود C ذخیره کنید و اسمش رو Data یا هرچیز دیگه که میخواین بذارین . حالا باید فایل اجرایی رو بسازین . در محیط کد باید اول تابع render رو برای زبان C از داخل کتابخونه به پروژه انتقال بدین و بخش Local اون رو به مقدار Vector3 تغییر بدین . در پایینش هم رندر متد یا Rendermet هست که باید مقدار method رو به صورت پیشفرض روی موتور رندر DirectX 7 برای زبان C و یا DirectX 9 یا 10 برای زبان C# قرار بدین . وقتی کار بدون نور پردازی و تکسچر باشه تفاوتی بین رندر متد نیست . در بخش کد که نوع polygon rendering رو مشخص میکنه مقدار Format یا همون کلاس که تعریف شده رو قرار بدین تا فرمت برای رندر کننده مفهوم پیدا کنه .یک سری متغیر هم هست شبیه Background color , default color , render limit و ... . background color رنگ پس زمینه رو داره که باید به صورت کد بنویسینش یا اگر VS 2008 رو دارید میتونید اسم 7 رنگ اصلی رو هم بنویسین . default color خودش 2 تا متغیر داره یکی color یکی amb int . color رنگ پیشفرض اشیای بدون متریال رو داره و amb int نور پیشفرض که دارای 2 تا متغیر رنگ و شدت هست . render limit هم که محدودیت تعداد پولیگان که جولوش رو یا خالی بذارین یا -1 تا بینهایت باشه . در آخر میتونید یک کد walkthrough هم از کتابخونه بردارید و دکمه های مورد علاقه رو جایگرزین میانبرهای پیشفرض کنید . این کد یک خاصیت داره که اگه 1 باشه مقدارش با کلیک موس و نگه داشتن و چرخوندن میتونید شی 3بعدی رو حل محورهای Local بچرخونید . همچنین یادتون باشه خاصیت camera هم یاید باشه تا کد کار کنه . یک چیزی هم که یادم رفت در اول کد برنامه نویسی فایل data هم فراخوانی بشه . در آخر یک compile 30 x ثانیه ای داره و چیزی که میخواین نمایان میشه .

اگر هم این کارا سخته ( که سخته ) میتونید از برنامه ی DXstudio که نسخه ی رایگان داره استفاده کنید . سایتش www.dxstudio.com هست . البته این برنامه فرمت خاص خودشو داره و باید پلاگین export رو برای برنامه ای که باهاش model رو ساختین دانلود کنید و مدل رو با فرمت dxmesh ذخیره کنید تا درست در برنامه استفاده بشه .
 

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

بالا