تیم برنامهنویسی پیاستور
هزینه سفارش:
۹۵۰,۰۰۰ تومان قیمت اصلی: ۹۵۰,۰۰۰ تومان بود.۵۷۰,۰۰۰ تومانقیمت فعلی: ۵۷۰,۰۰۰ تومان.
تخصصی و منحصر به فرد بودن این اثر، تضمین کننده بهای محصول نسبت به آثار مشابه است.
این سورس کد جامع، فراتر از یک تمرین ساده دانشگاهی است؛ این مجموعه یک فریمورک آموزشی قدرتمند در حوزه رندرینگ بلادرنگ (Real-Time Rendering)، مدیریت صحنههای پیچیده، مدلسازی المانهای دکوراسیون داخلی، ناوبری دوربین اولشخص (FPS Camera) و شبیهسازی فیزیک برخورد (Collision Detection) به شمار میرود. برای دانشجویان مهندسی کامپیوتر، محققان حوزه گرافیک و برنامهنویسانی که قصد دارند اصول رندرینگ خطی، اعمال ماتریسهای تبدیل هندسی، لود تکسچر و نورپردازی را در بستر Visual Studio به صورت عمیق یاد بگیرند، این پروژه بهترین و آمادهترین منبع آموزشی و پژوهشی است.
توسعه یک محیط سهبعدی پویا با دهها المان تعاملی در زبان سیشارپ همواره با چالش مدیریت حافظه، رندرینگ بهینه و افت نرخ فریم (FPS Drop) همراه است. توسعهدهنده در این پروژه با پیادهسازی یک معماری کامپوننتمحور و بهینهسازی فراخوانی دستورات بافری OpenGL، موفق شده است خانهای کامل با تمامی جزئیات رفاهی و معماری را بدون لگ و با نرخ فریم بالا به نمایش بگذارد.
از جذابترین ویژگیهای این پروژه این است که هیچ سیستم آماده یا انجین واسطی در کار نیست؛ تمام اشیاء از جمله مبلمان، تختخواب، میز، صندلی، درهای لولادار با قابلیت چرخش، ساعت دیواری داینامیک، آباژور و چراغهای سقفی، یخچال، سینک ظرفشویی، تلویزیون و حتی قوری معروف یوتا (Utah Teapot) بهصورت خالص با دستورات اولیه OpenGL و توابع ریاضی پیادهسازی شدهاند. این یعنی شما با مشاهده کدهای هر کلاس، دقیقاً فرآیند تبدیل دادههای برداری به یک پیکسل رندرشده بر روی مانیتور را لمس خواهید کرد.
یکی از بزرگترین نقاط قوت این سورس کد، ساختار بینهایت منظم، تمیز و اصولی آن است. پروژه بر اساس الگوی طراحی شیءگرا (OOP) بنا شده و هر شیء در دنیای مجازی دارای کلاس اختصاصی و کپسولهسازیشده (Encapsulated) است. این طراحی ماژولار باعث شده تا اضافه کردن یک مبل جدید، تغییر مکان یک دیوار یا جابجایی محل پنجرهها تنها با نوشتن یک خط کد در کلاس مدیریت صحنه امکانپذیر باشد.
MainClass.cs و جریان ساخت جهان سهبعدیکلاس MainClass نقش مغز متفکر و هماهنگکننده صحنه (Scene Graph Coordinator) را ایفا میکند. این کلاس ابتدا ویوپورت نمایش را با کلاس GlControl ایجاد کرده و سپس اشیاء را به لیست اصلی جهان (world) اضافه میکند. بیایید به نمونهای از نحوه نمونهسازی و قرارگیری مبلمان و المانهای خانه در این کلاس نگاه کنیم:
public MainClass(string[] args)
{
GlControl ViewPort = new GlControl(Width, Height);
GlObjectList world = new GlObjectList();
world.Add(new LightSource());
#if !testingObjects
world.Add(new TranslatedObject(new Point3D(0, -10, 0), new SkyBox()));
GlObjectList casa = new GlObjectList();
casa.Add(new Casa2());
casa.Add(new Librero(new Point3D(210, 0, -318), 0));
casa.Add(new Librero(new Point3D(210, Librero.Height + .3, -316), -3));
casa.Add(new Lamp(new Point3D(60, 270, 190), 70));
casa.Add(new Refrigerador(new Point3D(-145, 0, 120), 180));
Plantilla obj = new Mesita(new Point3D(80, 0, 40), 90);
casa.Add(obj);
casa.Add(new TV(new Point3D(80, obj.Height + .2, 60), 0));
casa.Add(new Cama(new Point3D(370, 0, -250), 0, 100, 70));
casa.Add(new Cama(new Point3D(370, 0, -480), 0, 100, 60));
casa.Add(new Cama(new Point3D(-210, 0, -420), 0, 90, 40));
casa.Add(new Estante(new Point3D(-210, 170, -108)));
obj = new Mesa(new Point3D(380, 0, 200));
casa.Add(obj);
casa.Add(new Silla(new Point3D(440, 0, 160)));
casa.Add(new Silla(new Point3D(440, 0, 240)));
casa.Add(new Silla(new Point3D(330, 0, 160), 180));
casa.Add(new Silla(new Point3D(330, 0, 240), 180));
casa.Add(new Silla(new Point3D(385, 0, 110), 90));
casa.Add(new Silla(new Point3D(385, 0, 290), -90));
casa.Add(new Plato(new Point3D(380, obj.Height + .2, 200)));
casa.Add(new Vaso(new Point3D(380, obj.Height + .2, 230)));
casa.Add(new MesitaDeNoche(new Point3D(455, 0, -140), -90));
casa.Add(new MesitaDeNoche(new Point3D(455, 0, -380), -90));
casa.Add(new MesitaDeNoche(new Point3D(455, 0, -580), -90));
casa.Add(new MesitaDeNoche(new Point3D(-280, 0, -340), 90));
obj = new EstanteHorizontal(new Point3D(330, 0, -70), 180);
casa.Add(obj);
casa.Add(new Butaca(new Point3D(-30, 0, 200), 90, 2));
casa.Add(new Butaca(new Point3D(200, 0, 270), 250, 1));
casa.Add(new Butaca(new Point3D(200, 0, 110), -70, 1));
casa.Add(new MesetaConFregadero(new Point3D(-307, 0, -64), 0));
casa.Add(new Clock(new Point3D(485, 200, 325), 270));
GlObject c = new TranslatedObject(new Point3D(0, 0, -70), casa);
world.Add(c);
#endif
observer = new Avatar(ViewPort, world);
Glut.glutDisplayFunc(new Glut.DisplayCallback(observer.Look));
Glut.glutIdleFunc(new Glut.IdleCallback(observer.Look));
Glut.glutMainLoop();
}
همانطور که در منطق کد مشاهده میشود، از کلاس کمکی TranslatedObject برای اعمال انتقالهای ماتریسی بر گروههای اشیاء استفاده شده است. اشیایی مانند صندلیها (Silla)، مبلها (Butaca)، میزها (Mesa) و ظروف روی میز (Plato و Vaso) با مختصات مشخص بر حسب طول، عرض و ارتفاع نسبت به سطح کف خانه قرار گرفتهاند.
این پروژه تنها یک نقشه ایستا نیست؛ پر از المانهای متحرک، تعاملی و سیستمهای پردازش بلادرنگ است که هر بینندهای را مجذوب خواهد کرد:
هنگامی که آواتار بازیکن وارد سالن پذیرایی خانه میشود، ساعتی عقربهای بر روی دیوار نصب شده است. این ساعت نه یک انیمیشن ثابت، بلکه ساعت واقعی سیستم عامل شماست. برنامه در هر فریم زمان سیستم را خوانده و با استفاده از تبدیلات مثلثاتی، زاویه دقیق چرخش عقربههای ساعتشمار، دقیقهشمار و ثانیهشمار را حول محور مرکزی بازتولید میکند.
در بیشتر پروژههای دانشجویی درها ثابت هستند یا دیوار با یک شکاف خالی مدل میشود. اما در این پروژه، شما با نزدیک شدن به هر در و فشردن کلید Space bar، باز و بسته شدن روان در را به دور محور لولای آن مشاهده میکنید. زاویه چرخش در با یک ساختار حالت (State Machine) کنترل شده و از عبور دوربین هنگام بسته بودن در جلوگیری میشود.
در بخش آشپزخانه، نماد تاریخی گرافیک کامپیوتری یعنی قوری یوتا با استفاده از توابع کتابخانه GLUT و با نورپردازی متریال براق (Specular Lighting) رندر شده است. این آیتم به عنوان یک شیء رفرنس جهت بررسی صحت بازتاب نور و تست نحوه رندرینگ سطوح منحنی با سطوح پارامتریک در صحنه گنجانده شده است.
اتاقخوابها دارای تختخوابهای چندنفره، پاتختی، میزهای مطالعه و کمدهای دیواری هستند. سالن نشیمن با مبلمان راحتی تکنفره و چندنفره، میز تلویزیون، الایدی و قفسههای کتابخانه تزیین شده است. بخش آشپزخانه دارای کابینتبندی کامل، یخچال سهبعدی و سینک ظرفشویی است. تمام این اجسام با ترکیب چندضلعیهای هندسی پایه (Primitives) و بافتهای باکیفیت ساخته شدهاند.
یکی از اوجهای ظرافت در طراحی هندسی این پروژه، لوستر و لامپ سقفی است که دارای زنجیر پیوسته معلق میباشد. هر حلقه زنجیر با استفاده از توابع تورس (Torus) و حلقههای توخالی پشت سر هم به گونهای مدل شدهاند که در فضای سهبعدی زنجیری واقعگرایانه و پیوسته را تداعی میکنند. همچنین نور ساطعشده از منبع روشنایی به صورت داینامیک روی سطوح اطراف بازتاب پیدا میکند.
با خروج از محدوده خانه و قدم زدن در محوطه بیرونی، با یک اسکایباکس کامل محصور میشوید که تداعیکننده آسمان آبی، افق دوردست و زمین پیرامونی است. تکنیک Skybox به کار رفته در این پروژه از روش مکعب بینهایت (Cube Mapping Simulation) با نگاشت تکسچرهای هماهنگ در ۶ وجه بهره میبرد تا حس آزادی و فضای بیکران را ایجاد کند.
}
این برنامه از کلاسها و توابع متنوعی تشکیل شده است که در زیر قسمتی از این کلاسها را مشاهده میکنید.
این پروژه از یک دوربین FPS استفاده میکند. جهت دوربین را با ماوس تغییر دهید و با کلیک چپ / راست کلیک، به جلو و عقب حرکت کنید. برای تعامل با اشیائی مانند درب خانه از Space bar استفاده کنید.

