This is the structure component from Siggraph 2008. This component has no practical goal except to illustrate a variety of capabilites and techniques. In the root of the component is a panel called rpanel. Its located at the top right side of the components root network. If you open the panel you will see a 3D scene. The mouse controls are as follows…
Left mouse - Pick a 3D rib geometry to inspect.
Middle mouse - Zoom with vertical mouse motion.
Right mouse - Rotate around the object.
The overall interactivity is a little awkward but its enough to illustrate how the renderpick CHOP works. The renderpick CHOP selects a subset of the geometry in the pickpass TOP to generate values for various states. These states drive display and animation for the rib objects, and also drive the panning and zooming in 3D.
I also wanted to illustrate the power of clones, in conjunction with receiving centralized geometry data, and processing the geometry, and an architecture for efficient display and rendering.
I will quickly explain the main parts of this file…
Component - backbone
The backbone component contains a simple network which shows how you can modify geometry attributes using a TOP image. In this case a TOP ramp is used to control the thickness of the ribs along its length. Where the image is black the ribs will be thin, and where the image is white the ribs will be thicker. The general message here is that a centralized backbone can underly the architecture of a system. Attributes applied to the backbone can be used by components that are distributed along that backbone.
Component - majorunit
The majorunit component is a master component that describes the structure of each rib. This component is then cloned to each arb object. Each arb object is an exact replica of the majorunit network, but internally they interpret their contents differently - thus each object returns a different result. To see the power of a master / clone architecture go into majorunit and modify the network or change a parameter. You will see that each arb object will automatically update with that change. There are loads of other interesting techniques. Explore the power of clones by modifying what this network does.
For example: The carve1 SOP in major unit has an expression in the firstV parameter. The expression is…
$OPD/npoints("../backbone/array")
This expression says return a fraction value between 0 and 1 depending on the current clones number. Each clone is called arbX - where X is clone’s number. This number tells the carve operation where to extract the curve from along V of the input geometry. In this case we see the index number of a clone can determine how it will modify an input. Each clone has a different index, and therefore each clone extracts a different curve from the input geometry. Luckily the number of points in the backbone array matches the number of clones - so the result is that the input geometry is sliced at parametrically equal intervals from 0 to 1.
The input into each arb clone is the SOP called modelinput. Notice there are no visible input lines going to each object. In cases like this where there are a ton of objects I generally stay away from using real component input operators and just pass data around using select operators. However the main point here is that if you change the data that is passed into the modelinput SOP, the clone geometry networks will reprocess the data automatically. Change the seed parameter of the noise1 SOP to see this happen. Notice as the topology of the input mesh changes the output of each clone does too. Alternatively, create a Torus SOP - and feed that into the model input.
This illustrates how a complex set of geoemtry is easily controled by a central backbone and single master processing network with distributed clones. Maybe on first glance this seems like a mouthful but its really a simple generalizable technique for building complex, variable, repetitive structures. Any architecture or biology students out there???
If you want to change the number of ribs, go into the backbone network and change the number of points in the line1 SOP. Then go back to the root of the component and run the populate script - find the text DAT called populate - right mouse down on it and select run from the popup menu. The script will remove clones or add clones to match the number of points in the backbone/array SOP.
Shadows and fog are also implemented in the scene for those interested.
For the sake of illustrating how Touch’s panel building system is superior for visualization, a panel is placed in the main rpanel network, and in the parameter page called “Panel”, the parameter Reposition: Local menu option is turned on. This activates automatic repositioning of panel over its parent. The floating panel is dragable over the main viewer. The screen space coordinates are converted into a 3D space object and so a 2D panel is tracked with a 3D object. This is done with the fetch1>math6>math7>null5 network that exports this position to the track2D object. A 3D line is constructed in the trackline geo component. Notice the expressions in the line SOP to see how this was done.
I understand this is a little dense - there really is a load of stuff in this file. Over time these techniques will be broken out into smaller more digestible bits. However, there were two core messages we want to relay to our users via this file. The first is that you can build cool interfaces around rich data sets. The second is that you can work with rich data sets by using centralized simpler backbones and inputs into distributed master / clone architectures. Its the future:)
I hope this file inspires some of you to explore this approach or something similar and atleast offer a new vantage point. Please ask questions and make comments.
Jarrett
structure_siggraph2008.tox (37.6 KB)