Skip to main content

სხივზე მარშირების მეთოდი

Ray Marching

ნისლიანი ტყე დარენდერებული მთლიანად სხივზე მარშირების მეთოდით. სურათი აღებულია Iñigo Quílez-ის საიტიდან.
        სხივზე მარშირება არის ვიზუალიზაციის ერთ-ერთი მეთოდი, რომლის საშუალებითაც ხდება ვიზუალიზაცია, სადაც ხილვადობის ამოცანა წყდება სხივზე მარშირების გზით. მარშირება იწყება სხივის სათავიდან და ხდება სხივის გასწვრივ მანამ, სანამ ზედაპირს არ მივუახლოვდებით წინასწარ განსაზღვრულ მანძილზე ახლოს. თუკი ბიჯების წინასწარ განსაზღვრული რაოდენობის გავლის შედეგაც ზედაპირთან სათანადოდ მიახლოვება არ მოხდა ეს ნიშნავს, რომ თანაკვეთა ვერ ვიპოვეთ. იმისათვის რომ მოვახდინოთ მარშირება მაგალითად 3 განზომილებიან სცენაში საჭიროა სცენის თინოეული წრტილისათვის ვიცოდეთ უახლოეს ზედაპირამდე მანძილი. ზოგ შემთხვევაში, ძირითადად მარტივ სცენებში ამისი დადგენა ხდება მარშირების პროცესშივე თუმცა რთული სცენების შემთხვევაში ხშირად გამოიყენება გადათვლილი ინფორმაცია, რომელიც შენახულია მოსახერხებელი ფორმით ამაჩქარებელ სტრუქტურაში. ინფორმაციას, რომელიც სცენის თითოეული წერტილისათვის უახლოეს ზედაპირამდე მანძილს ინახავს უწოდებენ მანძილების ველს(Distance Field). აქვე უნდა აღინოშნოს, რომ დიდი ნაწილი ოპერაციებისა მანძილების ველზე საკმაოდ ადვილია, მაგალითად თუ გვსურს 2 ასეთი ველის გაერთიანება საჭიროა მათი ელემენტებიდან მინიმუმების არჩევა.
        არსებობს მარშირების სხვადასხვა ვარიაციები. ყველაზე მარტივ შემთხვევას წარმოადგენს თანაბარი ბიჯით მარშირება. როგორც სახეწოდებიდან ჩანს ხდება მარშირების ბიჯის ზომის განსაზღვრა და ამის შემდგომ სხივზე მარშირება ხდება თანაბარი ბიჯით. თანაბარი ბიჯით მარშირებას აქვს პრობლემები, რომლებიც შემდგომ ვიზუალური ხარვეზებს წარმოშობს. მაგალითად თანაბარი ბიჯით მარშირების დროს ნაბიჯევს შორის შესაძლოა ხდებოდეს რეალური თანაკვეთა თუმცა ნაბიჯების პოზიციებსზე ზედაპირამდე მანძილი ფიქსირებულ ზღვარზე დიდი იყოს, რაც მოგვცემს იმას, რომ თანაკვეთას ვერ ვიპოვით.
ფიქსირებული ბიჯით მარშირება. შემთხვევა როდესაც ვერ ვპოულობთ არსებულ თანაკვეთას. წრეწირებით ნაჩვენებია ზედაპირის ძებნის რადიუსი.
        სფეროებით მარშირების შემთხვევაში, მარშირების თითოეულ ბიჯზე ვიღებთ მანძილს უახლოეს ზედაპირამდე და მშვიდად გადავადგილდებით სხივზე ამ მანძილით.
სფეროებით მარშირება. თანაკვეთის პოვნა მოხდა მე-13 ბიჯზე, როდესაც უახლოეს ზედაპირამდე მანძილი დასაშვებზე ნაკლები აღმოჩნდა.
        მარშირების ეს მეთოდი ბევრ შემთხვევაში ჯობნის თანაბარი ბიჯით მარშირებას რადგან ის უფრო ზუსტია და სფეროებით მარშირებისას ჩვენ არ გადავახტებით გეომეტრიას. თუკი ფიქსირებული ბიჯით მარშირებისას ზუსტად შეგვეძლო იმის თქმა თუ რამდენი ბიჯია საჭირო სხივზე გარკვეული მანძილის გასავლელად, სფეროებით მარშირების შემთხვევაში ბიჯების რაოდენობა პირდაპირ დამოკუდებულია იმაზე თუ რა გზას გადის ესა თუ ის სხივი სივრცეში. სხივები რომლებიც მოძრაობენ სცენაში არსებულ ზედაპირებთან ახლოს თუმცა არ კვეთენ მას გადაადგილდებიან მოკლე ნაბიჯებით, რაც ფიქსირებული მანძილის გავლისათვის საჭირო ბიჯების რაოდენობას ზრდის.
