Показать сообщение отдельно
Старый 22.11.2012, 23:43   #108
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Радость Ответ: Советы по оптимизации

УРААА!! Получилось! Вот я тугодум, два дня втыкал. Оказывается надо tForm для каждой координаты добавлять.
Мне кажется код нихрена не оптимальный. Ну хотя бы работает )
Function CloudCreate(x#,y#,z#,scale#=1,rotx#=0,roty#=0,rotz#=0)
cloud.cloud=New cloud
	cloud\x=x : cloud\y=y : cloud\z=z
	cloud\scale=scale
	cloud\rotx=rotx : cloud\roty=roty : cloud\rotz=rotz
	cloud\surface=surf
	xPositionEntity transPivot,cloud\x,cloud\y,cloud\z
	xRotateEntity transPivot,cloud\rotx,cloud\roty,0
	xScaleEntity transPivot,cloud\scale,cloud\scale,cloud\scale
	xTFormPoint(-1,1,0,transPivot,0)
	cloud\vertex[0]=xAddVertex(cloud\surface,xTFormedX(),xTFormedY(),xTFormedZ(),0,0)
	xTFormPoint(1,1,0,transPivot,0)
	cloud\vertex[1]=xAddVertex(cloud\surface,xTFormedX(),xTFormedY(),xTFormedZ(),1,0)
	xTFormPoint(1,-1,0,transPivot,0)
	cloud\vertex[2]=xAddVertex(cloud\surface,xTFormedX(),xTFormedY(),xTFormedZ(),1,1)
	xTFormPoint(-1,-1,0,transPivot,0)
	cloud\vertex[3]=xAddVertex(cloud\surface,xTFormedX(),xTFormedY(),xTFormedZ(),0,1)	
	tr1=xAddTriangle(cloud\surface,cloud\vertex[0],cloud\vertex[1],cloud\vertex[2]) 
	tr2=xAddTriangle(cloud\surface,cloud\vertex[0],cloud\vertex[2],cloud\vertex[3])
	tr3=xAddTriangle(cloud\surface,cloud\vertex[2],cloud\vertex[1],cloud\vertex[0]) 
	tr4=xAddTriangle(cloud\surface,cloud\vertex[3],cloud\vertex[2],cloud\vertex[0])
End Function

Function CloudUpdate(cloud.cloud)
xPositionEntity transPivot,cloud\x,cloud\y,cloud\z
xRotateEntity transPivot,cloud\rotx,cloud\roty,cloud\rotz
xTFormPoint(-1,1,0,transPivot,0)
xVertexCoords(cloud\surface,cloud\vertex[0],xTFormedX(),xTFormedY(),xTFormedZ())
xTFormPoint(1,1,0,transPivot,0)
xVertexCoords(cloud\surface,cloud\vertex[1],xTFormedX(),xTFormedY(),xTFormedZ())
xTFormPoint(1,-1,0,transPivot,0)
xVertexCoords(cloud\surface,cloud\vertex[2],xTFormedX(),xTFormedY(),xTFormedZ())
xTFormPoint(-1,-1,0,transPivot,0)
xVertexCoords(cloud\surface,cloud\vertex[3],xTFormedX(),xTFormedY(),xTFormedZ())
End Function
Доделал пример, не окончательный но 70к мешиков вытянул, местами подлагивает..
На качество травы не обращайте внимание, для примера, та же текстура только АльфаРеф накинул)
Качаем, комментируем!!
Вложения
Тип файла: rar SingleSurfTest2.rar (2.18 Мб, 378 просмотров)
__________________
(Offline)
 
Ответить с цитированием