I've been playing with particles in C4D and Houdini and after doing a bit of Alembic interchange and lots of research here on the forums I think I've got at the crux of the problem. Using some Alembic utilities I've noted the C4D exports it's particle information directly on the shape node like so:
–.geom
:–.selfBnds
:–P
:–.pointIds
:–.velocities
:–.widths
:–c4dMass
:–c4dAge
:–c4dLife
:–c4dScale
:–c4dSpinAxis
:–c4dSpinSpeed
:–c4dAlignment
:–c4dColor
:–c4dRandomSeed
`–c4dDTFactor
Houdini upon export stores it's data sort of like this:
–.geom
: :–.selfBnds
: :–P
: :–.pointIds
: :–.userProperties
: :–.arbGeomParams
: : :–sourceptnum
: : :–uv
: : :–pprevious
: : :–has_pprevious
: : :–airresist
: : :–age
: : :–life
: : :–targetv
: : :–force
: : :–doppath
: : `–nextid
: `–.velocities
`–visible
The data from Houdini is getting stored in arbGeomParams. When read into a Particle Geometry in C4D this pops up as a Thinking Particle channel but I can't use stuff inside it (that I know of). I know I can change attribute names as needed before exporting from a Alembic ROP, but how can I make an attribute like Cd, life, etc. be directly below geom in Alembic instead of under arbGeomParams?
Houdini and Cinema 4D Particle Alembics
4309 3 1- eldiren
- Member
- 50 posts
- Joined: May 2015
- Offline
- ripclaw
- Member
- 96 posts
- Joined: May 2008
- Offline
As far as a quick read here http://docs.alembic.io/ [docs.alembic.io] suggests, arbGeomParams is the intended location for every property other than a few hand picked ones like Position, Point ID and Velocity. For the latter three, there exist specific functions to access them, everything else is accessed through getArbGeomParams(). This, I'd say, means that if you were somehow able to force those parameters outside arbGeomParams and into the upper hierarchy level, there probably would not be a way for Cinema to access them and also you'd probably end up with an invalid Alembic file.
- eldiren
- Member
- 50 posts
- Joined: May 2015
- Offline
Yeah, my research seems to have concluded that too. Based on Maxon's structure though this is exactly how they actually store their particles, with the properties outside arbGeomParams. In this case it would seem the Maxon guys got the spec wrong, but I was kinda hoping Houdini was versatile enough to allow me to write the Alembic in a slightly different way without resorting to heavy Python. Ultimately I just used a Houdini asset that read the alembic and/or bgeo and that worked. Through Houdini engine C4D does some translation that ultimately gets it right and gives me proper values. I still have yet to get other custom properties through though.
- ripclaw
- Member
- 96 posts
- Joined: May 2008
- Offline
-
- Quick Links