Кіріспе

Объектіні модельдеу әдісі

3D компьютерлік графикада көпбұрышты модельдеу – көпбұрышты торларды қолдана отырып, нысандардың беттерін бейнелеу немесе жуықтау арқылы модельдеу тәсілі. Көпбұрышты модельдеу скандеу рендерингіне өте ыңғайлы, сондықтан ол нақты уақыт компьютерлік графикасы үшін басым таңдау болып табылады. 3D нысандарды бейнелеудің басқа да тәсілдеріне NURBS беттері, бөлініс беттері және сәуле іздеу бағдарламаларында қолданылатын теңдеулерге негізделген (жасырын бет) бейнелеулер жатады.

Геометриялық теория және көпбұрыштар

Тор модельдеуде қолданылатын негізгі нысан – үш өлшемді кеңістіктегі нүкте (вертекс). Екі нүкте түзу сызықпен қосылса, қабырға (эдж) пайда болады. Үш қабырғамен бір-бірімен байланысқан үш нүкте үшбұрышты анықтайды, ол Эвклид кеңістігіндегі ең қарапайым көпбұрыш болып табылады. Күрделі көпбұрыштарды бірнеше үшбұрыштан немесе үш нүктеден артық нүктелері бар бір нысан ретінде жасауға болады. Төрт қабырғалы көпбұрыштар (әдетте квадтар деп аталады) және үшбұрыштар көпбұрышты модельдеуде ең көп қолданылатын пішіндер. Ортақ нүктелері арқылы байланысқан көпбұрыштар тобы әдетте элемент деп аталады. Элемент құрайтын әрбір көпбұрыш бет (фейс) деп аталады. Эвклид геометриясында кез келген үш бір түзу сызықта жатпайтын нүкте жазықтықты анықтайды. Сондықтан үшбұрыштар әрқашан бір жазықтықта орналасады. Дегенмен, бұл күрделі көпбұрыштарға қатысты міндетті емес. Үшбұрыштардың жазық болуы олардың беттік нормалын (surface normal) – үшбұрыштың бетіне перпендикуляр үш өлшемді векторді анықтауды жеңілдетеді. Беттік нормалдар сәулелерді қадағалау (ray tracing) кезінде жарық таралуын анықтау үшін пайдалы және танымал Фонг көлеңкелеу моделінің маңызды бөлігі болып табылады. Кейбір көрсету жүйелері (rendering systems) жақсырақ жарықтандыру жүйесін жасау үшін беттік нормалдардың орнына нүктелік нормалдарды (vertex normals) қолданады, бірақ бұл көбірек есептеу қуатын қажет етеді. Әрбір үшбұрыштың екі беттік нормалы бар екенін ескеріңіз, олар бір-біріне қарама-қарсы бағытталған. Көптеген жүйелерде осы нормалдардың тек біреуі ғана жарамды деп есептеледі, ал көпбұрыштың екінші жағы артқы бет (backface) деп аталады және бағдарламашының қалауына қарай көрінетін немесе көрінбейтін болуы мүмкін. Көптеген модельдеу бағдарламалары геометриялық теорияны қатаң түрде сақтамайды; мысалы, екі нүктенің арасын екі бөлек қабырға жалғауы мүмкін, олар бірдей кеңістіктік орында орналасқан. Сондай-ақ, екі нүктенің бірдей кеңістіктік координаталары болуы немесе екі беттің бірдей жерде орналасуы мүмкін. Мұндай жағдайлар көбінесе қаланбайды және көптеген бағдарламалар автоматты тазалау (auto cleanup) функциясын ұсынады. Егер автоматты тазалау функциясы болмаса, оларды қолмен жою қажет. Ортақ нүктелері арқылы байланысқан көпбұрыштар тобы тор (mesh) деп аталады. Тордың көрсету кезінде әдемі көрінуі үшін, ол өзімен-өзі қиыспауы керек, яғни ешбір қабырға көпбұрыш арқылы өтуі тиіс емес. Басқаша айтқанда, тор өзін-өзі тесіп шығармауы керек. Сондай-ақ, торда екі еселенген нүктелер, қабырғалар немесе беттер сияқты қателер болмауы тиіс. Кейбір жағдайларда тордың көпқабатты (manifold) болуы маңызды, яғни оның тесіктері немесе ерекшеліктері (бір нүктемен байланысқан тордың екі бөлек бөлігі) болмауы керек.

