Some blender tips that I've picked up on both through other tutorials that I've found useful:
If you are constructing landscape topology around curved surfaces...let's say you are wanting to make roads, or curved pavement surfaces. While you could texture paint or attempt to warp translate an existing flat plane grid to the this surface. Alternately, I've found working the simple geometry of the circle much better in building landscape mesh surfaces around such. How do you work the circle into desired mesh topology? First, If your curved surface if you have enough regularity in the surface curvature, work to scale the circle to slightly greater then two diametric points on the main object structure in terms of radii that you are working on. The diametric points should intercept the axis on the buildings surface curvature local tangent maximum (i.e, rotate the building objects surface local xy planar maximum to intercept the global x or y axis). Secondly, I like to go into edit to achieve a fairly decent subdivision of points so that proportional translations, scaling, rotations on the circle of points will neither look linear and maintained an adequate relative to the curved surface, usually I spend no more then a couple of iterations on the mesh circle in terms of subdivisions here. You'll need to experiment with the proportional editing feature enabled in the 'edit' window. Then you can start to experiment with different falloff types to see how this approximate to your given curved surface. I work with Ctrl+Z to undo any changes that I sense don't work. I would assumed both the mesh building object are set such the diametric points chosen for starters are aligned globally on either the x or y axis corresponding, this is very important that both diametric points are axially in parallel to the global axis, otherwise, translated proportional changes will be skew to parallel in terms of geometry....if need be you can rotate correct later alignments to a desired local axis. Next, chose diametric points on the circle at 90 degrees relative to the primary diametric points, this should correspond to the perpendicular on the global xy plane. Here, I work by hitting G and then pressing the corresponding key to the axis for the diametric points that are to be moved. If you need to move along the X axis, you'd hit 'G' and then 'X'. For rough translations you can do this visually, paying attention to the numeric coordinate values (shown in the lower left of your window), I tend to finalize the translated change by punching in some decimal value by hand while simultaneous recording this, as you will apply equal and opposite numeric sign translation on the other side. Ideally, as you scroll with middle mouse wheel to different proportional falloff radii (after pressing 'G' + 'X' or 'Y') and dragging (you can back out of a change by also pressing right mouse button), you will find on the point you are working an optimum curvature among st the candidates of falloff type. That best approximate surface curvature. If you working with a non parabolic higher order surface curvature of a similar nature, you may need to perform additional object rotations to work the curve at local tangent points along the primary global x y axis up to inflection points where change of curvature neither follows parabolic or higher order types. This is so that you can translate/scale diametric points which are in parallel to the given global axis as necessary. The advantage of doing this translation scale method on points is that changes made are applied with mirror symmetry throughout the series of curvature, and its an entirely visual approach to building topology curvature while working in the basis of a closed edge loop as opposed to attempting this with bezier approximation and then working to close the edge curvature with a given loop and translating this into a mesh object.
Another alternate method is entirely numeric, where you'd need to align points on the circles curve to points to vertices on the curved surface, doing this transformation through python, or apply curve approximation on the curved surface (getting into a bit of differential geometry here maybe).
As you've worked to move your circle into a desired curve approximation, once you have finalized the its shape in terms of approximating a given curvature, you can build the mesh as follows: simply press 'E' + 'S' + Shift 'Z'. I suggest working in scales for extruded scaled expansion numerically in increments 1.25 and in extruded scaled regressions of .95 ...technically you can do these iterations steps by hand or in the python console by script as necessary. You'll repeat as necessary to provide your necessary visual floor covering.
Once your mesh is built, you should have nice selection topology. Here I recommend for face or edge loop selection, using Alt + Shift + Right Mouse button click on the desired edge 'normal' (90 degrees) relative to direction of the loop.
Generally for complex mesh surfaces, I've found that using complex UV maps tend to more often to lead to less resolved coherence quickly. Here I suggest instead I've found quicker texturing by individually selecting the mesh faces, and then using generating the UV unwrap with the 'reset setting' What this produces for the series of faces is a single 4 coordinate UV square applying to all the tiles, instead of individual UV coordinates projected in two dimensions for each face....this works especially well when you work with a patterned textural uniformity and hadn't needed a highly differentiated surface in so far as textures were concerned. An excellent trick using the 'reset' method on UV coordinates for a singleton UV set (where a family of vertices is applied to a for coordinate UV value), is to scale in your UV editor the UV coordinates. Pressing 'S' and then dragging the mouse near to the center of the UV objects center re scales the coordinates to smaller values. For instance if working on glass texturing where you can choose things like individual glass panels or a regular patterned series of these in a decent enough glass building textures. The UV coordinates are locally determined and translated globally to the the planar surface of the selected portion of your image texture which is a nice feature of using UV projections for mapping textures onto a surface...or in other words, a glass pane that were selected would be re scaled to the planar size of the face automatically on rendering.
I've found the link very useful for generating my custom forest How to generate a City in Blender
Technically this provides techniques for auto generating with a random seed city buildings on a mesh plane, but can be equally useful for generating other mesh object types.
There are two techniques that I have found useful for terrain generation in textural maps. One, I've found that texture files often look tile mapped applied over the extended whole of the plane where perspective resolution of the texture need be fit appropriate to scale relative to the backdrop of the foreground building object. Obviously a low resolution photos of lawns would look inappropriately scaled if needing significant landscape acreage (keep in mind lawn textures may typically be generated at resolutions of a square foot...now imagine applying this texture with default texture settings for rendering over a landscape that should look like 20 acres...it would look in the perspective like huge alien grass to say the least), so I've generally used two approaches to this. One scaling the landscape mesh (plane) in this case up wide enough to fit a given perspective horizon oriented to the camera angles for rendering as desired, and secondly using mesh subdivisions for an adequate UV coordinate set. Unfortunately, the technique applied to buildings appears more tile mapped so normally I wouldn't suggest this. For the unwraps generally where landscapes may be articulated on the z plane in so far as height mapping means one should be able to hit numpad '7' and then use a top down projection based UV unwrap...usually I do this to the bounds, while loading a blank texture file accordingly. To save time in the effort of constructing the file map, often because the new texture file may be still low enough resolution for a big enough landscape. I also generally scale my UV coordinates up equally on the xy projected plane. Here I simply pushing 'S' in the UV editor and then dragging to approximately to a limit of 2 to 3 times the size of your existing blank file map. What this in effect does is create a large tile mapped surface, instead of being tile mapped at each individual face set. Here the effect of tile mapped textural looks can be minimized using some visual techniques. First, it helps to have the texture paint tab selected on your UV map, and secondly, it helps to have this enabled on a 3D window, its the other option aside from 'Object' and 'Edit' with a given mesh selection. In my case I used a couple lawn textures (medium resolution). I've found its also very helpful one on your scene editor (upper left corner of your blender window) to disable your building object and any additional landscapes that aren't directly being worked on). Also I suggest setting your object to render the texture that you are painting. I start generally by roughing in the mesh texture with a very large radius on the brush, using both textures, and then as the texture maps is filed in. I move the radii of the texturing brush incrementally smaller. Here, working the surface over where obvious perspective discordance appears visually between say the perspective of the building and the given surface. As you reduce the size of the brush, this will have the effect of painting in incrementally smaller resolutions the same texture map. When you have achieved an appropriate resolution of brush size for mapping with a given brush radius and have filled in roughly to the desired resolution a given texture, you can then work to achieve making less the obvious tiling of your landscape surface, by spot texture painting on your 3D texture paint window...using the same radii that you have worked into. At some point it hadn't need be perfect especially as other mesh objects will fill out the frame of you view. Mostly you work to what is visually being presented here.
Some additional tips for building the texture paint palette: These are done in the Texture window. Selecting the Paint tab to the right of the default main Texture tab that is set. Adding this is a matter of adding new textures and selecting the 'Image' selection option for texture type, and then loading the desired texture. Once you have your texture file painted as desired. You'll need to save this on your UV editor as an image file, and then select again the normally default 'Texture' tab button, and then select image for texture type and make sure this is check marked as assigned to your material for the landscape object. Make sure that you select 'UV' for image mapping and load your UV coordinates for the mapping otherwise, it won't be generated right when you render. The same is true for building textures by the way.
Next for tree generation. I suggest at least a couple different tree textures. I use flat planes setting materials transparent while forcing non transparency on transparent background tree textures. More complicated tree generation would likely require building tree models, which is another matter. Generally since I am working with non animated frames, for my purposes un necessary, and secondly for building dense forest canopies, you'd likely to working with 360 panoramic projections from a real texture source, or you could work in my case building your own.. High density comes as computational expense for higher resolution renderings. Fortunately even with high density forest generations, computational expense is reduced doing the following: work with simple plane mesh maps. Keep this a very low poly, I work with 4 vertices, and 1 Face for each mesh poly tree object. A few caveats to texture rendering with alpha transparency on material maps. Make sure to enable 'Transparency' on your objects given material, set the alpha to zero. Next, make sure you select 'Reset' for the UV unwrap, and make sure on your UV editor window to 'Constrain UV bounds to image' in 'Edit' mode on your '3D' window. You load the texture in the usual manner as in above for the given plane with image mapping, with UV selected for image mapping and UV object. Then make sure 'Alpha' alongside 'Color' is checked under 'Influence'. If you want to see your transparency shown in your 3D rendering viewport, you can pull the + tab or press N and under 'Display' change the 'shading' drop down from 'Multi textures to 'GLSL'.
The link mentioned above provides additional particle mapping setup instructions but I'd add these additional tidbits:
1. For Z, X, or,Y translation (local) adjustments for a particle rendered mesh object, means transforming the object on the original object map (non particle instance), and then applying location coordinate transformation..this sets your object's local coordinates to zero while closing the vector transform of the object...to do this in..your 3D viewport select your object, then under the Object menu options 'Apply' > 'Location'. The reason for this is that apparently any local location vector transforms on the object are not included in the rendering position for the given particle, on the particle mesh map.
2. Z Rotation of objects on the particle maps can be done with the 'Rotation' map in Particle maps settings properties tab. Local rotation coordinates are applied in the particle map and don't need to be applied for particle map instancing...oddly enough. If you apply local rotation coordinates you'll either need to re adjust in the opposite direction and leave unapplied, or make rotation adjustments in the Particle map settings properties.
Finally to beautify, I would choose 'Ambient Occlusion' on and the 'Multiply' selection chosen.
If you are constructing landscape topology around curved surfaces...let's say you are wanting to make roads, or curved pavement surfaces. While you could texture paint or attempt to warp translate an existing flat plane grid to the this surface. Alternately, I've found working the simple geometry of the circle much better in building landscape mesh surfaces around such. How do you work the circle into desired mesh topology? First, If your curved surface if you have enough regularity in the surface curvature, work to scale the circle to slightly greater then two diametric points on the main object structure in terms of radii that you are working on. The diametric points should intercept the axis on the buildings surface curvature local tangent maximum (i.e, rotate the building objects surface local xy planar maximum to intercept the global x or y axis). Secondly, I like to go into edit to achieve a fairly decent subdivision of points so that proportional translations, scaling, rotations on the circle of points will neither look linear and maintained an adequate relative to the curved surface, usually I spend no more then a couple of iterations on the mesh circle in terms of subdivisions here. You'll need to experiment with the proportional editing feature enabled in the 'edit' window. Then you can start to experiment with different falloff types to see how this approximate to your given curved surface. I work with Ctrl+Z to undo any changes that I sense don't work. I would assumed both the mesh building object are set such the diametric points chosen for starters are aligned globally on either the x or y axis corresponding, this is very important that both diametric points are axially in parallel to the global axis, otherwise, translated proportional changes will be skew to parallel in terms of geometry....if need be you can rotate correct later alignments to a desired local axis. Next, chose diametric points on the circle at 90 degrees relative to the primary diametric points, this should correspond to the perpendicular on the global xy plane. Here, I work by hitting G and then pressing the corresponding key to the axis for the diametric points that are to be moved. If you need to move along the X axis, you'd hit 'G' and then 'X'. For rough translations you can do this visually, paying attention to the numeric coordinate values (shown in the lower left of your window), I tend to finalize the translated change by punching in some decimal value by hand while simultaneous recording this, as you will apply equal and opposite numeric sign translation on the other side. Ideally, as you scroll with middle mouse wheel to different proportional falloff radii (after pressing 'G' + 'X' or 'Y') and dragging (you can back out of a change by also pressing right mouse button), you will find on the point you are working an optimum curvature among st the candidates of falloff type. That best approximate surface curvature. If you working with a non parabolic higher order surface curvature of a similar nature, you may need to perform additional object rotations to work the curve at local tangent points along the primary global x y axis up to inflection points where change of curvature neither follows parabolic or higher order types. This is so that you can translate/scale diametric points which are in parallel to the given global axis as necessary. The advantage of doing this translation scale method on points is that changes made are applied with mirror symmetry throughout the series of curvature, and its an entirely visual approach to building topology curvature while working in the basis of a closed edge loop as opposed to attempting this with bezier approximation and then working to close the edge curvature with a given loop and translating this into a mesh object.
Another alternate method is entirely numeric, where you'd need to align points on the circles curve to points to vertices on the curved surface, doing this transformation through python, or apply curve approximation on the curved surface (getting into a bit of differential geometry here maybe).
As you've worked to move your circle into a desired curve approximation, once you have finalized the its shape in terms of approximating a given curvature, you can build the mesh as follows: simply press 'E' + 'S' + Shift 'Z'. I suggest working in scales for extruded scaled expansion numerically in increments 1.25 and in extruded scaled regressions of .95 ...technically you can do these iterations steps by hand or in the python console by script as necessary. You'll repeat as necessary to provide your necessary visual floor covering.
Once your mesh is built, you should have nice selection topology. Here I recommend for face or edge loop selection, using Alt + Shift + Right Mouse button click on the desired edge 'normal' (90 degrees) relative to direction of the loop.
Generally for complex mesh surfaces, I've found that using complex UV maps tend to more often to lead to less resolved coherence quickly. Here I suggest instead I've found quicker texturing by individually selecting the mesh faces, and then using generating the UV unwrap with the 'reset setting' What this produces for the series of faces is a single 4 coordinate UV square applying to all the tiles, instead of individual UV coordinates projected in two dimensions for each face....this works especially well when you work with a patterned textural uniformity and hadn't needed a highly differentiated surface in so far as textures were concerned. An excellent trick using the 'reset' method on UV coordinates for a singleton UV set (where a family of vertices is applied to a for coordinate UV value), is to scale in your UV editor the UV coordinates. Pressing 'S' and then dragging the mouse near to the center of the UV objects center re scales the coordinates to smaller values. For instance if working on glass texturing where you can choose things like individual glass panels or a regular patterned series of these in a decent enough glass building textures. The UV coordinates are locally determined and translated globally to the the planar surface of the selected portion of your image texture which is a nice feature of using UV projections for mapping textures onto a surface...or in other words, a glass pane that were selected would be re scaled to the planar size of the face automatically on rendering.
I've found the link very useful for generating my custom forest How to generate a City in Blender
Technically this provides techniques for auto generating with a random seed city buildings on a mesh plane, but can be equally useful for generating other mesh object types.
There are two techniques that I have found useful for terrain generation in textural maps. One, I've found that texture files often look tile mapped applied over the extended whole of the plane where perspective resolution of the texture need be fit appropriate to scale relative to the backdrop of the foreground building object. Obviously a low resolution photos of lawns would look inappropriately scaled if needing significant landscape acreage (keep in mind lawn textures may typically be generated at resolutions of a square foot...now imagine applying this texture with default texture settings for rendering over a landscape that should look like 20 acres...it would look in the perspective like huge alien grass to say the least), so I've generally used two approaches to this. One scaling the landscape mesh (plane) in this case up wide enough to fit a given perspective horizon oriented to the camera angles for rendering as desired, and secondly using mesh subdivisions for an adequate UV coordinate set. Unfortunately, the technique applied to buildings appears more tile mapped so normally I wouldn't suggest this. For the unwraps generally where landscapes may be articulated on the z plane in so far as height mapping means one should be able to hit numpad '7' and then use a top down projection based UV unwrap...usually I do this to the bounds, while loading a blank texture file accordingly. To save time in the effort of constructing the file map, often because the new texture file may be still low enough resolution for a big enough landscape. I also generally scale my UV coordinates up equally on the xy projected plane. Here I simply pushing 'S' in the UV editor and then dragging to approximately to a limit of 2 to 3 times the size of your existing blank file map. What this in effect does is create a large tile mapped surface, instead of being tile mapped at each individual face set. Here the effect of tile mapped textural looks can be minimized using some visual techniques. First, it helps to have the texture paint tab selected on your UV map, and secondly, it helps to have this enabled on a 3D window, its the other option aside from 'Object' and 'Edit' with a given mesh selection. In my case I used a couple lawn textures (medium resolution). I've found its also very helpful one on your scene editor (upper left corner of your blender window) to disable your building object and any additional landscapes that aren't directly being worked on). Also I suggest setting your object to render the texture that you are painting. I start generally by roughing in the mesh texture with a very large radius on the brush, using both textures, and then as the texture maps is filed in. I move the radii of the texturing brush incrementally smaller. Here, working the surface over where obvious perspective discordance appears visually between say the perspective of the building and the given surface. As you reduce the size of the brush, this will have the effect of painting in incrementally smaller resolutions the same texture map. When you have achieved an appropriate resolution of brush size for mapping with a given brush radius and have filled in roughly to the desired resolution a given texture, you can then work to achieve making less the obvious tiling of your landscape surface, by spot texture painting on your 3D texture paint window...using the same radii that you have worked into. At some point it hadn't need be perfect especially as other mesh objects will fill out the frame of you view. Mostly you work to what is visually being presented here.
Some additional tips for building the texture paint palette: These are done in the Texture window. Selecting the Paint tab to the right of the default main Texture tab that is set. Adding this is a matter of adding new textures and selecting the 'Image' selection option for texture type, and then loading the desired texture. Once you have your texture file painted as desired. You'll need to save this on your UV editor as an image file, and then select again the normally default 'Texture' tab button, and then select image for texture type and make sure this is check marked as assigned to your material for the landscape object. Make sure that you select 'UV' for image mapping and load your UV coordinates for the mapping otherwise, it won't be generated right when you render. The same is true for building textures by the way.
Next for tree generation. I suggest at least a couple different tree textures. I use flat planes setting materials transparent while forcing non transparency on transparent background tree textures. More complicated tree generation would likely require building tree models, which is another matter. Generally since I am working with non animated frames, for my purposes un necessary, and secondly for building dense forest canopies, you'd likely to working with 360 panoramic projections from a real texture source, or you could work in my case building your own.. High density comes as computational expense for higher resolution renderings. Fortunately even with high density forest generations, computational expense is reduced doing the following: work with simple plane mesh maps. Keep this a very low poly, I work with 4 vertices, and 1 Face for each mesh poly tree object. A few caveats to texture rendering with alpha transparency on material maps. Make sure to enable 'Transparency' on your objects given material, set the alpha to zero. Next, make sure you select 'Reset' for the UV unwrap, and make sure on your UV editor window to 'Constrain UV bounds to image' in 'Edit' mode on your '3D' window. You load the texture in the usual manner as in above for the given plane with image mapping, with UV selected for image mapping and UV object. Then make sure 'Alpha' alongside 'Color' is checked under 'Influence'. If you want to see your transparency shown in your 3D rendering viewport, you can pull the + tab or press N and under 'Display' change the 'shading' drop down from 'Multi textures to 'GLSL'.
The link mentioned above provides additional particle mapping setup instructions but I'd add these additional tidbits:
1. For Z, X, or,Y translation (local) adjustments for a particle rendered mesh object, means transforming the object on the original object map (non particle instance), and then applying location coordinate transformation..this sets your object's local coordinates to zero while closing the vector transform of the object...to do this in..your 3D viewport select your object, then under the Object menu options 'Apply' > 'Location'. The reason for this is that apparently any local location vector transforms on the object are not included in the rendering position for the given particle, on the particle mesh map.
2. Z Rotation of objects on the particle maps can be done with the 'Rotation' map in Particle maps settings properties tab. Local rotation coordinates are applied in the particle map and don't need to be applied for particle map instancing...oddly enough. If you apply local rotation coordinates you'll either need to re adjust in the opposite direction and leave unapplied, or make rotation adjustments in the Particle map settings properties.
Finally to beautify, I would choose 'Ambient Occlusion' on and the 'Multiply' selection chosen.