animatedfox

Yes, the name of this post has some of the hottest topics in CG. 
I am getting sooo close to cracking this wide open. I know there is someone out there that can figure out this final step. The general situation is that I have a great mesh with changing point counts in Houdini and I need to render it in Maya. Currently we render out an ArnoldSS sequence which includes all the stuff we might need, but it is sort of fussy and any changes to amount of motion blur and stuff require re-exporting from Houdini. 

Here is what I know at this point:
*Alembic supports meshes with changing point counts.

*Alembic can bring in and connect any vertex attribute that was a color at some point in Houdini by adding the '-rcs' flag to your AbcImport command in Maya. This creates RGBA colorsets for each vertex attribute that was designated as color in Houdini

*Arnold in Maya will use an RGB attribute called velocityPV to calculate motion blur if this RGB attribute exists.
This attribute, if it exists, will override any calculated motion blur based on point number. 

The issue is simply the difference between an RGB attribute and an RGBA attribute. One works and one doesn't and I can figure out a way to change the type of the color set from RGB to RGBA
I have attached an alembic file with the velocityPV color attribute that was written out of Houdini.
Import with this command and you will have everything you need:
AbcImport -rcs -mode import -fitTimeRange -setToStartFrame "/***add path***/alembicChptMesh_10.abc";

If you render with motion blur enabled you will have some crazy blur due to the calculation based on point number. When working properly it will be much less blur.
If anyone has the time to look into this it would save the world of 3D as we know it!
Thanks everyone for your time.

~Ben

Quote 0 0
pshipkov
I have been using this feature with MentalRay and if memory serves well with vray too.
In order to change the color set from rgb ro rgba just pipe it through the arrayToPointColor node.
There are many other ways in SOuP to do that, just thought about this one first.
Quote 0 0
animatedfox

Peter,
Thanks so much for responding.
Do you have a second to talk through the setup a little more.
I have looked into using arrayToPointColor, but couldn't figure out how to get it working.
I assume the approach is to not create the color sets on import and use the array attributes instead.
Unfortunately, any time I used that node I was getting the error:  'inRgbaPP array length does not match the point count.'

Obviously I am missing something basic...any help would be greatly appreciated.

Thanks again.

~Ben

Quote 0 0
pshipkov
I looked that the abc cache you got but it does not contain any additional data other than the base mesh.
Once you have that embedded in the abc cache it will appear as new attribute under the "prop" compound one. Then:
abcReader.outPolyMesh -> arrayToPointColor.inGeometry
abcReader.prop[0] -> arrayToPointColor.inRgbaPP
arrayToPointColor.outGeometry -> meshShape.inMesh

You may need to insert colorSet before the arrayToPointColor and then inside that node specify that set name so the node will write the data "under" it. Then specify the color set name inside the meshShape.motionVectorColorSet
Quote 0 0
animatedfox

Amazing Peter!

That worked like a charm.
Very excited about this!
Thanks soooo much for you time

~Ben

Quote 0 0
floW
Hi Ben,

i am having the same problem here and am not able to get motion blur with MtoA.
I also have the velocity information on the mesh as vertex colors. Where do I need the velocityPV attribute? 
Can you give me a workflow on how to get this work? That would be super awesome!


Flo

Quote 0 0
jwilcott
Hi Flo,

I think I was able to solve this problem simply with Maya's Color Set Editor. 

I'm trying to render a Bifrost mesh with Arnold and motion blur. The mesh is imported with Alembic and it contains a velocity color set called "Bifrost Velocity." I opened the Color Set Editor, duplicated "Bifrost Velocity" and renamed it to velocityPV. Then in the render settings I had to lower the motion blur length quite a bit, down to about .01. Seems to be working on a single frame, I'll do a test render shortly. Hope that helps. 

Justin
Quote 0 0
floW
Thanks, 
that actually worked. I also wanted to render a Bifröst mesh with MtoA :)

Cheers
Flo

Quote 0 0
animatedfox

Alright well I have totally neglected this thread due to craziness, but I am back to report that I was wrong...totally wrong. I really can't get this to work for the life of me.  The result that I was seeing was basically a sort of wrong kinda motion blur thing that was not as broken as the typical 'motion-blur-on-changing-point-count-mesh'  We all know what this looks like.
brokenMB.jpg 

When I saw this I was thrilled and said "Yay it works!" there is something that looks like blur!:
pointMB.jpg 
I thought this was the result of Peter's original suggestion to create a RGB color set on my final out mesh and rename it to velocityPV and then connect my the arrayToPointColor node to the createColorSet node that Maya makes. network.jpg 

But just to confirm, I output an Arnold Scene Source sequence from Houdini and saw what my motion blur should actually be:
arnoldMB.jpg 

