A plugin for placing objects over a surface, by utilizing the Poisson Disk Sampling algorithm and raycasting.
The plugin has 3 versions: a 3DS Max, Unity and Unreal one.
In all 3 versions each object has separate settings for rotation, scaling, height offset, surface alignment and an interval for the allowed range of the dot product between the up vector and the face normal, so you have control over the slope level the objects can be placed on. They also support driving the minimum distances between sampled points by a texture.
The plugin also comes with a small clumping algorithm to place smaller objects around the sampled point.
Both the Unity and Unreal version have support for distributing multiple levels of gameobjects. In the Unity version you can also control how much chance an object has to be chosen from the object list and comes with 5 different modes to setup the region wherein the objects are distributed.
The Unity implementation can be found at GitHub and you can read its documentation here.
Reference: Poisson Disk Sampling