Hi all! I have been working on strand rendering in cycles. It’s still quite early and experimental. The initial patch I worked on has now been included in trunk. So, any recent builds should contain this feature (later than 53373). A recent build can be downloaded from the link below.
To use the hair rendering you must change the feature set' on the render tab toexperimental’ (from `supported’) and be using the cpu to render. With these settings once a particle system is added new panels will be displayed in the particle tab to control the strands.
There are a few known limitations and bugs currently. These include:
Only available for CPU rendering
Doesn’t support motion blur.
There are gaps and overlaps using line segments. This shouldn’t be visible for thin strands. You can use triangle primitive strands to fill these gaps but these don’t support the hair info node yet. Curve primitives also remove these gaps but artifacts can sometimes appear (particularly with an orthographic camera).
When an objects isn’t scaled equally along each axis the strand thickness isn’t changed in the same way for a dynamic and a static bvh. This can be fixed by applying any scaling to the object mesh.
@marcoG_ita: Great results! As for the child number I currently just export the data that’s stored by blender internal. This was added quite recently. I initially just exported the main strand hair keys and interpolated a new path between these (as happens when export cache is disabled). I will look into the possibility of extending this to the child render number.
Thanks! Nevermind render/view children if it does add complexity. It’s a smaller “issue”, viewport seems to handle well hairs, though, in the future would be cool to have view and render setting separately. Thanks again
The strand shape sets the tapering of the strands (~1 gives an extreme tapering, -1 gives a perfect cylinder and 0 gives a linear decrease in radius along the strand). Unfortunately, these settings are applied to every particle system. I actually initially made them individual to the system but that created errors and I decided as a temporary fix to make them global properties for now.
The main use of the strand info node is to allow variation along the strand by using the intersection value to mix shaders or adjust colour. For example, this allows you to make the strands transparent at tips. It also enables you to set specific hair systems to use the tangent normal and actual normal values for the others. You could also calculate the dot product between this and the actual normal to give a way of adjusting the shader along the strand’s width.
The resolution of the strands are adjusted by changing the `draw step’ value under draw properties tab (that is closed by default). The segments are actually created between these points and this smooths the result. The segments setting was mainly used when I only exported the hairkeys and had to interpolate the strands path from these.
It seems that there is an issue with rendering(not the viewport rendering,but the tile render)it appears a circle pattern(several circles nested on the screen from the center of the image) on top of the rendering,mainly when the strands are small and you are far away from them.
The viewport rendering seems not having this problem.
Anyway,great stuff!
@renderdemon - that’s very interesting. More details would be very useful. Have you got an example image or .blend file? It would also be interesting to know if this happens for the `accurate’ preset mode? and if it happens in the viewport when the bvh is changed to static? It could be related to an issue I fixed yesterday.
Hi BroadStu,it happens also with the accurate preset,and also with static bvh,from the center of the image they appear concentric circles,but if you go near the hair they render fine(I’m testing short hair to act like fur)
Anyway,I understand you need more information so I’ll try to do a simple scene to explain better.