How do you render curves?

Discussions about SOFTIMAGEs© Interactive Creative Environment©
User avatar
Daniel Brassard
Posts: 878
Joined: 18 Mar 2010, 22:38
Location: St. Thomas, Ontario

How do you render curves?

Post by Daniel Brassard » 22 Aug 2011, 02:59

Hi,

I have these curves I create in ICE and I would like to render them as strands, but they are not "curves" in the pure sense of the word, how would you suggest I render them?

Thanks for the help!
You do not have the required permissions to view the files attached to this post.
Last edited by Daniel Brassard on 22 Aug 2011, 21:22, edited 2 times in total.
$ifndef "Softimage"
set "Softimage" "true"
$endif

Chris_TC
Posts: 411
Joined: 22 Mar 2010, 16:43

Re: How to render curves

Post by Chris_TC » 22 Aug 2011, 10:39

Hi Daniel,

How are you displaying these in the viewport?

For rendering you could make strands. You'd feed the curve point positions to the strand.

User avatar
Daniel Brassard
Posts: 878
Joined: 18 Mar 2010, 22:38
Location: St. Thomas, Ontario

Re: How to render curves

Post by Daniel Brassard » 22 Aug 2011, 13:14

Hi Chris,

To display the lines, I use the display line factory node. You can find a bunch of them in the debug section (Display point, line, etc). Useful for visualization.

I have tried to feed the strand position to see the curve but my attempt was lame. I need to investigate further Stephen Blair method (strand without emit) on XSI Support, I think the solution is in there but I have not figure it out yet.

The control points are fed direct right now but idealy, I would like to feed three nulls for each control point, one that display the point location (P0, P1, P2, P3, etc) and two that define the tangency (added automatically for each control point), so that I can adjust the curve sharpness/weight at a point. Then I would like it to be traced with more than the points needed to create a segment of the curve (multiple segments), and expand from there. Too bad we don't have the "empty surface mesh" similar to the empty polygon mesh to create a surface (I am patient, I know it will come eventually). I can do mesh surface in JScript (parametric formula plugin), I would like to do the same in ICE.

This is for experimentation and learning. There is the curve tool from Eugen Sares (Keyvis curve tool) and Fabricio PowerExtrude tool available so no point to re-invent the wheel. Maybe I will look at their methods as well to learn from.
$ifndef "Softimage"
set "Softimage" "true"
$endif

User avatar
Daniel Brassard
Posts: 878
Joined: 18 Mar 2010, 22:38
Location: St. Thomas, Ontario

Re: How do you render curves?

Post by Daniel Brassard » 24 Aug 2011, 04:10

Made some progress on the curve and strand, I can now drive a bezier4 with four nulls, feed their point positions to a strand and display the result on screen. That was simpier than I thought. Here were I am so far.
You do not have the required permissions to view the files attached to this post.
$ifndef "Softimage"
set "Softimage" "true"
$endif

User avatar
Memag
Posts: 339
Joined: 08 Aug 2010, 23:37
Location: Tits

Re: How do you render curves?

Post by Memag » 24 Aug 2011, 12:56

3delight can render SI curves, as far as I remember.
There is a free, 2core version, you can download.

User avatar
ActionArt
Posts: 853
Joined: 25 Nov 2010, 17:23
Location: Canada

Re: How do you render curves?

Post by ActionArt » 24 Aug 2011, 15:24

I don't know if this helps at all but there is a render curves compound here:

http://frenchdog.wordpress.com/2009/02/ ... nd-update/

User avatar
Daniel Brassard
Posts: 878
Joined: 18 Mar 2010, 22:38
Location: St. Thomas, Ontario

Re: How do you render curves?

Post by Daniel Brassard » 24 Aug 2011, 16:19

Thanks Memag and ActionArt for your replies. I will investigate Guillaume RenderCurve compound, that look like what I am looking for (hoping it works on 2012 Sp1).

I was thinking of a MR contour shader (I may still do it for fun).

I want to experiment with a control cage next, starting with a simple implicit plane and draging the points around to see what happen to the underlying "surface". I'll probably start with the bezier4.

I already figured out the algorithm for a multi segment bezier4 curve (3n, 3n+1, 3n+2, 3n+3 .... where n is the segment index starting with segment0 ... so simple)
$ifndef "Softimage"
set "Softimage" "true"
$endif

User avatar
ActionArt
Posts: 853
Joined: 25 Nov 2010, 17:23
Location: Canada

Re: How do you render curves?

Post by ActionArt » 24 Aug 2011, 19:02

