Кіріспе

Текстуралық карталау техникасы

3D компьютерлік графикада, нормальды карталау, немесе Dot3 bump mapping – бұл дөңгелектер мен ойықтардың жарығын жасау үшін қолданылатын текстуралық карталау техникасы, бұл дөңгелекті карталаудың бір түрі. Ол көпбұрыштарды арттырмай-ақ, егжей-тегжейлі мәліметтерді қосуға мүмкіндік береді. Бұл техниканы жиі қолдану – жоғары полигонды модельден немесе биіктік картасынан нормальды карта жасау арқылы төмен полигонды модельдің сыртқы түрін және егжей-тегжейін айтарлықтай жақсарту. Нормальды карталар көбінесе стандартты RGB кескіндері түрінде сақталады, онда RGB компоненттері сәйкесінше беткей нормалінің X, Y және Z координаттарын көрсетеді.

Тарих

1978 жылы Джим Блинн геометриялық жазық беттерді егжей-тегжейлі көрсету үшін бет нормальдарын қалай өзгертуге болатынын сипаттады. Жоғары полигонды модельден геометриялық бөлшектерді алу идеясы Кришнамурти мен Левойдың «Тығыз полигондық торларға тегіс беттерді бейімдеу» (Fitting Smooth Surfaces to Dense Polygon Meshes) еңбегінде, SIGGRAPH 1996-да ұсынылды, онда бұл тәсіл NURBS беттері үшін ауыстыру карталарын жасау үшін қолданылды. 1998 жылы екі мақалада нормальдық карталар арқылы жоғары полигонды модельдерден төмен полигонды модельдерге бөлшектерді көшірудің маңызды идеялары ұсынылды: Коэн және басқалардың «Көріністі сақтай отырып жеңілдету» (Appearance Preserving Simplification), SIGGRAPH 1998, және Чигнони және басқалардың «Жеңілдетілген торларда атрибут мәндерін сақтаудың жалпы әдісі» (A general method for preserving attribute values on simplified meshes), IEEE Visualization '98. Бірінші мақалада бет нормальдарын орын ауыстырудың орнына тікелей текстурада сақтау идеясы енгізілді, бірақ бұл аз егжей-тегжейлі модельді нақты шектеулі жеңілдету алгоритмі арқылы жасауды талап етті. Екінші мақалада жоғары және төмен полигонды торларды ажыратып, жоғары егжей-тегжейлі модельдің кез келген атрибуттарын (түс, текстура координаттары, орын ауыстырулар және т.б.) модельдің қалай жасалғанына тәуелді емес түрде қалпына келтіруге мүмкіндік беретін қарапайым тәсіл ұсынылды. Текстурада нормальдарды сақтау және жалпы құру процесінің үйлесімі қазіргі қолданыстағы көптеген құралдарда әлі де қолданылуда.

Тангенстік кеңістікті есептеу

