Hacker News new | past | comments | ask | show | jobs | submit login
The Tech of Pixar: Piper (2017) (fxguide.com)
278 points by gdubs on Nov 8, 2019 | hide | past | favorite | 41 comments



The approach is straightforward. "Every shot in Piper is composed of millions of grains of sand, each one of them around 5000 polygons." With enough compute power, you don't have to fake as much.


Unless you're looking at it very, very closely, does 5k polygon sand look any different from 500 polygon sand, or even 50 polygon sand? Even the very close ups in the article look like they'd be much the same with a lot fewer polygons.


For reference, this is a 5040 triangle sphere (flatshaded so you can see the faces):

https://imgur.com/a/IZLxQyZ

and this is 520 triangles:

https://imgur.com/a/EGxKsV5


No, it does not. 5000 polygons condensed into a fraction of a pixels becomes a matter of statistical distributions. Effects like displacement and bump mapping have different looks if you filter them to get one value per pixel. The illumination changes because you get one averaged normal instead of distribution of normals that would occur naturally.

To have this much detail is a brute force and overkill way to get the distribution of samples that you really want on a sub pixel level, but sometimes these things are done in film because with a lot of pain you can make it work.

In this case if they did actually do that, it is through instancing, which in a sense could be thought of as a lookup with polygons to ultimately get that distribution. Usually a huge amount of samples are needed to deal with aliasing as well.


Why bother to do Cook-Torrance shading (a statistical modelization of the micro-geometry) when you can just use the real microscopic geometry ...


That was my first question. They mention in the article the high number is for close ups.


Also says:

> Every shot in Piper is composed of millions of grains of

> sand, each one of them around 5000 polygons.

I'm guessing the article is just confused. The important point, I think, is about using real geometry for sand particles rather than the beach being a surface with a displacement map.


But with instancing. So they could have a few dozens of grain types 5K tris each and the total number is from instances, no need to load 5 billion triangles into memory.


What does that look like from a data structure perspective? Each grain has a bounding box and you only look at the geometry for that grain if a ray crosses the box? (I'm way, way out of my wheelhouse here, if it's not already obvious.)


Reduced ad absurdum I thinks that is pretty much how it works. There is an acceleration structure that is traversed for each ray, to reduce the search space for ray-geometry intersections (probably a bounding volume hierarchy of some sorts), and using instancing only a very small subset of the total of all grains of sand actually need to be stored and processed. I imagine the sand is modeled using some particle system where each particle is actually a small scene of sand grain models in itself, with its own BVH etc, and the raytracer somehow reuses whatever happens inside them for every other particle that has the same lighting conditions.

It’s probably way way more complicated than that though. Extremely interesting stuff.


They have some close ups of the sand and it effects light transport


Presumably the difference is in light reflections on the sand? I don't know


I believe that the simulation in Houdini works better with smoother meshes. Plus the shaders look better on higher polygon objects for smooth objects.


I saw this when I saw Finding Dory. The sea foam was so good! I geek out about digital animation and was absolutely blown away.

I'm not ashamed to admit I teared up a bit at how good it was.


I thought the sea in Moana was even better.


Sony Imageworks did waves in Surf's Up back in 2007 https://youtu.be/e96_1NxL9no?t=98


I'm very much behind on movies. It's on my list though.


This trailer[0] has a few shots of the sea.

[0] https://www.youtube.com/watch?v=LKFuXETZUsI


This was a fascinating and humbling read, and only after reading did I realize this was almost 3 years old… What are they animating now? Snowstorms with individual unique flakes?


They already generated ~2000 different flakes and a snow simulation system for Frozen.

https://en.wikipedia.org/wiki/Frozen_(2013_film)#Technology_...


This is absolutely amazing. When I first saw Piper I assumed they were cutting real video of the water and beach is was just so realistic.


The article makes the point that it became inefficient to use displacement maps due to their size ballooning beyond '36 times' what they would normally use. So this means that the ground displacement map was just not detailed enough and pushing it to higher resolutions didn't scale. Instead they used Houdini to generate sand grains, I presume Houdini used some sort of displacement map per grain? The final result is a mesh nevertheless.

They also mention that, "this result was driven by a combination of culling techniques including camera frustum, facing angles and distance, creating a variance of dense to coarse patches of sand for optimum efficiency."

So while they had grains each of ~5000 polygons available to them and positions that they could occupy, they cut down on that polygon count using a combination of techniques (many common in games too) to make it all work. So the polygons of any grains outside the camera frustum were ignored. The faces of the grains point away from, I presume, any light source and therefor not contributing to the path tracer were ignored and also some soft of LOD to reduce polygon count as distance.

As an amateur blender user I'm reminded of microdisplacement as a way for us mere mortals to achieve something in this space: https://www.blenderguru.com/tutorials/introduction-microdisp...


Doesn’t aggressive culling present issues with ray traced lighting? If you remove an umbrella that’s behind the frustum then a shadow in the scene is missing. Even harder is if you cull a second layer of sand grains then you don’t get the light that reflects off of them (assuming partial transparency of grains).


Yes, so I presume they only remove the faces that are not exposed to any light bounce.


2017.

Didn’t understand most of it, but it is a jaw-droppingly beautiful short, and the stills in the article are well worth the skim.


Pixar shorts have always been test beds for techniques and technologies that show up in their feature films in the years afterward.


Indeed. And rumour is they've stopped doing them now.

On the VFX side of the industry we were often jealous of Pixar and Dreamworks being able to do shorts, in terms of having the scope and ability to test out new tech / pipelines.


They're still doing them, but they may not be featured before pictures anymore. They've found different distribution channels (YouTube, Disney+, Disney Channel, etc).


Any idea why they might have stopped?


Yeah, but then you realised why they were doing them, because they were using their own in-house tools.

Pixar was the last holdout for maya, they only converted in the last few years


Are you saying that Pixar is using Maya now? For which parts of the workflow?


Creativity Inc. is very worth reading. A guy has a dream and spends his life inventing things that bring his dream to reality.



Don't forget Part 2: Finding Dory - making waves

https://www.fxguide.com/fxfeatured/the-tech-of-pixar-part-2-...


After a certain threshold of processing power, you can just use earth as it is, pretty amazing


After a certain threshold, earth as it is can be seen as a tool for powerful processing. At least, that's what a little white mouse told me.


And this was 2017! Imagine what Pixar have in stores now. I, for one, can't wait to see what they come up with next, in term of shorts I mean.


Is there a HDR render of this available?


Is the beach shared somehow shot to shot? Is there a database storing each sand grain?


The sand is mind blowing. Every grain is a mesh itself.


But what about the plastic?




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: