Тема: Странное.
Показать сообщение отдельно
Старый 25.10.2011, 11:00   #175
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.



Function BuildTree()
gh=xLoadMesh("mesh/tree.b3d")
xEntityTexture gh,treetex
base=xCopyEntity (gh)
xScaleEntity base,2,1,2

MakeItCone(gh)



ph=xCreateCube()
xPositionMesh ph,0,1,0
xEntityAlpha ph,0.1
CreateChilds(ph,1,1)



For d=0 To xCountChildren(ph)-1
	child=xGetChild(ph,d)
	CreateChilds(child,0.6,0.5)
Next


For d=0 To xCountChildren(ph)-1
	child=xGetChild(ph,d)
		For z=0 To xCountChildren(child)-1
			childl2=xGetChild(child,z)
			CreateChilds(childl2,0.8,0.25)
		Next
Next

For d=0 To xCountChildren(ph)-1
	child=xGetChild(ph,d)
		For z=0 To xCountChildren(child)-1
			childl2=xGetChild(child,z)
				For x=0 To xCountChildren(childl2)-1
					childl3=xGetChild(childl2,x)
						CreateChilds(childl3,1.2,0.125)
				Next
		Next
Next
End Function

Function CreateChilds(child,zscale#,level#)
qbranches=Rand(1,4)
sdegree=Rand(0,359)
For i=0 To qbranches

pc=xCopyEntity(gh,child)
xPositionEntity pc,0,xMeshHeight(child)-0.01,0
xScaleEntity pc,level,zscale+Rnd(-0.1,0.1),level
xRotateEntity pc,40+Rnd(-15,15),sdegree+i*(360/(qbranches+1))+Rnd(-25,25),0 
Next
End Function
Но это глупо все-таки. По-моему надо замутить покореженный ствол с минимумом толстых корявых веток. На конце каждой ветки сделать типа моих камней только с низкой детализацией, и натыкать рандомно штук 10-20 двухсторонних квадов для имитации отдельных мелких веток. И все одной поверхностью. Ствол можно думать из сетки деформированной шумом перлина и свернутой в цилиндр, которую еще несколькими синусами вдоль игрека изогнуть и в переменно от высоты отскэйлить. То же и для веток. Должно получиться дешево и сердито.

У тебя кстати получилось похоже на алгоритм в котором есть несколько точек куда ветки должны более охотно расти.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Reizel (25.10.2011)