Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Ray casting
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|Methodological basis for 3D CAD/CAM solid modeling and image rendering}} [[File:Idealized universal joint generated by ray tracing.jpg|thumb|Ray-cast image of idealized [[universal joint]] with shadow]]'''Ray casting''' is the methodological basis for 3D CAD/CAM solid modeling and image rendering. It is essentially the same as [[ray tracing (graphics)|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",<ref>{{Citation | last1 = Roth | first1 = Scott D. | title = Ray Casting for Modeling Solids | journal = Computer Graphics and Image Processing | volume = 18 | date = February 1982 | pages = 109β144 | doi = 10.1016/0146-664X(82)90169-1 | issue = 2}}</ref> 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.<ref>{{cite journal | last1 = Voelker | first1 = H. B. | last2 = Requicha | first2 = A. A. G. | title = Geometric modeling of mechanical parts and processes | journal = Computer | volume = 10 | date = December 1977}} </ref><ref>{{cite journal | last1 = Requicha | first1 = A. A. G. | title = Representation for rigid solids: Theory, methods, and systems | journal = ACM Computing Surveys | volume = 12 | date = December 1980| issue = 4 | pages = 437β464 | doi = 10.1145/356827.356833 | s2cid = 207568300 }} </ref> See ''[[solid modeling]]'' for a broad overview of solid modeling methods. 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, also known as [[3D projection]], [[affine transformation]], or projective transform ([[homography]]). Rendering an image this 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 [[intersection (Euclidean geometry)|intersected]] with the objects in the scene. A homogeneous coordinate transformation is represented by a 4Γ4 matrix. The mathematical technique is common to computer graphics and geometric modeling.<ref> .{{cite book | last1 = Newman| first1 = W. | last2 = Sproull| first2 = R. | title = Principles of Interactive Computer Graphics | publisher = Mcgraw-Hill | date = December 1973}}</ref> 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 4Γ4 matrix, a point is represented by [X, Y, Z, 1], and a direction vector is represented by [D<sub>x</sub>, D<sub>y</sub>, D<sub>z</sub>, 0]. (The fourth term is for translation, which does not apply to direction vectors.)
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)