Это вопрос требующий некоторого времени для созерцания пародируемых объектов. даже у той же сосны начиная со второго левла ветвей идет уже не самая простая структура. Чем дольше думаю, тем меньше уверенности, что получится что-нить хотя бы качества моего недоландшафта. хотя идеи есть

пока для структуры сочинил это:

class tree{
/*
Вот у меня есть этот объект.
Что он должен знать?
Он должен суметь вычислить количество и позицию своих детей, угол поворота и масштаб для каждого ребенка.Знать родителя не должен.
*/
public:
static newgeom branch_mesh;
tree** child;
int number;
float3 pos;
float3 rot;
float3 scale;
//количество детей
int ch_num;
//constructor
tree(float3 p,float3 r,float3 s){
pos=p;
rot=r;
scale=s;
//это оно узнало, где оно и как в пространстве живет.
//теперь оно узнает где конец. Сейчас неюгеом настроен на меш длиной 32 юнита
float length=32;
//вычислю координаты конца this ветки
//для этого скопирую меш из меша
Handle mesh=xCopyMesh(branch_mesh.mesh);
xPositionEntity(mesh,pos.x,pos.y,pos.z);
xRotateEntity(mesh,rot.x,rot.y,rot.z);
xScaleEntity(mesh,scale.x,scale.y,scale.z);
xTFormPoint(0,length,0,mesh,0);
//безо всякой математики получилась нужная точка. Хвала разрабам.
float3 ch_pos(xTFormedX(),xTFormedY(),xTFormedZ());
//Пусть определится с количеством детей
ch_num=xRand(2,4);
//создам данные для детей это будет матрица флоат3 шириной в количество детей высотой в три
//первая строка позиция,вторая угол, третья масштаб.
float3 data[3][ch_num];
//заполню строку позиции
for(int i=0;i<ch_num;i++){data[0][i]=ch_pos;}
//теперь надо определиться с поворотом.
//очевидноБ что первое число отворот от оси родителя, а второе вращение
//пусть веточки растут через примерно равное кол-во градусов.
for(int i=0;i<ch_num;i++){data[1][i]=rot+float3(30.0+xRnd(-15,15),360.0*i/ch_num+xRnd(-15,15),0);}
//пусть считает итоговый скейл детенышей
for(int i=0;i<ch_num;i++){data[2][i]= scale*float3(0.5,0.5,0.5);}
//создание детей
child=new tree*[ch_num];
for(int i=0;i<ch_num;i++){child[i]=new tree(data[0][i],data[2][i],data[3][i]);}
...
}
В принципе ничто не мешает добавить то-же самое по длине ветви с рандомным смешением вдоль её тела. Но это плохой вариант, на один ствол уйдет не одна сотня тыщь полигонов при хоть какой-то детализации и это не считая листвы. Тут долго думать надо, быстрей было б накидать и раскрасить их в тридэмаксе.