Project: Alembic Importer

EDIT: Our latest project to use this : Insurgent VR

The lab destruction sequence has ~10k rigid motion elements that were exported out of a dynamics sim from Maya into UE4 (minute 1:18):

&d=1427210033


Oops - posted in the wrong section. Please look at this thread: https://forums.unrealengine.com/showthread.php?50192-Project-Alembic-Importer-

Hey guys,
We’re working on a project that requires a lot of deforming/destruction geometry so instead of writing our own format or trying to animate everything with bones, we decided to build an Alembic Importer .

After a couple of weeks, I finally have (a very basic) version of the entire pipeline working: (export from Maya -> compiled abc format -> importer in UE4 -> UAbcComponent for rendering)

http://fat.gfycat.com/PeacefulFatherlyGerbil.gif


The cube is an UAbcActor

Here are the high-level things on the roadmap over the next couple of weeks.

  • Apply interpolation between frame samples. Right now it only animates the
  • Multithread decoding as well as use a ring buffer to draw into the alembic vertex/index buffer
  • Vertex compression. Right now each abc file stores 44 bytes per vertex.
  • Import more data properties that come from Maya and convert to UE4 formats (normals, uvs, orthonormal tangents, rhs to lhs coordinate transform). Right now, everything is off
  • Support rigid animation. Only deformable animation is supported at the moment.

Things that are not going to be added anytime in the foreseeable future:

  • Mac/Linux Support
  • Non-desktop targets
  • SM4 or lower

Thanks to the Epic guys (Daniel Wright, NickP, JamesG, & Lina Halper) for answering my deep dive questions about the engine animation/rendering RHI interfaces. Will compile all the insight into a longer blog post once I’m done.

And thanks to & for their samples - was helpful in figuring out how to register a and an importer.

Thats some nice work there. Im sure you will make a lot of people happy having alembic support.

Hey Ikrima,

Saw your talk at Oculus Connect, super awesome stuff.

So glad to see someone getting an Alembic pipeline up and running. Would give my arm and leg for it right now.

Looking forward to seeing how things progress

You’re welcome Ikrima!

Keep me posted on how this goes!

You are making amazing progress!

:heart:

Thats some nice work there. Im sure you will make a lot of people happy having alembic support.

Hi Ikrima,

I’ve merged the two threads here since you had comments on the one posted in the “Content Creation.”

You were at Oculus Connect? Bummer we didn’t talk in person! Thanks for attending the talk.

Out of curiosity, what would you use the Alembic importer for?

Added a new test Alembic file that was more complicated than a cube.

Had Cory shatter a generic human model in Maya 2015 and baked the physics sim through our workflow:

http://fat.gfycat.com/PeacefulFatherlyGerbil.gif

Great stuff. Have wanted to look into doing this myself but really haven’t had time.

We may have met, it was a super busy weekend. I’m attached to Marshmallow Laser Feast.

There’s a pretty wide range of stuff we’re looking to use it for. The most obvious being character performance captures (with dynamic muscle/fat simulations) baked down onto geo caches and then rendered in the engine in real-time, plus clothing and bigger more interesting physics simulations.

Yeah, we’re thinking the same thing down the road. Would you use it for a linear play through (e.g. in-game cinematics) or something that was more dynamically driven?

Well for work stuff, it’d be for linear stuff - but for my personal game project, I’d kill to have facial animation for characters in cutscenes and conversations etc.

Adding UE4 Support for Rigid Transform

Had a chance to jump back on the Alembic pipeline this week. Our current project doesn’t require deformable motion so I switched to adding rigid motion support.

http://giant.gfycat.com/SpectacularArtisticDikkops.gif

Details:

  • 10,2400 animated different meshes (even though they’re all cubes in the screenshot) rendered through 10 “draw calls”
  • All done through constant buffers + object indexing into VertexBuffer blobs.
  • 5.2ms / 9.2 ms in VR. [190 / 108 fps]

Right now, this is just UE4 infrastructure to support all of this. It took about a day to implement it in my DirectX harness but took the rest of the day to figure out the UE4 shader/custom rendering plumbing.

Also, limit of 1024 objects per group. This limit comes from constant buffer resource limits.

If I get a chance, I’ll try to glob multiple cbuffers per draw call or use tbuffers/generic buffers. From the looks of it, general buffers only incur a slight overhead over constant buffers on my 780ti but I think the variance could be high across different GPUs/drivers.

Next up, update my alembic parser code to extract rigid motion into a separate file

Wow great progress Ikrima!

Thanks for sharing!

I can’t wait to see your next updates!

:slight_smile:

this is awesome!
I just picked up houdini indie which can export alembic files, would this be able to read that or is it maya only?
I’d be happy to help test it out :wink:

Possibly but it’ll probably read the data wrong. Right now it assumes the abc file was exported by Maya so it uses Maya’s coordinate systems and default units for conversions to UE4.

What are you trying to export from Houdini into UE4?

Nothing in particular, maybe eventually lots a simple geometry procedurally animated similar to last gif you posted.

Interesting project. What is the latest?

Woah- this is THE missing tool to keep me from switching entirely over to UE4!
I work in Max and can easily export using the Maya coordinate system!

Really amazing stuff.
I use UE4 exclusively for linear content, so this would be such a big asset to my workflow.

… any chance you need a tester or can share the ?

We finally wrapped up the project this was developed for: A VR experience for the Insurgent movie (http://blog.kiteandlightning.la/)

The lab destruction sequence has ~10k rigid motion elements that were exported out of a dynamics sim from Maya into UE4 (minute 1:18):

Updates to the coming soon!