Community
Arnold for 3ds Max
Rendering with Arnold in 3ds Max using the MaxtoA plug-in.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Curve width issue with catmull-rom - Houdini curve to Maya

14 REPLIES 14
Reply
Message 1 of 15
Anonymous
1255 Views, 14 Replies

Curve width issue with catmull-rom - Houdini curve to Maya

Hi,


How can I get Arnold to read the curve width attribute from Houdini and using catmull-rom curve basis at the same time?


Workflow:
I am creating my curves in Houdini and exporting them as alembic. In Maya I am importing the .abc file through a "standin" node. I am then applying the following two operators:

7724-1595163253864.png


This is the result. The radius of the curve is constant.

7725-1595163301506.png


If I change the 'basis' to "Linear", I get the correct width, but obviously no longer the subD curves.

7726-1595163465536.png


I tried putting a setParameter 'radius' = 'width', but that didn't work. What do I need to do to get arnold to read the below width attribute from Houdini?


Exported houdini curves attributes

7723-houdinisettings.jpg



Thank you!

Klaus


Labels (5)
14 REPLIES 14
Message 2 of 15
Stephen.Blair
in reply to: Anonymous

If you're changing the basis, the number of knots may not match up with the new basis.

And the Arnold alembic procedural expects the curve widths to be in a widths attribute. Use the Radius Attribute Name box (aiStandin attribute editor) to make it use width instead.



// Stephen Blair
// Arnold Renderer Support
Message 3 of 15
Anonymous
in reply to: Anonymous

Hey,


Thanks for the reply. I am trying out what you mentioned just now, still does not render correctly. Am I doing something fundamentally wrong here?


Current settings on the standin node.

7727-1595268488179.png



catmull-rom with 'width'

7728-1595268578353.png

catmull-rom without 'width'7729-1595268589734.png

When using the width attribute in the "Radius Attribute Name" slot, the above happens where the curve is now linear and still does not have the correct radius. Why is this?


As seen in the image my previous post, Houdini shows the .abc with the correct 'width' attribute on the points.



- What do you mean by knots? The points on the curve?

- What is the correct workflow for getting subD curves from an alembic file, e.g smooth curves?


Thanks again and any help would be appreciated please,


cheers,

Klaus

Message 4 of 15
Stephen.Blair
in reply to: Anonymous

Different basis have different number of points and so different number of width values.

By default, Alembic curves are bezier

If possible go for b-spline. Only Bezier expects to have the widths to equal number of vertices-2.




// Stephen Blair
// Arnold Renderer Support
Message 5 of 15
Anonymous
in reply to: Anonymous

Hi,


This is the result with basis = bezier. I get all these random areas of the curves not rendering visible.

7762-1595354581131.png

close up - Can see the point width is all inconsistent.

7763-1595354820855.png

Bezier settings:

7764-1595354914001.png


-


Here is B-spline. Still don't get the width attribute come through.

7765-1595354987450.png

B-spline settings.

7766-1595355003324.png




What am I doing wrong? Any pointers would be appreciated 🙂

Do you guys have a sample scene that works using alembic curves?


thanks,

Klaus

Message 6 of 15
Stephen.Blair
in reply to: Anonymous

Please post a scene or abc file, it's too hard to figure out from screenshots.



// Stephen Blair
// Arnold Renderer Support
Message 7 of 15
Anonymous
in reply to: Anonymous

testScene.zip (Maya scene)

test23.zip (curves)


Hey,


Thanks for taking the time to look at this. I have uploaded a less dense version of the groom I am testing this out on. Also I have uploaded the Maya scene file with the operators on the Standin.


Again any helpers would be much appreciated, as I am still unable to get the width to work.


cheers!

Message 8 of 15
Stephen.Blair
in reply to: Anonymous

The width (radius) is found, but there's a mismatch:


For the catmull-rom and bspline basis, I get

WARNING |  [curves] /body_body/HAIRS: invalid radius specification: found 62704, expected 1, 5334 or 52036 (constant, uniform or varying); just using the first





// Stephen Blair
// Arnold Renderer Support
Message 9 of 15
Anonymous
in reply to: Anonymous

Hey,


Here are the details of the curves I sent you, straight from Houdini. There are 62,704 points.. is that not what Arnold is expecting to use for the width attributes?

7771-1595444745636.png


I read the documentation of the "basis" here, https://docs.arnoldrenderer.com/display/A5NodeRef/curves

So if I change the basis to be Bezier or Catmul-rom it will change the actual number of points and therefore render the 'width' attribute useless?


Basically how can I have smooth curves and use the width attribute at the same time?


cheers,

Klaus

Message 10 of 15
Stephen.Blair
in reply to: Anonymous

There are 5334 points in the Arnold curves node (I exported to ASS and expanded the Alembic procedural to check).

So there is a mismatch between the number of points and the radius. I don't get that in my own tests. How are you exporting to abc?

Different basis expect different number of points. All that is determined at translation time (when the scene is exported to Arnold), not at render time.

At this point, I can't say whether it's a bug in translation, a problem in the scene setup, or a render time problem. Need to do more testing.



// Stephen Blair
// Arnold Renderer Support
Message 11 of 15

I think it's a bug in the Arnold alembic procedural.

Can you use ass files instead, for now?



// Stephen Blair
// Arnold Renderer Support
Message 12 of 15

Or load the abc file directly into the application?



// Stephen Blair
// Arnold Renderer Support
Message 13 of 15
Anonymous
in reply to: Stephen.Blair

Hi,


Ok that is good to know. I was going crazy trying to get this to work! Can I follow this bug somewhere on a release schedule or will this fix roll into the next release automatically.


I am not able to export .ass files as I am using Houdini indie, this is correct right? Even though I own a full license of Arnold?


Message 14 of 15
Anonymous
in reply to: Stephen.Blair

It is not possible to load in heavy alembic files into Maya (final groom is millions of hairs), except for via the GPU cache but that is not a solution for our current pipeline.

The Arnold Procedural node with reading an Alembic file would have been perfect.

Message 15 of 15
ashley.handscomb.retallack
in reply to: Anonymous

You can't use the overrides panel/set_parameter node to set the basis of the curve and keep the radius data. You need to add the user data curves:basis to tell the procedural to convert radius data attribute to match the knots on the curve.

 declare curves:basis constant STRING
 curves:basis "bezier"

7756-1595841744840.png


I've added an edited version of your scene, and will had a feature request to add this easily via the maya UI



Ashley Handscomb Retallack
Arnold Support Specialist
Arnold Documentation | Arnold Downloads

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report