این سورس کد یک مرجع عملی کامل برای درک و تسلط بر مباحث تئوری و پیشرفته گرافیک کامپیوتری است. مواردی که با بررسی کدهای این پروژه یاد خواهید گرفت عبارتند از:
سیستم دوربین اول شخص (FPS Camera Navigation):
نحوه ترجمه و تبدیل مختصات دو بعدی نشانگر ماوس به بردارهای زاویه دید (Yaw, Pitch, Roll)، قفل کردن ماوس در مرکز صفحه نمایش و محاسبه بردارهای Forward، Strafe و Up برای حرکت بازیکن با کلیکهای ماوس یا کیبورد.
سیستم تشخیص برخورد (Bounding Box & Collision Detection):
الگوریتمهای پیشرفته جلوگیری از عبور آواتار از میان دیوارها، درهای بسته، یخچال یا مبلمان خانه. سیستم با محاسبه موقعیت جدید و مقایسه آن با حجمهای محصورکننده (AABB/OBB) مانع از افتادن یا رد شدن غیرواقعی کاراکتر از اجسام سخت میشود.
ساخت هندسه سازهای (Constructive Solid Geometry – CSG):
تکنیکهای مدلسازی احجام پیچیده از طریق ترکیب، اتصال و کنار هم چیدن احجام پایه نظیر مکعب، استوانه، کره و چندضلعیها.
مدیریت کانال آلفا و شفافیت (Transparency & Alpha Blending):
رندرینگ شیشههای پنجرهها و بطریهای روی میز با فعالسازی بافر آلفا (Gl.glEnable(Gl.GL_BLEND)) و توابع ترکیب رنگ (glBlendFunc) جهت نمایش صحیح پشت اجسام نیمهشفاف.
سیستم بارگذاری بافت و مپینگ (Texture Loading & UV Mapping):
مدیریت حافظه کارت گرافیک، تخصیص شناسههای بافت (Texture IDs)، تنظیم فیلترهای مینیمایز و مگنیفای (GL_LINEAR / GL_NEAREST) و مپ کردن دقیق مختصات UV روی سطوح ناصاف و زاویهدار.
مدلسازی برداری و محاسبات فضایی (Vector Manipulation):
عملیات ضرب داخلی، ضرب خارجی بردارها برای محاسبه بردار نرمال هر سطح (Normal Vectors) جهت برقراری سیستم سایهزنی تخت و سایهزنی نرم (Flat & Smooth Shading).
این پروژه برای محیط توسعه قدرتمند Microsoft Visual Studio طراحی شده و مراحل اجرای آن بسیار ساده و روان است:
مطمئن شوید که یکی از نسخههای Microsoft Visual Studio (از نسخه 2010 تا نسخههای جدید 2019 و 2022) بر روی سیستم شما نصب است. پروژه به دلیل کدنویسی استاندارد با فریمورک .NET سازگاری کامل دارد.
فریمورک Tao.OpenGl شامل فایلهای کتابخانهای DLL مانند Tao.OpenGl.dll، Tao.FreeGlut.dll و Tao.Platform.Windows.dll میباشد. این فایلها به همراه پروژه در پوشه رفرنسها قرار داده شدهاند و رفرنسهای سلوشن به صورت نسبی (Relative Path) تنظیم شدهاند تا بدون خطا بیلد شوند.
فایلهای سیستمی مانند freeglut.dll یا glut32.dll در پوشه اجرای برنامه (bin/Debug) موجود هستند تا برنامه در هنگام اجرا با ارور عدم یافتن کامپوننتهای گرافیکی مواجه نشود.
تنها کافی است فایل House3D.sln را باز کرده، وضعیت بیلد را روی Debug یا Release قرار داده و دکمه Start را بفشارید. پروژه بلافاصله کامپایل شده و پنجره سهبعدی تمامصفحه با نرخ فریم پایدار برای گشتوگذار آماده خواهد بود.
کن تستشده توسط تیم کارشناسی: این سورس کد توسط تیم فنی و مهندسی پیاستور در حرکت ماوس به جهات مختلف: چرخش سر کاراکتر و مشاهده محیط در زوایای ۳۶۰ درجه افقی و عمودی.
تهیه پروژههای سهبعدی گرافیک کامپیوتری از منابع غیررسمی معمولاً همراه با ارورهای زمان کامپایل، کتابخانههای ناقص داتنت، عدم سازگاری با ویندوزهای جدید و کدهای ناخوانا است. خرید از پیاستور تضمینکننده خریدی مطمئن، تستشده و باکیفیت است:
پس از تهیه این محصول، یک فایل فشرده با ساختار استاندارد در اختیار شما قرار میگیرد که شامل موارد زیر است:
برای مشاهده ویدیوی هر بخش، روی عنوان آن کلیک کنید.
تیم برنامه نویسی پی استور یکی از اولین گروههای تشکیل شده در مجموعه آموزشی پی استور میباشد. این تیم از اساتید مجرب و فارغ التحصیلان رشتههای فنی و مهندسی تشکیل شده که در زمینههای مختلف برنامهنویسی و تهیه سورس کد فعال هستند.
اطلاعات و جزئیات کامل این محصول
جهت تسلط عمیقتر و تکمیل مهارتهای خود، یادگیری این سرفصلها پیشنهاد میشود.
هزینه سفارش:
۹۵۰,۰۰۰ تومان قیمت اصلی: ۹۵۰,۰۰۰ تومان بود.۵۷۰,۰۰۰ تومانقیمت فعلی: ۵۷۰,۰۰۰ تومان.
دیدگاهها و نظرات
bahar
دمتون گرم چن ساعته دنبال پروژه میگردم اینو به زور پیدا کردم.
مدیریت و پشتیبانی
نظرات و دیدگاه های خود را با ما درمیان بگذارید.