![]() ![]() Also interesting is the relative lack of internet infrastructure in South America and Africa. The top image shows the western hemisphere, notice the volumes of connectivity from the US to Europe and on to Asia (off the map to the right). Once created the shader fades off the incandescence to give a subtle cooling effect (all this is viewed better in the original HD). To control the appearance and incandescence of the curves over time I wrote a custom surface shader that reads a “start time” primitive variable off each curve and ramps opacity along the length of the curve during creation. The final step is to take the resulting data and use it to generate RenderMan RiCurves. A second dataset maps these AS numbers to latitude and longitude coordinates. The “external program” in this case is a Python app that I wrote to parse a number of publicly available datasets to extract node-to-node connectivity of the internet backbone autonomous systems (AS). Technically the project demonstrates the use of procedural primitives in RenderMan, meaning geometry (in this case curves) that are generated dynamically at rendertime by an external program. ![]() RenderMan University includes a comprehensive “making of” tutorial walking through all the steps involved in creating and rendering this animation. It was were created using Python and Pixar’s RenderMan software. Here is a small project I created for Pixar’s RenderMan University that visualizes internet connectivity across the world. The Courseware goes into detail about this process showing how to do this by either writing an external Python script or using It and Iceman, RenderMan Studio’s internal compositor and scripting language. The effect of using a single depth map for displacement is show below:Īnd of course, to achieve persistence, you need to accumulate the depth maps per-frame and use the running total to displacement the current frame. Each point can then be transformed into world space and used as an exact displacement amount for an object pressing into a surface. Specifically, the technique uses a sequence of depth maps (shadow maps) rendered from beneath the surface capturing the distance from the shadow camera to each point on the displacement-mapped spheres. Here is another video I developed for Pixar’s RenderMan University, this one demonstrates an interesting techniques that can be achieved with a fairly simple custom displacement shader that relies mostly on an understanding of the fundamentals of computer graphics. Reflections off the floor and through the screen increase the depth a step further. As it falls behind the transparent screen the trace depth increases by one. ![]() The “camera” ray is always at trace depth 0, this is when the sphere is in plain view to the camera. ![]() Each ray is traced into the scene and is reflected/refracted a number of times before it terminates on the bouncing sphere. This example is a visualization of ray depth. From there it is a simple case of normalizing the average distance and mapping it into a colored ramp. the distance to) each hit object, in this case the spheres. The gather() call fires a hemisphere of rays above each shading point on the ground plane, and instead of tracing the usual diffuse or specular reflections (what raytracing is most often used for), the rays return their length (i.e. The is an example of using the gather() construct in an unusual fashion to create an interesting visual effect. Here are a couple experiments put together for Pixar’s RenderMan University which demonstrate programmable raytracing in RenderMan. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |