Кіріспе
Компьютерлік графикада, рефлексиялық бейнелеу немесе қоршаған ортаны бейнелеу – алдын ала есептелген текстура арқылы рефлексиялы беттің көрінісін шамалау үшін сурет негізіндегі тиімді жарықтандыру әдісі. Текстура рендерингіге түсетін объектінің айналасындағы алыс қоршаған ортаның суретін сақтау үшін қолданылады. Қоршаған ортаны сақтаудың бірнеше тәсілдері қолданылды. Алғашқы тәсіл – шар тәрізді бейнелеу, онда бір текстура шар тәрізді айнаға шағылысқан айналасының суретін қамтиды. Бұл тәсіл көбінесе текшелі бейнелеумен алмастырылды, онда қоршаған орта текшенің алты жағына проекцияланады және алты шаршы текстура ретінде сақталады немесе бір текстураның алты шаршы аймағына жиырылады. Басқа проекциялар, математикалық немесе есептеулік қасиеттері жағынан артықшылықтары бар, оларға параболоидты бейнелеу, пирамидалық бейнелеу, октаэдрлік бейнелеу және HEALPix бейнелеу жатады. Рефлексиялық бейнелеу – бұл бейнелеудің бірнеше тәсілдерінің бірі, мысалы, экран кеңістігіндегі рефлексиялар немесе сәулелерді іздеу, жарық сәулесінің траекториясын есептеу арқылы нақты рефлексияны есептейді. Пикселдің көлеңкесін есептеуде қолданылатын рефлексия түсі объектінің нүктесіндегі рефлексия векторын есептеу және оны қоршаған орта бейнесіндегі текселге сәйкестендіру арқылы анықталады. Бұл тәсіл көбінесе сәулелерді іздеу арқылы алынған нәтижелерге ұқсас нәтижелерді береді, бірақ одан аз есептеу шығындарына ие, себебі рефлексияның сәулесін есептеу үшін инциденция және рефлексия бұрыштарын есептеу және содан кейін текстураны іздеу жеткілікті, ал сәулелерді іздеуге қарағанда сахна геометриясына қарсы сәулені бағыттап, оның сәулелік қарқындылығын есептеу GPU жүктемесін азайтады. Дегенмен, көбінесе бейнеленген рефлексия нақты рефлексияның жуық шамасы ғана болады. Қоршаған ортаны бейнелеу екі шартқа сүйенеді, олар көбінесе орындалмайды: көлеңкеленген объектіге түсетін барлық жарық шексіз қашықтықтан келеді. Егер бұл жағдай орындалмаса, жақын жердегі геометрияның рефлексиясы рефлексияланған объектіде дұрыс емес жерде пайда болады. Мұндай жағдайда рефлексияда параллакс байқалмайды. Көлеңкеленетін объекті дөңес болып табылады, яғни өзіндік рефлексиялары жоқ. Егер бұл жағдай орындалмаса, объект рефлексияда көрінбейді, тек қоршаған орта ғана көрінеді. Қоршаған ортаны бейнелеу әдетте рефлексиялы бетті бейнелеудің ең жылдам тәсілі болып табылады. Бейнелеу жылдамдығын одан әрі арттыру үшін бейнелеуші әрбір төбеде рефлексияланған сәуленің орнын есептеуі мүмкін. Содан кейін, бұл позиция төбеге тіркелген көпбұрыштар арқылы интерполяцияланады. Бұл әрбір пикселдің рефлексия бағытын қайта есептеу қажеттілігін жояды. Егер қалыпты бейнелеу қолданылса, әрбір көпбұрышқа көптеген беттік қалыптар (көпбұрыштың берілген нүктесіне қараған бағыт) болады, оларды қоршаған орта бейнесімен бірге қолдану арқылы шынайы рефлексияны жасауға болады. Бұл жағдайда көпбұрыштың берілген нүктесіндегі рефлексия бұрышы қалыпты бейнелеуді ескереді. Бұл тәсіл басқаша жалпақ бетті, мысалы, толқынды металл немесе щеткаланған алюминийді текстуралы етіп көрсету үшін қолданылады.
All radiance incident upon the object being shaded comes from an infinite distance. When this is not the case the reflection of nearby geometry appears in the wrong place on the reflected object. When this is the case, no parallax is seen in the reflection. The object being shaded is convex, such that it contains no self interreflections. When this is not the case the object does not appear in the reflection; only the environment does. Environment mapping is generally the fastest method of rendering a reflective surface. To further increase the speed of rendering, the renderer may calculate the position of the reflected ray at each vertex. Then, the position is interpolated across polygons to which the vertex is attached. This eliminates the need for recalculating every pixel's reflection direction. If normal mapping is used, each polygon has many face normals (the direction a given point on a polygon is facing), which can be used in tandem with an environment map to produce a more realistic reflection. In this case, the angle of reflection at a given point on a polygon will take the normal map into consideration. This technique is used to make an otherwise flat surface appear textured, for example corrugated metal, or brushed aluminium.
Сфераны карталау
Сфералық бейнелеу, түсетін жарық сферасын, оның шағылысынан көрінгендей, орфографиялық камера арқылы шағылыстырылған сфера ретінде көрсетеді. Текстуралық суретті осы идеалды құрылымды жуықтату арқылы, балық көзі линзасын қолдану арқылы немесе сфералық бейнелеу арқылы сахнаны алдын ала көрсету арқылы жасауға болады. Сфералық бейнелеу, нәтижедегі бейнелеудің реализмін төмендететін шектеулерге ұшырайды. Сфералық карталар олар бейнелейтін ортаның азимуталды проекциялары түрінде сақталады, сондықтан объектінің шағылысында кенеттен сингулярлық нүкте ("қара тесік" әсері) пайда болады, онда картаның шетіне жақын немесе шетіндегі тексельдердің түсі, нүктелерді дәл бейнелеу үшін жеткіліксіз ажыратымдылықтың салдарынан бұрмаланады. Сфералық бейнелеу сонымен қатар сферада емес, шаршыда орналасқан пиксельдерді ысыраптайды. Сфералық бейнелеудің бұрмалаулары соншалықты күшті, ол тек виртуалды орфографиялық камераның көріс бұрышына жақын көзқарастарда ғана тиімді.
Күштік карталау
Куб карталары және басқа полиэдр карталары сфералық карталардың күшті бұрмалану мәселесін шешеді. Куб карталары дұрыс жасалып, сүзгіленген жағдайда, көзге көрінбейтін тігістері болмайды және картаны түсіретін, көбінесе виртуалды камераның көзқарасына тәуелсіз қолданылуы мүмкін. Куб және басқа полиэдр карталары көптеген компьютерлік графика қолданбаларында сфералық карталарды ығыстырды, сурет негізінде жарықтандыруды алудан басқа. Сурет негізінде жарықтандыруды параллакс түзетілген куб карталары арқылы жасауға болады. Әдетте, куб карталарында сыртқы рендерингтерде қолданылатын skybox пайдаланылады. Куб картасы арқылы шағылыс жасау үшін, объектіге қарап тұрған вектор анықталады. Бұл камера сәулесі, камера векторының объектімен қиылысқан жеріндегі беттік нормальға қатысты шағылыстырылады. Нәтижесінде шағылысқан сәуле куб картасына жіберіледі, ол жарықтандыру есептеуінде қолданылатын сәулелену мәнін беретін текселді алады. Бұл объектінің шағылыстыратын сипаттамасын құрайды.
HEALPix картасы
HEALPix орталық карталауы басқа көпжақты карталауларға ұқсас, бірақ иерархиялық болуы мүмкін, осы арқылы сфераны жақсырақ жақындататын көпжақтыларды жасауға біртұтас ая ұсынады. Бұл есептеулерді күшейту бағасына бұрмалауды азайтуға мүмкіндік береді.
Тарих
1974 жылы Эдвин Кэтмалл математикалық анықтамасымен тікелей жұмыс істейтін "екі өтімді бет жапсырмаларының кескіндерін көрсету" алгоритмін жасады. 1975 жылы Буи Туонг Фонг, ал кейіннен 1976 жылы қоршаған ортаны карталауды (environment mapping) дамытқан Джеймс Блинн мен Мартин Ньюэлл осы алгоритмдерді зерттеп, құжаттады; Кэтмаллдың бастапқы алгоритмдерін жетілдірген осы жетістіктер оларды "осы жалпыламалар үлгілер мен текстураларды жасаудың жақсартылған тәсілдеріне әкеледі" деген қорытындыға жеткізді. Джин Миллер 1982 жылы MAGI-де сфералық ортаны карталаумен тәжірибе жүргізді. Вольфганг Хайдрих 1998 жылы параболоидты карталауды (Paraboloid Mapping) енгізді. Эмиль Праун 2003 жылы октаэдрлік карталауды (Octahedron Mapping) енгізді. Мауро Штейгледер 2005 жылы пирамидалық карталауды (Pyramid Mapping) енгізді. Тиен Цин Вонг және авторлар тобы 2006 жылы рендеринг үшін қолданыстағы HEALPix картасын енгізді.