სურათის თითოეული პიქსელი უჩვენებს მარშირებისას ბიჯების რაოდენობას. ბიჯების მაქსიმალური რაოდენობა ტოლია 64-ის. (სწარო)
        როგორც სურათზე ჩანს დიდი რაოდენობით ბიჯები არის საჭირო იმ სხივებისათვია რომლებიც გეომეტრიულ ზედაპირებს ჩაუვლიან ახლოს. ეს ხშირ შემთხვევაში სერიოზულ პრობლემას წარმოადგენს თუმცა გარკვეულ სცენებში იტერაციების რაოდენობას იყენებენ გარემომცველი წინაღობის ეფექტის მისაღებად, რაც საკმაოდ დამაკმაყოფილებელ შედეგს იძლევა. თუმცა ასევე შესაძლებელია ამ ეფექტის მიღება ტრადიციული ხერხითაც როდესაც სხივების გამოშვება თანაკვეთის წერტილიდან ხდება.
სურათზე ნაჩვენებია 3D ფრაქტალი. მარჯვენა სურათზე იტერაციების რაოდენობის ინფორმაცია გამოყენებული AO-ს მისაღებად. (წყარო)
ასევე უნდა აღინიშნოს, რომ ამ მეთოდით შესაძლებელია ბევრი საინტერესო ეფექტის მიღება ძალიან ადვილად, ისეთი როგორიცაა: ბულიან ოპერაციები სივრცულ ობიექტებზე, ობექტების გაღუნვა, დახვევა, ამოზნიქვა, ....
სურათზე ნაჩვენებია გეომეტრიული პრიმიტივები და სხვადასხვა ოპერაციები მათზე. (წყარო)
        სხივზე მარშირების პროცესში ჩვენ პირდაპირ გვაქვს ცოდნა იმისა თუ რა მანძილზე ხდება უახლოეს ზედაპირთან მიმართებაში მოძრაობა. დიდი განათების დროს დაცემულ ჩრდილზე გვაქვს ნაწილობრივად და სრულად დაჩრდილული რეგიონები (umbra/penumbra),  რასაც ჩვენ რბილ ჩრდილებს ვეძახით. შესაბამისად ინფორმაცის რომელსაც სხივზე მარშირებისას ვაგროვებთ გვეხმარება რბილი ჩრდილების მიღებაში. მანძილების ვერლში მარშირებით მიღებული რბილი ჩრდილების მეთოდის მხარდაჭერა მოხდა ასევე Unreal Engine 4-ში. ეს მეთოდი რა თქმა უნდა არაა ფიზიკურად სწორი მეთოდი თუმცა მიღებული ეფექტი საკმაოდ დამაკმაყოფილებელია და რაც მთავარია მისი გამოთვლა სწრაფად ხდება.
მანძილების ველში სხივზე მარშირებით მიღებული რბილი ჩრდილები Unreal Engine 4-ში.
        გარდა ზედაპირებისა სხივზე მარშირების მეთოდი ძალიან გავრცელებულია სივრცული რენდერში, რასაც შემდგომში უფრო დეტალურად განვიხილავთ.

Comments

Popular posts from this blog

რუსული რულეტკის მეთოდი

