Показать сообщение отдельно
Старый 07.03.2011, 22:55   #1
Coks
Знающий
 
Регистрация: 29.05.2007
Сообщений: 227
Написано 126 полезных сообщений
(для 312 пользователей)
Улучшенная функция тримеша

Теперь тримешь без проблем строится из многосюрфейсных мешей:
Function BodyCreateMesh(mesh%, mass# = 0)
           nsurf = CountSurfaces(mesh)
	nvert = 0
	nface=0
	For ns = 1 To nsurf
		Local surf = GetSurface(mesh,ns)
		nface = nface+CountTriangles(surf)
		nvert = nvert +CountVertices(surf)
	Next

	fbank = CreateBank(nface*4*3)
	nf = 0
	vbank = CreateBank(nvert*4*3)
	nv = 0
	pnvv = 0
	For ns = 1 To nsurf
		surf = GetSurface(mesh,ns)
		nfv = CountTriangles(surf)
		For nfc = 0 To nfv -1
			PokeInt fbank,nf*12+0,TriangleVertex(surf,nfc,0)+pnvv+ns-1
			PokeInt fbank,nf*12+4,TriangleVertex(surf,nfc,1)+pnvv+ns-1
			PokeInt fbank,nf*12+8,TriangleVertex(surf,nfc,2)+pnvv+ns-1
			nf=nf+1
		Next

		nvv = CountVertices(surf)
		For nvc = 0 To nvv - 1
			PokeFloat vbank,nv*12+0,VertexX(surf,nvc)
			PokeFloat vbank,nv*12+4,VertexY(surf,nvc)
			PokeFloat vbank,nv*12+8,VertexZ(surf,nvc)
			nv = nv+1
		Next
		pnvv=pnvv+nvv-1
	Next
	bbb%=pxCreateTriMesh(vbank, fbank, nvert, nface,mass)
	FreeBank vbank
	FreeBank fbank
	Return bbb%
End Function

Последний раз редактировалось Coks, 08.03.2011 в 00:53.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Coks за это полезное сообщение:
ARA (07.03.2011), burovalex (08.04.2012), H@NON (10.03.2011)