Step 1 - Option 2: It’s also possible to copy the files into your HtoA install. Step 1 - Option 1: Set the following environment variables, replacing $PATH_TO_FOLDER with the actual path on your machine and $OS with your operating system (windows/linux/osx). Copy the files like this:įiles in /bin/7.1.1.0 go to $MTOA_LOCATION/shaders Option 2: It’s also possible to copy the files into your MtoA install. Option 1: Set the following environment variables, replacing $PATH_TO_FOLDER with the actual path on your machineĪRNOLD_PLUGIN_PATH = $PATH_TO_FOLDER/bin/$OS/7.1.1.0 The minimum Arnold core version is 7.1.1.0. It's temporally stable because we're working with 3D data. I think the most exciting prospect of this journey is that it actually fits into current animation pipelines. The beauty of this technique is that you can start with extremely simple geometry and extremely simple shaders. This makes it very fast to fine-tune the look of the brushstrokes. This replaces the monte carlo simulation with a simple texture lookup, speeding up the rendering significantly. Then you can render out a low-res render, and project that on *all* the objects in the scene as emissive shader. Note: I've found that the fastest way to work is to light your scene with the brushstrokes disabled. The snout needed custom oriented vectors that followed the texture. E.g in Houdini, it's very easy to paint these vectors. That edge needs to be sharp! The same shader is used, only with a different input vector. For example, around the snout of the fox it was key I aligned the brushstrokes so that they follow the colour boundary. If you want to paint a custom direction for the strokes, that's possible too. I supplied another bit of osl for that (facingratio_cam.osl). It turns out we can safely do this without much visual impact at all. See how in the above example I faded out the cards whose supplied vector is perpendicular to the viewing vector? The rotation there is a little bit too fast, so we mask it out. To show the automatic surface alignment, I replaced the brushstrokes with some arrows. You input the position/direction userdata of the points, it outputs rotated UV coordinates that you can feed into an image. To handle this I wrote some OSL (align_uvcoords_to_vec.osl) that takes care of everything. The cards need to aligned to the surface, or a custom direction, in screenspace. Work from large to small strokes Correct orientation of brushstrokes Start with a sparse pointcloud with large cards, and layer smaller sets on top to selectively add detail into places where your eye should focus. It's important to layer multiple sizes of brushstrokes. For the big brush stroke layer (base coat), we don't want this to happen since it'd screw up the silhouette! I wrote another c++ shader to handle this (quantize_cut_edge). The problem actually becomes the inverse. You can really make the object edges look like brushstrokes. This is a significant reason why cards are the right approach. Since all of the shadingpoints per card do this same lookup, we get the same colour for each shadingpoint on the card. Then it will return the radiance at the first hit point, which happens to be the point it was spawned at. The reality is slightly more complex, but you can imagine the shader shooting a ray from the userdata::worldpos point, in the direction of the userdata::worldvel vector. This allows us to take the pathtraced final colour of an underlying object, and transform it to the brushstroke that is on top of it. This is possible because we feed the shader userdata per-point. I developed a custom c++ shader (quantize) to sample a singular shading point on the underlying surface, for every shading point per card. The shader setup for Houdini is also included. The shader setup, open the node editor in the maya scene to bring this up. Ofcourse not straight out of the box, so let's dive into the details: The answer to this ended up being a rendered point cloud as camera-facing cards. Painters often start with big brushstrokes and detail selectively with small brushstrokes. Nothing shouts "hey i'm 3d" as much as a perfect object edge. Disregarding the mixing of colours, the basic principle of painting is to put some colour on your brush and put it on the canvas. Quantized patches of color, aka brushstrokes.
0 Comments
Leave a Reply. |