Russian Roulette Technique რუსული რულეტკის მეთოდი არის ფართოდ გავრცელებული ტექნიკა მონტე-კარლოს ინტეგრირების პროცესის შესაწყვეტად(სახელწოდება მოდის ცნობილი რუსული თამაშიდან). იმის მაგივრად, რომ პროცესი შევწყვითოთ ხისტად, მაგალითად შერჩევების რაოდენობის რაიმე მაქსიმალურ რაოდენობაზე, რუსული რულექტკის მეთოდი გვეხმარება ინტეგრირების პროცესის მიუკერძოვებლად შეწყვეტაში. მთავარი იდეა რუსული რულეტკის მეთოდისა არის ის, რომ რუსული რულეტკა წყვეტს მონტე კარლოს მეთოდს რაიმე არანულოვანი p ალბათობით(ალბათობა შეიზლება შეირჩეს ერთხელ ან მონტე კარლოს მეთოდის ყოველ ბიჯზე სათითაოდ რაიმე მნიშვნელოვნობით) ან აგრძელებს მას და შემდგომი პროცესიდან მიღებულ შედეგს ამრავლებს 1/p - ზე. რადგან რუსული რულეტკის მეთოდი პროცესის შეწყვეტას ახდენს რაიმე არანულოვანი p ალბათობით ყოველთვის რჩება იმის შანსი, რომ პროცესი გაგრძელდეს რაც იმას ნიშნავს, რომ მონტე კარლოს ინტეგრირების პროცესისათვის ნებისმიერი სიღრმე მიღწევადი ხდება. სწორედ ამიტომ ხისტი შეზღუდვით მიღებული მიკერძოება( სისტემატიური შეცდომა ) ქრება რუსული რ...

ფერების RGB მოდელი

RGB Color Model         ფერების RGB მოდელი წარმოადგენს ისეთ მოდელს რომელშიც სამი ძრირითადი ფერის წითელი, მწვანე და ლურჯის საშუალებით მიიღება ფერების ფართო სპექტრი. მისი დასახელებაც მოდის სწორედ ძირითადი ფერების ინგლისური სახელწოდების ინიციალებიდან(Red, Green, Blue).         ფერთა სპექტრის ამდაგვარი წარმოდგენა დაკავშირებულია იმასთან, რომ გამოსახულების გამოტანის მოწყობილობებში რომელიც გააჩნიათ კომპიუტერებს, ტელევიზორებს ფერის მიღება ფიზიკურად ხდება სწორედ ამ სამი ძირითადი ფერის შეზავებით. დღესდღეობით ყველაზე გავრცელებული არის 24 ბიტიანი RGB მოდელი, სადაც თითოეულ კომპონენტს ეთმობა ერთი ბაიტი და შესაბამისად შეუძლია მიიღოს ნებისმიერი მნიშვნელობა [0, 255] დიაპაზონში, რაც საბოლოოდ გვაძლევს 16777216 განსხვავებულ ფერს.

სინათლის ხილული სპექტრი და სხივის თვისებები

Visible Spectrum სურათზე ნაჩვენებია პრიზმაში გამავალი თეთრი სხივის სპექტრულად გაშლის პროცესი.         სინათლე წარმოადგენს ელექტრომაგნიტურ ტალღას, რომელსაც როგორც ყველა ელექტრომაგნიტურ ტალღას გააჩნია რამოდენიმე მნიშვნელოვანი მახასიათებელი. ერთერთი მნიშვნელოვანი მახასიათებელი არის ტალღის სიგრძე, რომელიც განსაზღვრავს სხივის სპექტრულ ფერს. ელექტრომაგნიტური ტალღები ბუნებაში და თანამედროვე სამყაროში მრავლად გვხვდები. სხვადასხვა ტალთის სიგრძის(სიხშირის) ტალღებს იყენებენ როგორც საყოფაცხოვრებო(რადიო, მობილური ტელეფონი) დანიშნულების, ასევე სამედიცინო(რენდგენის სხივები) და სამხედრო(რადარები) მოწყობილობებში. ადამიანის თვალისთვის ხილული სინათლის ელექტრომაგნიტური ტალღების ტალღის სიგრძე იწყება დაახლოებით 400 ნანომეტრიდან და მთავრდება 700 ნანომეტრზე. ამ დიაპაზონს ქვემოთ ექცევა ულტრაიისფერი ტალღები და დიაპაზონს ზემოთ ექცევა ინფრაწითელი, რომელსაც ადამიანის თვალი ვერ აღიქვამს(იხილეთ ქვემოთ მოცემული სურათი). სინათლის თეთრი სხივი შედგება სხვადასხვა სიხშირის ტალღების ერ...