Tugas 1B - Ray Tracing dalam Film Pixar ‘Cars’
Ray Tracing dalam Film Pixar ‘Cars’
Universitas Gunadarma
3IA01
Group 1 :
1. Farhan Alfarisi 53414950
2. M Hermas Yuda P 57414305
3. Daniella Marsha 52414524
4. Rendytio Arifian P 59414055
5. M Taufiq Akbar 57414564
6. Singgih Aji P 5A414293
Ray Tracing dalam Film Pixar ‘Cars’
1. Mengapa menggunakan Ray Tracing?
Ada beberapa alasan mengapa direksi memilih untuk menggunakan ray tracing untuk ‘Cars’, yaitu: refleksi realistis, bayangan yang tajam, dan oklusi ambien. Mobil nyata biasanya terlihat mengkilap, dan refleksi adalah suatu hal yang penting dalam petunjuk visual dari bentuk dan material objek. Dengan algoritma scanline seperti REYES, refleksi biasanya dihitung dengan menggunakan peta lingkungan. Namun, pendekatan ini akan tidak tepat ketika titik yang direfkleksi dekat dengan titik refleksi itu sendiri, atau jika titik refleksi juga sebagai reflektor. Gambar 1 menunjukkan dua awal pra-produksi gambar uji Luigi, Fiat kuning 500 “Topolino”. Gambar membandingkan pemetaan lingkungan dengan refleksi ray traced. Sementara refleksi peta lingkungan(environtment map reflection) pada gambar 1 (kiri) menunjukkan pendekatan yang baik dari lingkungan yang jauh, hal itu tidak menangkap interreflections seperti refleksi dari mata pada object yang dilihat di gambar 1
(kanan).
Gambar1. Test refleksi: (kiri) dengan menggunakan peta lingkungan. (Kanan) dengan menggunakan peta lingkungan dan ray-traced interreflections.
Bayangan memberikan isyarat tentang pencahayaan yang kuat dan tentang penempatan objek relatif terhadap satu sama lainnya. Scanline algoritma tradisional menghitung bayangan menggunakan bayangan peta, dan masih ada banyak kasus di mana bayangan peta merupakan cara yang paling efektif dalam menghasilkan bayangan yang high-quality. Namun, beberapa adegan di 'Cars ' menggunakan set yang luas dan juga memiliki banyak geometri kecil yang rinci. Resolusi ini bisa menyebabkan masalah dalam peta bayangan. Selain itu, banyak adegan menggunakan ribuan sumber cahaya.
Maka menjaga jalur bayangan peta berkas dapat menjadi masalah aset manajemen. Gambar 2 menunjukkan frame dari terakhir film dengan Lightning McQueen memimpin balapan .Ini adalah contoh adegan yang memerlukan detil bayangan yang sangat halus. Lokasi kejadian berisi hampir 1000 sumber cahaya .Menggunakan ray-traced shadows menghilangkan resolusi dan masalah asset managemen.
Gambar2. Ray-traced sharp shadow, menghasilkan bayangan yang tajam
Penggunaan lain dari ray-traced adalah untuk ambient occlusion. Ambient occlusion adalah ukuran berapa banyak cahaya mencapai titik dari belahan objek yang seragam. Ambient occlusion banyak digunakan dalam film produksi karena memberikan indikasi yang baik dari lipatan pada permukaan tata ruang dan kedekatan objek, dan pendekatan penerangan global. Gambar 3 menunjukkan ambient occlusion di tiga mobil. Ambient occlusion biasanya dihitung dengan menembak banyak sinar untuk sampel cakupan belahan objek di atas masing masing titik.
Gambar3. Ambient Occlusion.
2. Persyaratan Render Film
Persyaratan di film rendering industri sangat sulit:
- Scene Geometri terlalu jauh besar untuk masuk ke dalam memori dalam bentuk tessellated.
- Banyak permukaan yang displacement-mapped.
- Mungkin ada ribuan tekstur untuk mengontrol refleksi parameter dan perpindahan.
- Bisa terdapat ribuan sumber cahaya.
- Semua penerangan dan permukaan refleksi karakteristik dikendalikan sepenuhnya program, shaders kompleks.
Selain itu, gambar yang biasanya dirender pada resolusi yang tinggi dengan motion blur dan tingkat kedalaman permukaan. Selain itu, tidak ada aliasing ruang atau waktu yang dapat diterima.
3. Reyes Rendering Adegan-Adegan Yang Kompleks
Algoritma REYES memiliki banyak properti yang diinginkan seperti koheren shader eksekusi, koheren akses ke geometri dan tekstur data, perhitungan diferensial sederhana, perpindahan efisien, cepat gerak kabur ( fast motion blur ) dan depth-of-field, dan kemampuan untuk membuat adegan-adegan yang sangat kompleks.
Algoritma REYES membagi setiap permukaan menjadi lebih kecil patch, dan patch setiap tessellated ke dalam grid biasa kecil quadrilaterals (alias. micropolygons). Patch kecil mudah untuk menempatkan ke satu (atau beberapa) gambar ubin ( Image Tile). Sebuah patch dapat dibuang jika tidak sepenuhnya di belakang opaque patch yang lain.
Shading dilakukan di simpul dari grid. Shading seluruh grid pada waktu menguntungkan untuk data koherensi dan diferensial perhitungan yang diperlukan untuk misalnya tekstur filter dengan ukuran. Tingkat shading dipisahkan dari perhitungan visibilitas: ada biasanya hanya satu titik shading (grid vertex) per pixel rata-rata, sementara tingkat pixel sampling biasanya 4 × 4 untuk gambar statis dan bahkan lebih tinggi untuk gambar dengan gerakan kabur ( Motion Blur ).
Algoritma REYES sangat baik menangani adegan-adegan yang kompleks. Pertama, itu dapat benar-benar mengabaikan semua objek di luar viewing frustum. Kedua, menjadikan hanya satu tile gambar kecil (biasanya 16 × 16 atau 32 × 32 piksel) pada suatu waktu. Ini berarti bahwa perhitungan hanya membutuhkan sebagian kecil dari adegan geometri dan tekstur pada waktu tertentu. Ini memaksimalkan koherensi geometri dan meminimalkan jumlah tessellated permukaan yang perlu disimpan dalam memori pada saat yang sama. Selain itu, segera setelah permukaan yang telah diterjemahkan, data dapat dihapus dari memori karena mereka akan tidak lagi diperlukan. Permukaan dibagi dan tessellated menurut ukuran mereka di layar, sehingga permukaan jauh besar secara otomatis mendapatkan representasi kasar.
Demikian juga, objek jauh hanya perlu tekstur yang kasar, jadi hanya tingkat kasar di peta tekstur MIP akan diakses untuk objek tersebut. Untuk semua alasan ini, REYES mengisahkan secara anggun geometri yang sangat kompleks dan sejumlah besar tekstur.
4. Ray Tracing dari Scene yang Kompleks
Ray Tracing juga memiliki beberapa properti indah algoritma render: secara konseptual sederhana, run-waktu hanya tumbuh secara logaritma dengan adegan kompleksitas dan dapat dengan mudah diparalelkan. Tetapi Ray Tracing memiliki keterbatasan yang penting: tidak hanya efisien jika adegan cocok di memori. Jika adegan tidak cocok dalam memori, memori virtual melambat render oleh lipat.
Ray menelusuri kompleks adegan inheren lebih sulit daripada REYES render adegan-adegan yang sama. Pertama, objek tidak dapat ditolak hanya karena mereka berada di luar viewing frustum: mereka mungkin melemparkan bayangan pada objek terlihat atau tercermin oleh mereka. Kedua, bahkan jika gambar dituliskan satu ubin pada waktu dan geometri langsung terlihat ray dilacak sangat koheren, refleksi dan bayangan sinar akan mengakses geometri lainnya (dan tekstur) dalam cara yang koheren kurang. Lebih buruk lagi, sinar dilacak untuk menyebar interreflections dan ambient occlusion benar-benar tidak koheren dan dapat mengakses setiap bagian dari adegan setiap saat. Oleh karena itu, kita tidak bisa menghapus objek bahkan ketika tile gambar langsung terlihat di telah diterjemahkan — sinar dari beberapa bagian lain dari adegan mungkin mencapai objek pada setiap saat selama endering. Untuk semua alasan yang tercantum di atas, Ray Tracing adegan-adegan yang sangat kompleks mungkin tampak seperti tugas yang menakutkan. Namun, penggunaan ray diferensial dan geometri multiresolusi dan tekstur cache membuat tractable.
4.1 Ray Differentials
Diferensial ray menjelaskan perbedaan antara sinar yang nyata, imaginar dan "tetangga" sinar. Metode diferensial Igehy's ray menjejak sinar tunggal, tetapi terus melacak perbedaan karena sinar disebarkan dan tercermin. Perbedaan memberikan indikasi dari balok ukuran yang mewakili sinar masing-masing, seperti digambarkan dalam gambar 4. Menentukan kelengkungan pada titik-titik koordinat permukaan.
Bagaimana perbedaan ray dan balok-balok terkait mereka mengubah after specular reflection dan pembiasan. Misalnya, jika sinar mengenai permukaan yang sangat melengkung, cembung, specularly pantulan sinar akan memiliki diferential besar (mewakili sangat divergen sinar tetangga).
Gambar4. Rays and Ray Beam
Suykens dan Willems menggeneralisasikan ray diferensial untuk refleksi mengkilap dan menyebar. Untuk distribusi ray tracing menyebar refleksi atau ambient occlusion, diferensial ray sesuai dengan sebagian kecil dari belahan objek. Sinar lebih ditelusuri dari titik yang sama, menjadi semakin kecil fraksi belahan objek subtended. Jika fraksi belahan objek sangat kecil, bergantung pada kelengkungan diferensial (seperti untuk refleksi specular) menjadi dominan. Di Christensen et al, kami menyediakan analisis yang komprehensif tentang ray diferensial vs ray koherensi. Kami mengamati bahwa dalam semua kasus praktis, koheren sinar memiliki balok sempit dan tidak koheren sinar memiliki berbagai balok. Ini adalah hubungan yang penting dan sangat beruntung yang memungkinkan ray tracing adegan-adegan yang sangat kompleks. Kita mengeksploitasi hubungan itu di bagian berikut dengan merancang cache yang memanfaatkan itu.
4.2 Multiresolusi tessellation
REYES memilih tessellation harga untuk sebuah patch permukaan tergantung pada jarak, kelengkungan permukaan, dan opsional juga sudut pandang. Dalam pelaksanaanya, tingkat tessellation tertinggi yang digunakan untuk ray tracing patch adalah sama dengan tingkat tessellation REYES untuk patch itu. Subkumpulan Vertex digunakan untuk tessellations kasar, yang memastikan bahwa kotak yang mengikat konsisten: kotak yang mengikat (ketat) tessellation terbaik adalah juga sebuah kotak yang mengikat untuk tessellations kasar. Coarsest tessellation adalah hanya empat penjuru patch. Satu bisa memikirkan berbagai tingkat tessellation sebagai peta MIP geometri tessellated. Gambar 5 menunjukkan contoh lima tessellations patch permukaan; di sini, tingkat tessellation yang terbaik adalah 14 × 11.
Gambar5. Contoh Multiresolution tessellation untuk patch permukaan:
14×11 quads, 7×6 quads, 4×3 quads, 2×2 quads, and 1 quad.
Dalam pelaksanaan yang pertama, tingkat tessellation yang digunakan untuk ray tracing adalah 16 × 16, 8 × 8,..., 1. Namun, menggunakan REYES tessellation tarif dan subset daripadanya memiliki dua keuntungan: ada lebih sedikit quads untuk menguji titik koordinat (karena selalu mengitari tingkat tessellations REYES untuk ray tracing), dan ada lebih sedikit masalah intersection jika kita menggunakan metode rendering hibrida (karena Vertex representasi dua selalu bertepatan ketika menggunakan pendekatan tessellation saat ini). Contoh dalam gambar 5 adalah patch permukaan persegi panjang. Kami memiliki serupa multiresolusi tessellation metode untuk patch segitiga yang timbul dari jerat segitiga dan Loop bagian permukaan.
4.3 Multiresolusi Geometry Cache
Men-tessellate permukaan patch pada permintaan dan cache tessellations. Seperti yang ditunjukkan di atas, kita menggunakan hingga lima tingkat yang berbeda dari tessellation untuk patch setiap permukaan. Namun, kami telah memilih untuk tidak memiliki lima geometri cache; Sebaliknya kita menggunakan cache tiga dan membuat tessellations antara dua dengan memilih seperempat dari Vertex (kira-kira) dari tingkat tessellation lebih halus berikutnya. Dalam pelaksanaanya, cache kasar berisi tessellations dengan 4 simpul (1 quad), cache menengah berisi tessellations dengan paling banyak 25 simpul, dan fine cache berisi semua tessellations yang lebih besar (paling 289 Vertex). Ukuran cache geometri dapat ditentukan oleh pengguna. Secara default, ukuran adalah 20 MB per thread yang dialokasikan untuk masing-masing dari tiga cache. Karena ukuran tessellations berbeda begitu banyak, kapasitas maksimum (jumlah slot) cache kasar jauh lebih tinggi daripada cache menengah, dan cache menengah memiliki banyak kapasitas yang lebih tinggi daripada fine cache. Untuk tes koordinat ray, kita memilih tessellation dimana quads sedang berada di ukuran yang sama sebagai ray berkas crosssection. Kami telah mengamati bahwa akses ke cache halus dan medium biasanya sangat koheren.
4.4 Multiresolusi Texture Cache
Tekstur disimpan pada disk seperti keramik MIP peta dengan 32 × 32 piksel dalam setiap ubin ( tile ). Ukuran cache tekstur dipilih oleh pengguna; ukuran default adalah 10 MB per thread. Seperti dengan cache geometri, ukuran ray balok digunakan untuk memilih tingkat peta MIP tekstur sesuai untuk tekstur pencarian. Kita memilih tingkat tekstur piksel tersebut kira-kira ukuran yang sama seperti penampang balok ray. Pencarian tidak koheren tekstur memiliki lebar ray balok, sehingga tingkat MIP peta kasar akan dipilih. Tingkat peta MIP halus hanya dapat diakses oleh sinar dengan balok sempit ray; Untungnya sinar tersebut koheren sehingga dihasilkan tekstur cache pencarian akan koheren juga.
5. Implementasi Ray Tracing yang lain
5.1 Spatial Acceleration data structure
Struktur percepatan spasial yang baik sangat penting dan efisien dalam ray tracing. Dengan menggunakan hirarki volume mengikat, the Kajiya tree[8]. Ini struktur data yang baik kompromi antara memori overhead, pembangunan kecepatan, dan ray traversal kecepatan. Data struktur dibangun secara dinamis selama render. Saat kita cukup puas dengan adanya kinerja kay-kajiya pohon, hal ini tentu layak mempertimbangkan lain percepatan struktur datanya di masa depan.Ada satu lagi tingkat skala bounding yang terbaik untuk tessellations: bounding kotak seharga kelompok ( hingga 4 ) 4 quads. Ini mengikat kotak yang disimpan di cache geometri yang bagus bersama dengan tessellated poin. ~
5.2 Displacement-mapped surfaces
Displacement (perpindahan) shader mempersulit penghitungan simpangan ray . Jika permukaan shader telah dipindahkan , shader yang dievaluasi di tessellation untuk mendapatkan tessellation yang dipindahkan simpulnya. Kotak batas dari simpul yang dipindahkan dihitung , dan kay-kajiya tree diperbarui dengan kotak batasan yang baru.
Meskipun ada teknik untuk ray traing secara langsung menelusuri permukaan [12] , kami (PIXAR) telah menemukan bahwa menerapkan perpindahan shaders untuk jaringan tessellated membuat render lebih cepat, paling tidak jika tessellations yang dipindahkan adalah cached .
Setiap objek yang telah dipindahkan harus memiliki pre-specified terikat dengan perpindahan, batas tersebut penting bagi efisiensi dari kedua REYES render dan tracing ray .Tanpa priori batas , setiap permukaan mungkin berakhir dimana saja di lokasi kejadian setelah displacement.
Nilai dari kotak batasan begitu tinggi sehingga jika akses pertama ke permukaan yang dipindahkan hanya butuh tessellation coarse , menjalankan perpindahan shader , menghitung kotak batasan , memperbarui kay-kajiya tree , dan membuang poin tessellation yang tidak diperlukan .Ini adalah biaya yang telah diamortasi oleh penurunan jumlah sinar yang kemudian harus ditest terhadap permukaan patch . Kotak batasan memungkinkan kita untuk melakukan ray tracing ke permukaan dengan efisien .
5.3 Motion Blur
PRman menganggap bahwa semua gerak piecewise linier . Ada tessellation untuk memulai setiap gerak segmen plus satu tessellation untuk akhir terakhir segmen. Ini tessellations yang dihitung pada permintaan dan disimpan di geometri cache .Untuk perempatan ray tes , yang tessellated titik posisi interpolasi menurut sinar waktu , dan menciptakan grid dengan tepat waktu untuk sinar .
Yang untuk kay-kajiya, titik permukaan yang bergerak itu berisi sebuah batas penalti yang menjadi awal dari masing masing gerakan plus satu segmen penalti yang menjadi batas akhir segmen . Batasan kotak secara linier interpolasi untuk menemukanbatas kotak yang sesuai untuk sinar.
5.4 SIMD Speedup
Menggunakan instruksi SIMD(SSE dan AltiVec) untuk mempercepat proses perhitungan titik koordinat cahaya. Ketika melakukan test intersection pada titik Kay-Kajiya bounding box, kami melakukan beberapa tes lembaran (x, y, dan z planes) bersama-sama. Kotak batas dengan grup dari 4x4 quads halus tessellated patch ( disimpan di dalam geometri cache yang baik) adalah intersection-tested empat kotak pada suatu waktu .Dan tessellated patch intersection-tested adalah 4 segitiga ( 2 quads ) pada suatu waktu . Karena setiap ray dilacak secara independen, simd kami speedups tidak mengandalkan ray koherensi. Sebaliknya , wald et al .16 digunakan untuk melacak simd instruksi empat sinar pada suatu waktu . Ini bekerja baik jika sinar yang koheren, tetapi gagal untuk mengajar suatu speedup jika sinar yang tidak koheren.
5.5 Shading at ray hit points
Untuk menghiitung naungan hasil sinar pada hit point, kita bisa mensimpul warna dari sinar tracing tessellations, simpan warna di cache , dan warna interpolasi pada hit point . Ini akan menjadi generalisasi dari reyes dalam bayangan . Sayangnya, bayangan warna biasanya view-dependent atau penyorotan tergantung pada arah penglihatan , misalnya shader mungkin juga menghitung hasil yang berbeda tergantung pada sinar untuk tingkat non-realistic , efek artistik .
Selain itu kita menciptakan 3 bayangan poin bagi setiap hit point ( mirip dengan gritz dan hahn [5] ) . Satu bayangan titik adalah sinar hit point , dan dua lainnya bayangan poin yang dibuat menggunakan sinar diferensial di sinar hit point . Cara ini , shader bisa mendapatkan diferensial yang bermakna untuk penyaringan tekstur , segala bentuk baru ray arah , dll .Sementara kebanyakan fungsi bayangan dieksekusi pada ketiga poin bayangan, ada yang hanya dijalankan di hit point.
Perlu ditekankan bahwa untuk produksi adegan , yang dominan biaya ray tracing biasanya tidak segala bentuk penentuan lokasi cahaya , tetapi evaluasi perpindahan , permukaan , dan sumber cahaya shaders di sinar hit point. ( inilah mengapa ambient occlusion populer di produksi film begitu cepat sebagai alternatif solusi lebih akurat dalam penerangan: meskipun dibutuhkan banyak sinar untuk menghitung ambient occlusion yang akurat , tidak ada evaluasi shader di hit point . )
5.6 Avoiding cracks
Retak yang dapat dilihat bisa terjadi jika kedua grids berbagi tepi memiliki beragam tingkat tessellation (Lihat figure 6 ). Masalah ini merupakan potensial baik untuk reyes render dan untuk ray tracing , dan harus akan ditangani secara eksplisit .
Cara termudah untuk memperbaiki keretakan ini membutuhkan semua dicing harga adalah daya biner. Kemudian vertex setiap sisi fine tessellation tepi dapat pindah ke terletak di sepanjang garis lurus antara dua poin tetangga. Ini memastikan bahwa Vertex di kedua sisi tepi konsisten sehingga tidak retak. Namun, seperti kekuatan-of-dua tessellation (alias. "dicing biner") memperkenalkan terlalu banyak poin shading dibandingkan dengan lebih fleksibel tessellation harga, dan oleh karena itu terlalu mahal dalam praktek ketika shaders kemacetan.
Sebaliknya, kita menggunakan algoritma alternatif yang menyatukan pinggirnya bersama-sama sehingga menghindari retak. Kami menyebutnya ini algoritma "jahitan / stitching". Jahitan bergerak tessellation poin sehingga grid tumpang tindih, dan memperkenalkan quads baru jika diperlukan untuk mengisi sisa kesenjangan. Untuk render REYES,quads baru yang diperkenalkan tidak pernah redup, mereka hanya menyalin warna dari tetangga terdekat mereka.
Kami menggunakan algoritma stiching yang sama untuk ray tracing. Jika ada quads baru yang dibuat, maka mereka akan disimpan ke dalam geometry cache.
Tingkat tessellation patch setiap permukaan ditentukan dari ukuran patch kotak batasan relatif terhadap ukuran berkas sinar. Oleh karena itu, tessellation dalam patch tetap konsisten untuk tiap sinar dan tidak ada keretakan internal dalam patch. (Celah-celah tersebut terkadang disebut sebagai "tunnelling" [13].)
6. Hybrid Rendering : Reyes And Rays
PRMan menggunakan kombinasi dari REYES Algoritma dan Demand Ray Tracing. REYES digunakan untuk merender objek yang langsung terlihat nyata dikamera. Shading dari objek dapat menyebabkan cahaya yang terarahkan. Dengan pendekatan hibrida ini ada tidak ada sinar kamera; semua sinar tingkat pertama berasal dari REYES shading poin.
Dengan deskripsi metode diatas, baik algoritma REYES dan ray tracing dapat mengatasi scene yang kompleks. Jadi kenapa tidak menggunakan ray tracing pada proses rendering utama? Itu akan bisa menyatukan algoritma kita, menghilangkan bagian yang besar dalam kode basis PRMan , dan membuat software maintenance lebih mudah. Akan tetapi, sejauh ini kelebihan koherensi, perbedaan didefinisikan dengan baik, penanganan perpindahan pemetaan yang anggun, gerakan efisien motion blur dan depth-of-field, decoupling of shading rate dan contoh pixel, dll membuat algoritma REYES sulit untuk mengalahkan dalam render film berkualitas.
7. Test On A Complex Scene
Figure & memperlihatkan contoh penerapan, sebuah scene dengan 15 mobil. Mobil-mobilnya secara eksplisit disalin, tidak diinstasikan. Setiap mobil terdiri dari 2155 NURBS patch, banyak diantaranya memiliki kurva trim. Mobil – mobilnya memiliki refleksi cahaya yang dipantulkan(Maksimum kedalaman refleksi 4) dan bayangan yang tajam, sementara lantai berbayang dengan ray-traced ambient occlusion. Ini memberikan campuran koheren dan tidak koheren. Resolusi gambar adalah 2048 x 1536 pixel.
Percobaan dijalankan di komputer Apple G5 dengan dua 2GHz PowerPC prosesor dan 2GB memori. Selama proses rendering permukaan mobil terbagi menjadi 1.3 juta titik(patches) permukaan, Sesuai dengan 383 juta simpul dan 339 juta quads(678 juta segitiga) di tessellation penuh. Memasukkan semua tessellations penuh akan mengkonsumsi 4.6GB. Sebaliknya, dengan multiresolusi cache, adegan mengunakan total 414MB:Geometri cache ukurannya diatur ke nilai default(20 MB per cache per thread), total 120MB. Pohon kay-kajiya menggunakan sekitar 59MB per benang. Deskripsi top-level objek menggunakan 126MB ditambah 50MB untuk untuk memangkas kurva.
Render gambar ini digunakan 111juta sinar yang menyebar, 37 juta specular sinar dan 26 juta bayangan sinar. Sinar menyebabkan 1.2 miliyar ray-triangle intersection tests. Dengan multiresolusi geometri cache, render memakan waktu 106 minutes. Tiga geometri cache memiliki total 675 juta pencarian dan cache hit rates sekitar 91.4%-95.2%. sebalkinya, jika perbedaan ray diabaikan(tingkat tessellation REYES digunakan untuk semua ray intersection tests) dan caching tidak dilakukan, waktu render adalah 15 jam 45 menit, hamper 9 kali lebih lambat.
Tes lebih lengkap dan hasil dapat ditemukan di Christensenet al. [3]. Meskipun waktu render dilaporkan cukup lama untuk sekarang, rasio waktu dan pemercepat relatif masih mewakili.
8. RAY TRACING FOR ‘CARS’
Figure 8 memperlihatkan “gambar indah” dari dua karakter ‘Cars’. Gambar tersebut menunjukkan refleksi dari ray traced, bayangan dan ambient occlusion.
Untuk permukaan cembung seperti badan Mobil, refleksi jauh tidak perlu sangat akurat. Jarak maksimum sinar dapat mencapai 12 meter. Jika sinar tidak mengenai sesuatu dalam jarak tersebut, maka akan menggunakan peta tunggal yang diadakan lingkungan.
Refleksi dalam film yang biasanya terbatas untuk tingkat satu refleksi. Hanya beberapa gambar dengan dua tingkat refleksi, close-up chrome di bagian-bagian yang diperlukan untuk mencerminkan diri sendiri beberapa kali. Lihat figure 9 sebagai contoh.
Figure 10 menunjukkan semua karakter utama dalam film 'Cars'. Ini adalah contoh dari adegan yang sangat kompleks dengan banyak mobil mengkilap. Mobil mengkilap memantulkan bayangan mobil lain, seperti yang ditunjukkan dalam tiga gambar close-up. Gambar ini juga menunjukkan bayangan ray traced dan ambient occlusion.
9. CONCLUSION
Kita menggunakan algoritma REYES untuk merender objek yang terlihat, dan menawarkan
permintaan ray tracing untuk refleksi, bayangan, ambient occlusion, dll. Menggunakan cache multiresolusi geometri, cache multiresolusi tekstur, dan menggunakan perbedaan ray untuk memilih resolusi yang sesuai. Berdasarkan pengamatan, sinar koheren memiliki balok yang sempit sementara yang tidak koheren memiliki berbagai balok yang luas. Metode ini efisien untuk ray tracing adegan-adegan yang kompleks. Fungsi Ray tracing telah digunakan untuk beberapa film, termasuk film Pixar 'Cars'.
Refrensi
[1] Anthony A. Apodaca and Larry Gritz. Advanced RenderMan — Creating
CGI for Motion Pictures. Morgan Kaufmann, 2000.
[2] Per H. Christensen. Point clouds and brick maps for movie production.
InMarkus Gross and Hanspeter Pfister, editors, Point-Based Graphics,
chapter 8.4. Morgan Kaufmann, 2006. (In press).
[3] Per H. Christensen, David M. Laur, Julian Fong, Wayne L. Wooten,
and Dana Batali. Ray differentials and multiresolution geometry
caching for distribution ray tracing in complex scenes. Computer
Graphics Forum (Proceedings of Eurographics 2003), 22(3):543–552,
2003.
[4] Robert L. Cook, Loren Carpenter, and Edwin Catmull. The Reyes
image rendering architecture. Computer Graphics (Proceedings of
SIGGRAPH ’87), 21(4):95–102, 1987.
[5] Larry Gritz and James K. Hahn. BMRT: A global illumination implementation
of the RenderMan standard. Journal of Graphics Tools,
1(3):29–47, 1996.
[6] Homan Igehy. Tracing ray differentials. Computer Graphics (Proceedings
of SIGGRAPH ’99), pages 179–186, 1999.
[7] Toshiaki Kato. The Kilauea massively parallel ray tracer. In Alan
Chalmers, Timothy Davis, and Erik Reinhard, editors, Practical Parallel
Rendering, chapter 8. A K Peters, 2002.
[8] Timothy L. Kay and James Kajiya. Ray tracing complex scenes.
Computer Graphics (Proceedings of SIGGRAPH ’86), 20(4):269–
278, 1986.
[9] Hayden Landis. Production-ready global illumination. In SIGGRAPH
2002 course note #16, pages 87–102, 2002.
[10] Matt Pharr, Craig Kolb, Reid Gershbein, and Pat Hanrahan. Rendering
complex scenes with memory-coherent ray tracing. Computer
Graphics (Proceedings of SIGGRAPH ’97), pages 101–108, 1997.
[11] William T. Reeves, David H. Salesin, and Robert L. Cook. Rendering
antialiased shadows with depth maps. Computer Graphics (Proceedings
of SIGGRAPH ’87), 21(4):283–291, 1987.
[12] Brian Smits, Peter Shirley, andMichaelM. Stark. Direct ray tracing of
displacement mapped triangles. In Rendering Techniques 2000 (Proceedings
of the 11th Eurographics Workshop on Rendering), pages
307–318, 2000.
[13] Gordon Stoll,William R. Mark, Peter Djeu, RuiWang, and Ikrima Elhassan.
Razor: an architecture for dynamic multiresolution ray tracing.
Technical Report TR-06-21, University of Texas at Austin, 2006.
[14] Frank Suykens and Yves D. Willems. Path differentials and applications.
In Rendering Techniques 2001 (Proceedings of the 12th Eurographics
Workshop on Rendering), pages 257–268, 2001.
[15] Ingo Wald, Andreas Dietrich, and Philipp Slusallek. An interactive
out-of-core rendering framework for visualizing massively complex
models. In Rendering Techniques 2004 (Proceedings of the Eurographics
Symposium on Rendering 2004), pages 81–92, 2004.
[16] Ingo Wald, Philipp Slusallek, Carsten Benthin, and Michael Wagner.
Interactive rendering with coherent raytracing. Computer Graphics
Forum (Proceedings of Eurographics 2001), 20(3):153–164, 2001.
[17] Lance Williams. Pyramidal parametrics. Computer Graphics (Proceedings
of SIGGRAPH ’83), 17(3):1–11, 1983.
[18] Sung-Eui Yoon, Christian Lauterbach, and Dinesh Manocha. RLODs:
Fast LOD-based ray tracing of massive models. In Proceedings
of Pacific Graphics ’06, 2006.
[19] Sergei Zhukov, Andrei Iones, and Gregorij Kronin. An ambient light
illumination model. In Rendering Techniques ’98 (Proceedings of the
9th Eurographics Workshop on Rendering), pages 45–55, 1998.
Sumber Artikel : https://graphics.pixar.com/library/RayTracingCars/paper.pdf
Post a Comment