Кіріспе
3D CAD/CAM қатты модельдеу және бейнелеудің әдістемелік негізі Сәулелік құю 3D CAD/CAM қатты модельдеу және бейнелеудің әдістемелік негізі болып табылады. Бұл компьютерлік графикадағы сәулелерді іздеумен ұқсас, онда виртуалды жарық сәулелері камераның фокустық нүктесінен камера сенсорының әрбір пикселі арқылы 3D сахнадағы сәуле бойымен өтеді, осы сәуле бойында не көрінетінін анықтайды. "Сәулелік құю" терминін 1978–1980 жылдары General Motors Research Labs-те жұмыс істеген Скот Рот енгізген. Оның "Қатты денелерді модельдеу үшін сәулелік құю" атты мақаласында блоктар мен цилиндрлер сияқты қарапайым денелерді біріктіру арқылы модельделген қатты денелерді сипаттайды, жиынтық операторлар – одақ (+), қиылыс (&) және айырмашылық (–) қолданылады. Осы екілік операторларды қатты денелерді модельдеу үшін пайдалану идеясы негізінен Рочестер университетіндегі Воэлькер және Рекишаның геометриялық модельдеу тобына қатысты. Қатты модельдеу әдістерінің толық шолуы үшін қатты модельдеуге қараңыз. Оң жақтағы суретте 1979 жылы Роттың сәулелік құю жүйесін пайдаланып, екілік ағашта цилиндрлер мен блоктардан құралған U-түйіндісі көрсетілген. Сәулелік құюдан (және сәулелерді іздеуден) бұрын компьютерлік графика алгоритмдері 3D әлемнен беттерді немесе жиектерді (мысалы, сызықтарды) бейне жазықтығына проекциялап, көріну логикасын қолданды. Әлемнен бейне жазықтығына проекциялау – 3D гомогенді координаталар жүйесінің түрленуі (әрі қарай 3D проекциясы, аффиндік түрлену немесе проекциялық түрлену (гомография) деп аталады). Осылайша бейнені көрсету жасырын беттерді/шегін алып тастаумен қиындық тудырады. Сонымен қатар, қисық беттердің силуэттерін нақты есептеу қажет, ал сәулелік құюда бұл нәтиже автоматты түрде шығады, сондықтан көрініс өзгерген сайын оны есептеудің қажеті жоқ. Сәулелік құю 3D нысандар мен көріністердің бейнесін көрсетуді жеңілдетті, өйткені сызық сызық ретінде өзгереді. Сондықтан, 3D көріністегі қисық жиектер мен беттерді 2D бейне жазықтығына проекциялаудың орнына, түрлендірілген сызықтар (сәулелер) көріністегі нысандармен қиылысады. Гомогенді координаталар түрлендіруі 4x4 матрицамен көрсетіледі. Бұл математикалық әдіс компьютерлік графика мен геометриялық модельдеуде кеңінен қолданылады. Түрлендірулерге үш осьтің айналысында бұру, осьтер бойымен тәуелсіз масштабтау, 3D кеңістікте аудару және тіпті қисайту кіреді. Түрлендірулерді матрицалық арифметика арқылы оңай біріктіруге болады. 4x4 матрицамен жұмыс істеу үшін нүкте [X, Y, Z, 1] түрінде, ал бағыт векторы [Dx, Dy, Dz, 0] түрінде көрсетіледі. (Төртінші мүше аудару үшін қолданылады және бағыт векторларына қатысты емес.)
Ray casting is the methodological basis for 3D CAD/CAM solid modeling and image rendering. It is essentially the same as ray tracing for computer graphics where virtual light rays are "cast" or "traced" on their path from the focal point of a camera through each pixel in the camera sensor to determine what is visible along the ray in the 3D scene. The term "Ray Casting" was introduced by Scott Roth while at the General Motors Research Labs from 1978–1980. His paper, "Ray Casting for Modeling Solids", describes modeled solid objects by combining primitive solids, such as blocks and cylinders, using the set operators union (+), intersection (&), and difference ( ). The general idea of using these binary operators for solid modeling is largely due to Voelcker and Requicha's geometric modelling group at the University of Rochester. See solid modeling for a broad overview of solid modeling methods. This figure on the right shows a U Joint modeled from cylinders and blocks in a binary tree using Roth's ray casting system in 1979. Before ray casting (and ray tracing), computer graphics algorithms projected surfaces or edges (e. g., lines) from the 3D world to the image plane where visibility logic had to be applied. The world to image plane projection is a 3D homogeneous coordinate system transformation (aka: 3D projection, affine transformation, or projective transform (Homography)). Rendering an image in that way is difficult to achieve with hidden surface/edge removal. Plus, silhouettes of curved surfaces have to be explicitly solved for whereas it is an implicit by product of ray casting, so there is no need to explicitly solve for it whenever the view changes. Ray casting greatly simplified image rendering of 3D objects and scenes because a line transforms to a line. So, instead of projecting curved edges and surfaces in the 3D scene to the 2D image plane, transformed lines (rays) are intersected with the objects in the scene. A homogeneous coordinate transformation is represented by 4x4 matrix. The mathematical technique is common to computer graphics and geometric modeling. A transform includes rotations around the three axes, independent scaling along the axes, translations in 3D, and even skewing. Transforms are easily concatenated via matrix arithmetic. For use with a 4x4 matrix, a point is represented by [X, Y, Z, 1] and a direction vector is represented by [Dx, Dy, Dz, 0]. (The fourth term is for translation and that does not apply to direction vectors.)
Кіру-шығу сәулелерінің жіктелуі
Бұл суретте + және – операторларын қолдана отырып, құрама ағаштағы екілік операторлардың мысалы көрсетілген, мұнда бір сәуле есептеледі. Сәуле тастау процедурасы қатты денелер құрамының жоғарғы бөлігінен басталады, рекурсивті түрде төмен қарай түседі, сәулені бастапқы қатты денелерге қатысты жіктейді, содан кейін сол және оң тармақтардың жіктемелерін біріктіре отырып, ағашқа қайта оралады. Бұл суретте барлық үш екілік оператор үшін сол және оң жіктемелердің қалай біріктірілетіні көрсетілген.
Алмастыруға қарсы
Алиазингтің тігізді жиектері нүктелік үлгі алу әдістерінің жағымсыз әсері болып табылады және растрлық дисплей алгоритмдерінің классикалық мәселесі болып табылады. Түзу немесе тегіс қисық жиектер тігізді болып көрінеді және анимацияда әсіресе көзге жағымсыз, себебі кескіннің қозғалысы жиектерді бұлыңғыр немесе кішкентай жылжымалы эскалаторлар сияқты көрсетуі мүмкін. Сонымен қатар, сәулелер арасындағы аралықтан кішірек бөлшектер жоғалуы мүмкін. Сызық сызбаларындағы тігізді жиектерді жиектерді бақылап тегістеуге болады. Мұндай алгоритмнің мақсаты – суретті бір пикселдік дәлдікпен салу үшін қажетті сызықтар санын азайту. Осы арқылы тегіс жиектерге қол жеткізіледі. Жоғарыдағы сызық суреттері осылай салынған. Көлденеңделген суреттегі тігізді жиектерді субпикселдік дәлдікпен тегістеу үшін, жиектер туралы ақпарат алу үшін қосымша сәулелер жіберу қажет. (Жалпы тәсіл үшін Суперсамплингке қараңыз.) Жиектер беттердің қиылысуынан немесе қисық беттің контурынан пайда болады. Жоғарыда сипатталғандай, екілік іздеу арқылы "Когеренттілік" принципін қолдану арқылы, егер (X, Y) пикселіндегі көрінетін бет (X+1, Y) пикселіндегі көрінетін беттен өзгеше болса, онда арасында (X+½, Y) орналасқан сәуле жасалып, сол жердегі көрінетін бет анықталуы мүмкін. Ұлгілік нүктелер арасындағы қашықтықты одан әрі бөлуге болады, бірақ іздеудің тереңдігіне қатысты шектеулер жоқ. Тігізді жиектерді тегістеу үшін іздеу тереңдігі жиектің бойымен интенсивтілік градиентіне байланысты. (1) Жиектерді қамтитын кескіннің ауданы әдетте жалпы аумақтың шағын бөлігін құрайды және (2) екілік іздеулерде жіберілетін қосымша сәулелердің тереңдігі – жиектерді құрайтын көрінетін примитивтермен шектеледі, сондықтан тігізді жиектерді тегістеуге кететін шығын қолжетімді.
Жарық құю тарихы
Жарық құю тарихы үшін, жарық іздеу (графика) мақаласын қараңыз, себебі екеуі де әртүрлі атаулармен бірте-бірдей техника болып табылады. Скот Рот "жарық іздеу" терминін естігенге дейін "жарық құю" терминін ойлап тапқан. Сонымен қатар, Скотт Роттың GM Research Labs зертханасында жарық құюды дамытуы, Тернер Уитттің Bell Labs зертханасында жарық іздеу жұмысымен бір уақытта жүрді.
Алғашқы компьютерлік ойындардағы сәулелі құрам
Алғашқы бірінші тұлға ойындарында, raycasting 3D әлемін 2D ойын алаңынан экранның көлденең ені бойынша қарапайым бір өлшемді сканерлеу арқылы тиімді көрсету үшін қолданылды. Алғашқы бірінші тұлғадан ату ойындары 2D әлемнен 3D әсерін жасау үшін 2D сәулелік құюды пайдаланды. Әлем 3D болып көрінсе де, ойыншы жоғары немесе төмен қарай қарауға немесе қиылыс бұрмалануымен шектеулі бұрыштарда ғана қарауға мүмкіндік алады. Бұл көрсету стилі қазіргі заманғы ойын қозғалтқыштарындағыдай кадрдағы әр пиксел үшін сәуле жіберу қажеттілігін жояды; соққы нүктесі табылғаннан кейін проекция бұрмалануы беттік текстураға қолданылады және нәтижеден тік бағанның толық бөлігі кадрға көшіріледі. Бұл көрсету стилі сонымен қатар қолданылатын көрсету түрлеріне шектеулер қояды, мысалы, тереңдік бойынша сұрыптау мүмкін, бірақ тереңдік буферлеуі мүмкін емес. Яғни, көпбұрыштар бір-бірінің алдында немесе артында толығымен орналасуы керек, олар жартылай жабыса алмайды немесе қиылыса алмайды.
Вольфенштейн 3D
Wolfenstein 3D видеоойыны біркелкі биіктіктегі қабырғалардың, біркелкі түсті едендер мен төбелердің квадраттық тор желісінен құрылған. Әлемді көрсету үшін, экран пикселдерінің әрбір бағаны үшін бір сәуле жүргізілді және қабырға текстурасының тік қимасы таңдалып, сәуле әлемде қабырғаға қай жерде соғылып, соғысқанға дейін қанша қашықтықты жүріп өткеніне қарай масштабталды. Торға негізделген деңгейлердің екі мақсаты болды – сәуленің қабырғамен соқтығысуын жылдам табуға болады, себебі соқтығысу мүмкіндіктері болжамды болады, сондай-ақ жадтың көлемі азаяды. Дегенмен, кең ашық кеңістіктерді кодтау үшін қосымша орын қажет.
Көлеңкелі шаңдаушы
Raven Software ойыны ShadowCaster, Wolfenstein негізіндегі жақсартылған ойын қозғалтқышын пайдаланады, соған едендер мен төбелер текстуралары қосылған және қабырғалардың биіктігі өзгертіледі.
Команч сериясы
NovaLogic компаниясы Comanche ойындары үшін жасаған Voxel Space қозғалтқышы экран пикселдерінің әр бағанынан сәулені өткізіп, оны биіктік картасындағы нүктелермен тексерді. Содан кейін биіктік картасының әрбір элементін пикселдер бағанына түрлендіріп, қандайлары көрінетінін (яғни, алдыңғы жағына салынған пикселдермен жабылмағандарын) анықтап, текстура картасынан сәйкес түстермен салды.
Жарық шығарудан тыс
Кейінгі DOS ойындары, мысалы id Software-дің DOOM-ы, жылдамдық үшін көптеген raycasting 2.5D шектеулерін сақтап қалды, бірақ олар баламалы рендерлеу техникаларына (BSP сияқты) көшіп, енді raycasting қозғалтқыштары болмай қалды.
Есептеу геометриясының параметрлері
Есептеу геометриясында сәуле тарту мәселесі сәуле ату мәселесі деп те аталады және мынадай сұраныс мәселесі ретінде қойылуы мүмкін: d өлшемді кеңістіктегі объектілер жиынтығы берілгенде, оларды дерек құрылымына алдын ала өңдеп, әрбір сұраныс сәулесі үшін сәуленің алғашқы соқтығысқан нысаны жылдам анықталуы тиіс. Мәселе кеңістік өлшемдері, нысандар түрлері, сұраныс сәулелеріне қойылатын шектеулер сияқты әртүрлі жағдайларда зерттелді. Бір техника – сирек вокселді октауды пайдалану.