First Impressions....

Bit of background on myself for starters. Max user of 12 Years, Used Vray, Dreamscape, Vue. Done many environmental projects at Taylor James, and also spend a LOT of my time on the water be it on rivers or the sea.

So first impressions of Bermuda beta…

Overall, looks pretty good, for creating vast open oceanscapes it’s very quick, does the job and looks pretty realistic with very few adjustments straight out of the box.

Things I’d like to see… to make Bermuda stand out as the best in the Industry…

Foam : For the sort of scenes you can generate with Bermuda you’d only expect to get a rough surface foam, created at the peaks of waves but then slowly dissipates across the surface. Would require a very intelligent map that would take into account the height and angle of the peak and allow it to dissipate when it flattens out.

Waves: Most open ocean is a vast mess of choppy waters, in especially rough seas the waves will start to break but there’s very little in the way of directionality to these sort of waves and you often get waves coliding together at all sorts of angles. This ‘folding’ and crashing of waves would need some form of integration with particles for foam. (I’m sure Krakatoa could be useful for rendering fine water spray/mist)

Interaction with Land masses, shores, coasts, reefs, beaches, cliffs: Vue is the only tool I’ve seen which has any interaction but it’s completely pants, for a true ocean tool we need to be able to integrate it with land masses so that we can seemlessly go from open ocean onto land. Breaking waves on Beachs, Crashing waves against cliffs, Reefs kicking up Waves, rough water around rockie coastline. I really believe with some simple 2d fluid simulation for ocean swells and some clever awareness that most of the following can be achieved without the need for multiple systems and complex fluid sims.




Reef

Shore Breakers: Most rolling waves we’d like to see happen are in shallow waters where the shore height increases causing the volume of water that is moving across it to have to rise up and fold on itself as the top of the volume of the water is moving with less resistance than the bottom of the volume of water, causing the top to roll over the bottom creating lovely waves.

It’d be great to see these in bermuda, even if it was a medium->long shot only feature. Not expecting full simulated water waves like something from surfs’ up. But perhaps using some form of Vector Displacement to fake waves folder and some nice integration with pflow or a map that could make particle emission for spray and foam. Getting info like direction and velocity of particle and at what point the particle was spawned in the cycle of the wave so it would know to be fine spray or some big chunky foam. But to get waves working really nicely in Bermuda then we’d need the following:

Swell, Wave Height and Interval: Waves breaking at the shores are influences by swell direction, height and interval. Direction pretty obvious, anywhere from -45 to +45 degrees from perpendicular to the shore will make waves. Height of the swell combines with interval to make the actual wave height. The interval time needs to be sufficient so that the water has time to retreat between each barage of waves allowing the next wave to power through with less resistance and be a bigger wave. When the interval time is short even with a big swell height the wave height will not be that high. An interval time of say around 15seconds will allow beautiful waves to form even with a swell height of just 6ft.

Wave interval clearly visible in the picture below.

Something that is missing from Bermuda and most other Ocean plugins is ability to simulate correct Swells… and linking this in with Wave direction. Vue does simulate(fake) this which gives reasonable results from a distance.
magicseaweed.com/msw-surf-charts … starttime=
I would have thought it would be possible to create a 2d fluid sim that would take a start point and initial direction and create swell patterns that would cause waves on one side of an island and not the other. Or at least an ability to take a map and use that as the swell direction and speed parameters.
It would help to break up the regularity of some ocean scenes as there’s always a bit of Chaos going on in water that needs to be in any ocean plugin as it creates the realism of water.

Wake and Displacement: For boats and other objects, creates wake patterns automatically. Abilty to have a position controller to keep the object on the surface of the water. Automatically break waves around the object.

Shaders: Shader wise I’m not too bothered about any actual shaders, just maps… getting as much map info out so we can use it to make our own custom shaders. Maps for all different types of foam on the surface, wave foam etc… Or at least Materials that we can customise to output as maps… Our Vray SeaWater Shader we developed for a previous project works brilliant straight away with Bermuda.

Ok so that’s my thoughts at the moment, I know I’m dreaming but I also think a lot of it is possible. I don’t think we should expect to have a tool which we can use for vast open oceans and extreme close-ups of waves. But to have a tool which integrated all the aspects of realistics oceans I’ve listed above and have everything working together with particle systems etc so we could use it for environment animations and would on the whole give some pretty good results.

PS and the World’s not flat… Can we have a option to add curvature so for really high up shots we can get a bit of the curvature of the Earth Visible :slight_smile:

A few quick Render Tests.


Render_02.jpg
Render_01.jpg

Hi Dave,
Thank you for your very helpful write up! There is a lot of good ideas here and sweet reference shots!

Bermuda’s scope at the current time is for open ocean shots. Our goal was to create a fast solution that would be easy to use out of the box. I understand that there is a real need for a lot of the addition you mentioned, such as breaking waves, and interaction with shore. For the beta anyway, we are not planning any additional simulation like this.

However, our longer term goals is to provide shore interaction. At least, a shore interaction that would at least be acceptable for mid-to-far shots. Shore interaction doesn’t currently fit well into Bermuda’s tileable & layered displacement map approach, so there will have to be a lot of Rnd time that goes into this. When we release the tool, if there is enough interest to justify the development time, we will look into it. Interaction with rocks, and cliffs and whatnot seems like a different story all together.

