How to merge particles and an object into one mesh?

I have done a particles scattered across a plane…now I want to merge the plane and the particles into one mesh, how to do that, is it possible?

In blender?
If you select the obejct which emited the particles and go to the menu you can “make duplicates real”

But is this related to blender game engine? You can’t use particles in the game engine can you?

My idea is not to use real time particles, but to compile the particles and the object into one mesh…and then use the new mesh in the engine.

For hair? That sounds like it would look great. But what would it do to the poly count?

One guess, I wonder if it’s better to use shaders rather than meshes. I always read about it, and most programmers prefer shaders for speed rather than manipulating mesh vertices.
http://www.gamerendering.com/category/vegetation/

I don’t want to hijack the thread, I offer just an idea. It seems very interesting though.

Its for foliage, not for hair, shaders are no use for scattering foliage on the terrain.
However, I found the solution its: “applying particles instance modifier”.
Unfortunately its for blender 2.5x only.

Double post, sorry.

Select the particles and the plane and press Ctrl-J to join the meshes together, I believe.

Quite a engine ineficient way of making grass and trees in the BGE though.
Your game will probably run very slowly…

I use this code to add trees and foliage at runtime:

def tree_gen():
    cont = GameLogic.getCurrentController()
    own = cont.owner
    
    adder = cont.actuators['adder']
    start = cont.sensors['start']
    
    starter = start.owner
    
    new_list = [1] * own['count'] 
            
    for item in new_list:
        
        tree_seed = GameLogic.getRandomFloat()
        if tree_seed < 0.2:
            adder.object = "tree_1"
        elif tree_seed >= 0.2 and tree_seed <= 0.4:
            adder.object = "tree_2"
        elif tree_seed >= 0.4 and tree_seed <= 0.6:
            adder.object = "tree_3"
        elif tree_seed >= 0.6 and tree_seed <= 0.8:
            adder.object = "tree_4"
        elif tree_seed >= 0.8:
            adder.object = "tree_5"
        
    
        adder.instantAddObject()
        spawn = adder.objectLastCreated
        if spawn: #2000 blender units is the size of my map.
            x_pos = 2000 * (GameLogic.getRandomFloat() - 0.5)
            y_pos = 2000 * (GameLogic.getRandomFloat() - 0.5)
                    
            find_ray = spawn.rayCast([x_pos,y_pos, -100], [x_pos,y_pos, 100], 0.0, "trees", 0, 1, 0)
            if find_ray[0] != None: 
                size = (GameLogic.getRandomFloat() +0.5) * 5
                spawn.localScale = [ size, size, size]
                spawn.worldPosition = find_ray[1]
            else:
                spawn.endObject()

    starter.endObject()  
# the object with the "trees" property is a shaped mesh to show where the trees should be placed. it is simply part of 
#the ground I have selected , duplicated and seperated from the ground mesh.
# own['count'] is a property added to the  tree spawning object, it controls how many trees are placed.
  

It is not perfect yet, there is a bit of a pause when you first start the engine (as it runs through the (for in list) loop. But it does mean that the tree objects (“tree_1” etc…) use less memory when in game and you can add a level of detail script to them too.
This script could also be simplified to run faster, or there should be a way of placing all the trees, not just those that hit the “trees” placement mesh.- maybe another kind of loop back to a definded random location/ray function…

Haidme, for that, you go on the modifier tab, the apply it, then select the particles and the plane + Cntrl J!
The particles are instances though, make them unique first(i think i got to do it first…)
Hope it helped!
Edit: Just for interest sake:
When setting up your particles, make sure that, your objects up side is on Y axis. Set it as hair, add some value to normal, object, and random, select the objects or group as display! If a working example is needed I can quickly patch it!

Thanks guys, I think I found a solution, that works alright for me. Similar to what torakunsama said.