Physical Water Surface

Oh wow, not sure how did I miss that part about the artifacs and bounds :stuck_out_tongue:
Thanks for answering and looking forward to an even more awesome water!

Hi,

I cannot get my boat to have stable buoyancy. By default, it is Single Point mode but then it is jerking too much (pitch and roll down and up 2 or 3 times a second). The boat is quite big as can be seen in the image below - the elliptic mesh is the pawn boat supplied together in the asset, so you can get the rough size comparison here. My guess is the buoyancy setting is not right. But then as soon as I set it to Auto Points, it either doesn’t move at all or it simply vanish (maybe fly somewhere else!)

If you haven’t done so already, please read the Wiki. It’s important to to have a good understanding how the different Buoyancy Modes work.

You’re right, SinglePoint Mode will not look good for a boat of that size. It takes the translation and rotation directlyl from a single point on the water surface. The advantage is that in this mode the boat can’t become unstable.

In AutoPoints mode, Simulate Physics is turned on and a physics simulation with your boat is performed. Please check if your boat has a realistic mass, and that the center of gravity is where it’s supposed to be. If for some reason it is too high or too low, the buoyancy won’t work correctly. Next, please enable the DrawDebug option to see where the Buoyancy Points are placed. On the example boat, you can see what it should look like. If you can’t see the Buoyancy points, the problem might be that the Buoyancy blueprint failed for some reason to correctly determine the dimensions of your boat. There is also the possibility to place the Buoyancy Points manually with the ManualPoints option, but let’s first try to get in to work in AutoPoints mode before considering that.
It is also a good idea to check if your boat behaves correctly in a physics simulation, for example just drop it on a plane and observe if it moves in a realistic way.

If all this fails, I suggest that you send me an email to the support address and I will help you get this working. Also, you can send me a small example project with your boat and I will have a look what’s going wrong.

Okay thanks for all the tips. I have read the Wiki thoroughly before posting the problem here.
Btw, do you think scaled actor (boat) has got to do with this jerking? My artist exported boat which is too small, and the correct size should be 100x so I set the scale in the details.

The scaling could be problematic, for example it could lead to an unrealistic mass of the boat. I usually advise people to not to scale meshes, instead the fbx file should already contain the mesh in the correct size. What is the mass of the boat in kg? You can easily query this from Blueprint.
One more question: Is the boat a static mesh, or something else (skeletal mesh, Blueprint etc)?

Okay I think I have got the culprit down… it is the scale. Today I apply buoyancy to fresh new boat mesh with correct scale, it just works nicely. Previously I have to tweak a lot of values and still does not achieve buoyancy as good as what I have today.

But probably in future, it is better if the buoyancy also takes care about the mesh scale? Sometimes the easy way have to have variant of boats in the level is to provide multitude of scale using the same boat (aside from changing the material).

I will try to fix the scaling issue in the next update. You are right, scaling a mesh should not break buoyancy.

Physical Water Surface is fully compatible with Unreal Engine 4.14.
If you’re using 4.14 or higher and the water surface looks a bit blurry, please select FXAA under Project Settings -> Rendering -> Anti-Aliasing Method. In 4.14, the Anti-Aliasing Method setting is no longer part of the PostProcessVolume settings, so it’s possible that the setting automatically reverts to TemporalAA when you update to 4.14. You can find more information on good Anti-Antialiasing settings in the wiki: A new, community-hosted Unreal Engine Wiki - Announcements and Releases - Unreal Engine Forums

Does anybody who turn on nativize bp in project settings managed to get the packaging a success? I have not yet investigated, but my project is quite simple. It is 4.13.2.

The error comes from compiling nativized WaterPlane - and if there are not too many boats around, just avoid bp nativize option as performance-wise, it shouldn’t be slow. Otherwise, you will probably need to convert WaterPlane BP to C++ yourself.

Do you get an error message, and what does it say?
Probably this is a bug that Epic needs to fix in the engine. Could you please report this bug to Epic, and send me a link to the bug report? I will then keep track of this issue and make sure it gets resolved.

Thanks to everyone who bought Physical Water Surface. Please make sure to read the Wiki to learn all about how to use Physical Water Surface and the example content that comes with it.
If you’re using engine versions 4.14 and higher, please read this important information about the Anti-Aliasing Method.
In case you have any questions that are not answered in the Wiki, just send me an email to the support address that you find on the Marketplace page. Please post in this thread if there is a feature that you would like me to implement, or if you want to show something awesome that you created with Physical Water Surface.
If you like Physical Water Surface and my services, please don’t forget to leave a good rating on the Marketplace page!

If you are concerned about performance (I have more than 20 objects with buoyancy enabled), then a simple buoyancy-lod will do. What I did was to disable buoyancy if the object is too far, and this check is done every 1 second or so. The modified ‘Buoyancy’ blueprint now looks like below:-

Good idea! If you’re using AutoPoints Buoyancy Mode, you could switch to SinglePoint Buoyancy (already much faster) at a certain distance first, and then at an even greater distance disable the Buoyancy completely. SinglePoint Buoyancy is very fast, you can have quite a lot of objects before it starts to affect performance.
Also, if you’re using AutoPoints Buyoancy Mode, remember that you can tweak the NPointsPerFrame and NFramesPause parameters to improve performance. If you set NPointsPerFrame to 2, it will only recalculate the water depth for two of the points, not all of them each tick. The depht from the depth of the other points is calculated with linear extrapolation. If you set NFramesPause to 1, you will get 1 frame pause. This means the Buoyancy calculation will only be executed every other frame, on the frame in between there is linear extrapolation. A good way to get to know these parameters is to use the example scene and to increase these two parameters until you see a change in Buoyancy behavior. You can read more about these parameters in the Wiki!

From my own test, singlepoint for big object (for lod purpose) is way too disruptive - I mean the objects look too jumpy from afar, you can never miss the sight! Simply setting their position to initialposition when they are afar make them indistinguishable from autopoint buoyancy.

You’re right, for large objects this is obviously better, but for small objects it is worth to consider switching to SinglePoint buoyancy.

@: What is the easiest way or best way to add foam on the edge where the water hits the landscape (i.e. like a beach). I have been trying a few different things and I just can’t get it right. 8-{

I am going through the documentation but I am probably being stupid. 8-{

Does this system supports a ragdoll?

Did you look into the method described by BlueBudgie in this thread, using the DistanceToNearestSurface node?

I think this will work since the AutoPoints buoyancy mode is already a physics simulation.