A higher priority item for us is to provide “wake” simulation. Even if it’s just fakey wake using modifiers. When we used Bermuda internally when we were part of a VFX company we used to use our internal Fluid simulator for wakes, and layered it on top of Bermuda displacement. It was mainly overkill to do a full 3d simulation just for wakes I thought, and implementing simpler fast solution would probably pay off (even if it’s just a fake wake). Doing it with a true simulation provided nice breaking effects, which would not be simple to do otherwise. However, possibly providing particle seeding location, and texture masks for around the wake displacement would be good enough for adding elements. We are not planning wakes for the first release though.

Short-term, before the beta’s done, we hope to get usable foam masks. The foam plan is still in the planning stages, so I will probably be asking for a lot of advice when I start on it. I had a foam mask prototype working at one point. It cached a sequence of foam textures that slowly disappeared over time. I will need to revisit it because the fading wasn’t too believable, and it was sometimes too noticeably tiled.

Breaking waves are always tricky. Probably providing data on where the waves would break would be very useful. The priority of this is probably after the wakes are done, but not for the first release. I like your idea to integration with PFlow. Providing PFlow seeding at areas where we determine the wave would fold on itself seems like a great idea. In fact, back when Bermuda was an internal tool, we were doing something similar with our own custom PFlow operators. Mostly it tweaked shot-by-shot though. There is a PFlow operator included in Bermuda right now, but it simply displaces particles, and moves them along with the wave motion.

Once again, thanks for your thoughts. I will be releasing a new build soon with bug fixes and mental ray support, and hopefully after that we’ll get the initial foam masks working.

So hopefully spawning some particles on the peaks shouldn’t be too complicated, well at least if you create a peaks map then we can use that to drive the PFlow spawning and then use the Bermuda pflow operator to keep them on the sruface and get moved by the waves.

For wave I’ve been thinking about this for a while and whether something with Vector Displacment can be used or not? See example below from Vray.

For wakes there really shouldn’t be much in the way of simulation, the shape of wake generally stays the same if the boat is moving at a constant speed, I’d imagine for people using this plugin they wouldn’t be doing too much in the way of stunt driving, just panning shots, chase shots.
youtube.com/watch?v=zQ5wfsRPWTk
See in the refence video how the ‘displacement’ of the boat stays pretty constant, it’s only the foam that gives the impression of the speed and movement, the waves created in the wake almost seem attached to the boats.

Sounds like you guys are on the right lines with ideas for future developments. As a beta it’s pretty cool and adaptive mesh could be used for much much more than just oceans, thinking about landscapes, rocks etc… Don’t just limit it to oceans! Procedural surfaces have a long way to go yet! What I’d love to see is the ability to take a base height map for say an island, and then use masks to have different procedural geometry in different areas. But that’s just me dreaming again :wink:

Dave! Nice images!

one of the things that worked very well for us [and i’ll see if i can dig up some reference] on Superman when we used this, was to layer multiple passes of the water in comp with some masks to blend it in. See attached image ‘water’

also, found some reference with splashes [without rain, which was added later] and some foam stuff we did. i’m not sure of that pipeline - but maybe these images will give you a general idea of what’s capable with bermuda out of the box, with some quick-thinkin’ td’s. perhaps bobo can jump in and talk a bit more about it?

also see reflections of fumefx and comp’d fire in the night shots…

and for the fangirls - a little twilight shot with water. not sure this is final comp!

love the reference and the work!

cheers

cb



Hey Dave, In terms of vector-displacement. We actually have it working in VRay and finalRender. The shot of with the water and fire above was done using vector displacement. There’s three reasons I’ve left it out of the beta. One is that because it’s not really possible for it to be general for all renderers, as max’s idea of displacement is a vector along the normal the length of which is driven by a greyscale texture. So all the renderers have their own ways of doing vector displacement. The second reason is that the setup procedure for for both VRay and finalRender was complicated and hacky and was hard to tweak when it didn’t look good. And the third reason is because I started to experiment with normal maps with view-adaptive meshing, and got pretty similar results. That being said, I could include my original VRay displacement texture maps as a technically unsupported feature.

As it turns out, the normal maps are giving me headaches now again for different renderers that are handling the modified normals differently, such as Brazil and mental ray. So, my dream of a set of tools general enough for all renderers is somewhat crushed :frowning:

Btw, Vlado originally added vector displacement to the vray displacement modifier on my request for a previous incarnation of Bermuda!

Wouldn’t it be possible to extend the standard max displacement to support vector maps?
Or, a tool to convert the vector maps to pileable standard displacement maps? So we could add multiple standard displacement modifiers and have a workaround to the “along the normal” limitation?

I can’t use the standard material’s displacement map slot for vector displacement. Some renderers might have a setting to allow this (I don’t know of any, but it seems possible), but in general it wouldn’t work. Each renderer usually has their own modifier that performs render-time displacement. Also, I can’t properly convert a 3d displacement vector to a vector along the normal. I could use the 3d vector as projected along the normal vector, but it doesn’t look correct for choppy oceans.

Hi Conrad,
should’ve elaborated it more: was talking about the displacement modifier. This would make things renderer agnostic.
About the 3d disp vector to 2d, I was thinking about layered displacements, or non-linear displacement - see attachments.