After a bit more troubleshooting it seems that things are not going through the chain correctly.
First thought is that the arrayToPointColor doesn't seem to be working correctly on changing point count meshes:
On the left is the cache imported with the -recreateColorSets flag enabled. The other is essentially using the network above without creating a color set before in Maya. So technically a straight pointAttributeToColor connection.
pointColor.jpg 

I have also had issues that the arrayToPointColor node creates its own RGBA color set even if I plug it into the createColorSet node. What is going on here? Anyone have any thoughts on this topic? Would it be at all possible to add some more options to the  arrayToPointColor node to specify a color set type (RGBA or RGB) and specify the name of the color set? The issue really is just an Arnold question at this point, as it seems the other options/color sets work with other renderers. If anyone has MtoA and they want to look into this, I would really appreciate any thoughts. The Alembic cache that I attached in the original post does have a color attribute which you will see if your import it with the -rcs flag.
Thanks all!
~Ben

Quote 0 0
pshipkov
I that your node chain is wrong. Try this:
- import houdini alembic cache in maya (changing point count, etc)
- select the mesh and slap on it color set
- use the color-> apply vertex color menu to fill the vertex colors. the whole point here is to create the polyColorPerVertex node that will inherit the color set from the createColorSet node created from the previous step. You can do all this manually, but with the UI is simpler, even it requires extra steps.
- delete the createColorSet node, so you are left only with the polyColorPerVertex one. At this point you should have - abcReader -> polyColorPerVertex -> mesh.
- create arrayToPointColor node and insert it between the polyColorPerVertex and mesh ones. Connect the prop on the abcReader node that holds the point velocities to arrayToPointColor.inRgbaPP.

That should do it. We use this setup here all the time to work around similar issues.
Quote 0 0
animatedfox

Oh man, that sounded soo promising.
But something is not working on my end.

Even with the polyColorPerVertex node things the point colors still look broken up like the image I posted. I have tried different attributes with different caches and my results are the same. I am also not getting the velocityPV (RGB) color set updated. the arrayToPointColor node is still creating the colorSet1 RGBA color set.

Are you using the default Maya 2014 version of Alembic?
Is this maybe a version issue on my end?
So thankful for your time and patience.

Quote 0 0
pshipkov
If you see point colors still not looking right then the problem is on the houdini export side.
Make sure you exported things properly. The easiest check is to bring the abc cache back in houdini and visualize the point velocity data. Make sure you promote it to the right attribute, remember in houdini vertex is different than point.
Quote 0 0
animatedfox

Yeah, I have checked the caches on both sides. 

All of the vertex attributes show up correctly in Houdini.
On the Maya side, if I have cached the changing point count meshes out of Houdini after promoting the desired attributes to vertex attributes, I can connect the prop arrays but get the display error illustated in my earlier post. I also get a warning:arrayToPointColor1: inRgbaPP array length does not match the point count.
If I make the points unique in Houdin (1pt per vert instead of 1pt for 4 vert) then my SOUP connections connect without the warning, but with the same display error. Any tips on Houdini exporting?

As I mentioned before, the desired attributes are converted to color sets without error when imported with the -rcs flag...so I know they are there and intact as AbcImport is very finicky about those vert attributes. They are just the wrong kind of color set.
The cache I posted imports into Houdini with color data and into Maya as well. It just isn't playing nicely with SOUP.
Oh I am soo close. Really sorry to keep banging on about this. There is something simple that I am missing here.


Quote 0 0
pshipkov
Can you provide one abc cached frame of the sim ?
Quote 0 0
animatedfox

zip alembicChptMesh_14.abc.zip     

Here is a cache file that is sooo close to working.
I went back to the drawing board and made a good bit of progress. The only issue at this point is getting that final color set to be RGB and not RGBA.

The cache runs from frame 10-15 and there is one point attribute on prop[0].
This connects exactly as you laid out in your previous posts.  I am creating an RGB color set and naming it "velocityPV" then I apply color to that color set giving me the polyColorPerVertex node...which I assume is connected to the name and type of the color set.
The issue now is that when I connect the SOUP ArrayToPointColor node to the polyColorPerVertex it creates a new RGBA color set, with the correct values...but I lose the needed RGB type and name. The color set I created remains un-affected. 

Would it be crazy to add some more options to the arrayToPointColor node?
Color set name and type perhaps? I ask this having no idea of the work implications.
I just can't figure out a way to rename and convert a live color set from RGBA to RGB with minimal overhead.

You are a gentleman and a scholar Peter...thank you so much for your time!
~Ben

Quote 0 0

Add a Website Forum to your website.