Нормалдар компьютерлік графикада негізінен жарықтандыру үшін қолданылады. Нормаль – беттің бағытын көрсететін вектор. Бетті қалай жарықтандыру керектігін білу үшін бағдарламалық жасақтама оның қалай орналасқанын білуі керек, себебі беттің орналасуы жарықтың одан қалай шағылысатынына үлкен әсер етеді. Нормалдар әртүрлі координаттық жүйелерде берілуі мүмкін. Компьютерлік графикада беттің жанама жазықтығына қатысты нормалдарды есептеу пайдалы. Бұл пайдалы, өйткені бейнеойындарда және басқа да қолданбалардағы беттер түпкілікті көрсетілгенге дейін түрлі түрлендірулерден өтеді, сондықтан беттің орналасуына қатысты координаттық жүйе қажет. Мұның нақты мысалы – егжей-тегжейлі кейіпкердің қаңқалық анимациясы. Егер кейіпкердің қолы иілсе, нормаль карталары жаңа орналасуды көрсетуі керек, трансформация кезінде текстуралық деректерді есептеу жағынан қымбат жаңартуларсыз. Нормальдағы өзгерісті табу үшін жанама кеңістік дұрыс есептелуі керек. Көбінесе нормаль модель және көрініс матрицалары қолданғаннан кейін фрагмент шейдерінде өзгереді. Әдетте геометрия нормаль мен жанаманы ұсынады. Жанама жанама жазықтықтың бөлігі болып табылады және оны матрицаның сызықтық бөлігімен (жоғарғы 3x3) оңай түрлендіруге болады. Дегенмен, нормаль кері транспозиция арқылы түрлендірілуі керек. Көптеген қолданбалар битангентті түрлендірілген геометриямен (және байланысты UV координаттарымен) сәйкес етуін қалайды. Битангентті жанамаға перпендикуляр болуға мәжбүрлеудің орнына, оны жанама сияқты түрлендіру әдетте дұрыс. Онда t – жанама, b – битангент, n – нормаль, M3x3 – модель матрицасының сызықтық бөлігі, ал V3x3 – көрініс матрицасының сызықтық бөлігі болсын.

Видео ойындардағы қалыпты карталау

Интерактивті қалыпты картаны көрсету бастапқыда тек PixelFlow-да, Солтүстік Каролина Университетінің Чапел-Хилл қаласында салынған параллельдік көрсету машинасымен ғана мүмкін болды. Кейіннен жоғары деңгейдегі SGI жұмыс станцияларында көп қадамды рендеринг және фреймбуфер операцияларын қолдану арқылы, ал төмен деңгейдегі компьютерлік аппараттық құралдарда палитраланған текстураларды пайдаланып қалыпты карталауды орындау мүмкін болды. Дегенмен, жеке компьютерлер мен ойын консольдарында шейдерлер пайда болғаннан кейін, қалыпты карталау 2000-шы жылдардың басында кеңінен таралды. Оны іске асырған алғашқы ойындардың кейбірі Evolva (2000), Giants: Citizen Kabuto және Virtua Fighter 4 (2001) болды. Қалыпты карталаудың нақты уақыт рендерингі үшін танымал болуының себебі – ұқсас эффектілерді шығарудың басқа әдістерімен салыстырғанда, өңдеу талаптарына қатысты сапасының жоғары болуы. Бұл тиімділіктің көп бөлігі берілген текстураның қалыпты картасының егжей-тегжейін таңдамалы түрде азайтатын қашықтыққа индекстелген егжей-тегжейлі масштабтау арқылы қамтамасыз етіледі (мысалы, mipmapping), яғни алыстағы беттерге аз күрделі жарықтандыру симуляциясы қажет. Көптеген авторлық құбыржолдар ойын модельдерінде төмен/орташа ажыратымдылыққа «пісірілген» жоғары ажыратымдылықтағы модельдерді қолданады, олар қалыпты карталармен толықтырылады. Бастапқы қалыпты карталау палитраланған текстураларды қолдайтын кез келген аппараттық құралда іске асырылуы мүмкін. Қалыпты карталауға арналған маманданған алғашқы ойын консолі – Sega Dreamcast. Алайда, Microsoft-тың Xbox-ы бөлшек саудадағы ойындарда осы эффектті кеңінен қолданған алғашқы консоль болды. Алтыншы буын консольдерінің ішінде тек PlayStation 2 GPU-да қалыпты карталауды қолдау жоқ, бірақ оны PlayStation 2 аппараттық векторлық бірліктерін пайдалана отырып симуляциялауға болады. Xbox 360 және PlayStation 3 ойындары қалыпты карталауға көп сүйенді және параллакс картасын қолданған алғашқы ойын консольдерінің буыны болды. Nintendo 3DS қалыпты карталарды қолдайтынын көрсетті, бұл Resident Evil: Revelations және Metal Gear Solid 3: Snake Eater ойындарының мысалында көрініс тапты.