Very interesting! Keep us posted on how it goes :)

User avatar
Mathaeus
Posts: 1778
Joined: 08 Jun 2009, 19:11
Location: Zagreb, Croatia

Re: How do you render curves?

Post by Mathaeus » 24 Aug 2011, 21:48

Daniel Brassard wrote:
I was thinking of a MR contour shader (I may still do it for fun).

I want to experiment with a control cage next, starting with a simple implicit plane and draging the points around to see what happen to the underlying "surface". I'll probably start with the bezier4.

I already figured out the algorithm for a multi segment bezier4 curve (3n, 3n+1, 3n+2, 3n+3 .... where n is the segment index starting with segment0 ... so simple)
well if you mean the same MR contour shader as in Max or Maya, this option doesn't exist in SI. SI toon ink lens shader is another story.
I think the best idea is to go with ICE strands, segment type, usually used for hair.
Btw, if you're using 3delight for ICE strands of this type, curves are created automatically in render time. Some kind of Catmull-Rom, I think. So you can go with linear curve, just by supplying the control points as a strand array. No need for these Bezier compounds. Quality of interpolation is controlled by 3dl shading rate.

User avatar
Daniel Brassard
Posts: 878
Joined: 18 Mar 2010, 22:38
Location: St. Thomas, Ontario

Re: How do you render curves?

Post by Daniel Brassard » 25 Aug 2011, 13:06

Hi Mathaeus,
well if you mean the same MR contour shader as in Max or Maya, this option doesn't exist in SI.
That is exactly what I was thinking. I am well aware of the issue and how many have tried before to code the shader. I have MR programming books and have coded several shaders in the past. But this is future work unfortunately. I have to remain focus on the task at hand.
I think the best idea is to go with ICE strands, segment type, usually used for hair.
Agreed. For this project I am only interested with strands and how far I can push it to influence and create topology.
Btw, if you're using 3delight for ICE strands of this type, curves are created automatically in render time. Some kind of Catmull-Rom, I think. So you can go with linear curve, just by supplying the control points as a strand array. No need for these Bezier compounds. Quality of interpolation is controlled by 3dl shading rate.
Thank you for the information, this is good to know. I have not used 3DL so this would be new territory for me. I'll give it a try for sure. I read good things about the renderer.

BTW, I want to take this opportunity to congratulate you for a job well done on Kristinka Hair v3. It's quality piece of software like yours that keep Softimage going and getting stronger.
$ifndef "Softimage"
set "Softimage" "true"
$endif

User avatar
Daniel Brassard
Posts: 878
Joined: 18 Mar 2010, 22:38
Location: St. Thomas, Ontario

Re: How do you render curves?

Post by Daniel Brassard » 26 Aug 2011, 16:12

I did a little bit more investigation (into the MR books) and to render curves in MR, the recommended method is not the contour shader (which require a material and you cannot assign material to a curve within SI) but to use the hair shader.

Duh! Why did it not occur to me before.

To recap so far:
  • Use the render curve addon and compound from Guillaume
    Distribute a large amount of tiny particles along the curve
    Extrude a small shape along the curve
    use a hair to display the curve at render time
    instanciate and offset the curve and loft between the two curves, attach a material
So many ways to render a curve....
$ifndef "Softimage"
set "Softimage" "true"
$endif

User avatar
Daniel Brassard
Posts: 878
Joined: 18 Mar 2010, 22:38
Location: St. Thomas, Ontario

Re: How do you render curves?

Post by Daniel Brassard » 31 Aug 2011, 02:49

Below is how I render the curve using an extrusion along the strand. The principle is the same as what Stephen Blair explained at XSI Support. A couple of gotcha to whatch, start the bezier iteration very small, not at zero (mine is 0.0001). I also adjusted the strand size to zero to start so that the point is sharp (and not a cone at the first extrusion).

Here is the result and the ICE tree!
You do not have the required permissions to view the files attached to this post.
Last edited by Daniel Brassard on 01 Sep 2011, 01:14, edited 1 time in total.
$ifndef "Softimage"
set "Softimage" "true"
$endif

User avatar
Daniel Brassard
Posts: 878
Joined: 18 Mar 2010, 22:38
Location: St. Thomas, Ontario

Re: How do you render curves?

Post by Daniel Brassard » 31 Aug 2011, 17:36

This setup give us a good test bed for curves in ICE. I will use this setup to experiment with subdivisions.

A quick render test with the curve and some basic shape

Cheers!
You do not have the required permissions to view the files attached to this post.
$ifndef "Softimage"
set "Softimage" "true"
$endif