Ұзартулар

Көпбұрышты тор құрылғаннан кейін, ойындар, анимация сияқты мақсаттар үшін пайдалы болуы үшін қосымша қадамдар жасалуы тиіс. Модельге түстер мен текстура қосу үшін текстуралық карта жабыстырылуы керек, сондай-ақ анимация үшін қаңқа берілуі керек. Торларға физикалық симуляция үшін салмақтар мен ауырлық орталықтары да тағайындалуы мүмкін. Модельді модельдеу ортасынан тыс компьютер экранында көрсету үшін, ол төменде тізілген файл форматтарының бірінде сақталуы керек, содан кейін осы форматтан жүктеуге қабілетті бағдарламаны пайдалану немесе жазу қажет. 3D көпбұрышты модельдерді көрсетудің екі негізгі әдісі – OpenGL және Direct3D. Бұл екі әдіс те 3D үдетілген графикалық картасыз немесе оның болуымен қолданылуы мүмкін.

Артықшылықтары мен кемшіліктері

Көпбұрыштарды пайдаланып нысанды бейнелеудің көптеген кемшіліктері бар. Көпбұрыштар қисық беттерді дәл көрсетуге қабілетсіз, сондықтан қисықтарды көз тартатын етіп жақындастыру үшін олардың көптеген саны қолданылуы керек. Күрделі модельдерді пайдалану жылдамдыққа кедері келтіреді. Скан-сызықты түрлендіру кезінде әрбір көпбұрыш, оның мөлшеріне қарамастан, түрлендіріліп көрсетілуі тиіс, және экранда бір уақытта көптеген модельдер болады. Көбінесе бағдарламашылар бір нысанды көрсету үшін әртүрлі деңгейдегі бірнеше модельдерді пайдалануға мәжбүр, осылайша рендерингтегі көпбұрыштардың санын азайту үшін. Көпбұрыштардың басты артықшылығы – олар басқа бейнелеу әдістеріне қарағанда жылдам. Қазіргі заманғы графикалық карта 60 кадр/секунд немесе одан да жоғары жылдамдықпен өте егжей-тегжейлі көріністі көрсетуге қабілетті болса, ал беттік модельдеушілер, көпбұрыш емес модельдерді көрсетудің басты тәсілі, ұқсас деңгейдегі егжей-тегжейлі интерактивті кадр жылдамдығына (10 кадр/секунд немесе одан жоғары) қол жеткізе алмайды. Көпбұрыштарға тағы бір балама – спрайттарда, әрбір қажетті поза жеке жасалуы керек, ал бір ғана көпбұрышты модель тиісті қозғалыс деректері қолданылса, кез келген қозғалысты орындай алады және кез келген бұрыштан қарауға болады.

Файл пішімдері

3D көпбұрыш деректерін сақтау үшін әртүрлі форматтар қол жетімді. Ең көп таралғандары:
.3ds, max – 3D Studio Max бағдарламасымен байланысты
blend – Blender бағдарламасымен байланысты
c4d – Cinema 4D бағдарламасымен байланысты
dae (COLLADA)
dxf, dwg, dwf – AutoCAD бағдарламасымен байланысты
fbx (бұрынғы Autodesk. Kaydara Filmbox)
jt – бастапқыда Siemens Digital Industries Software компаниясымен әзірленген, қазір ISO стандарты
lwo – Lightwave бағдарламасымен байланысты
lxo – MODO бағдарламасымен байланысты
mb және ma – Maya бағдарламасымен байланысты
md2, md3 – Quake ойындары сериясымен байланысты
mdl – Valve компаниясының Source Engine ойын қозғалтқышында қолданылады
nif (NetImmerse/gamebryo)
obj (Wavefront-тің "The Advanced Visualizer" бағдарламасы)
ply – 3D сканерлерден алынған деректерді сақтау үшін қолданылады
rwx (Renderware)
stl – жылдам прототиптеуде қолданылады
u3d (Universal 3D)
wrl (VRML 2.0)