Показать сообщение отдельно
Старый 11.03.2011, 18:45   #2
DeeJex
Разработчик
 
Аватар для DeeJex
 
Регистрация: 24.02.2010
Адрес: Новороссийск
Сообщений: 485
Написано 112 полезных сообщений
(для 329 пользователей)
Ответ: Улучшенная функция тримеша

БЕЗНОГNМ
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)*EntityScaleX(mesh)
			PokeFloat vbank,nv*12+4,VertexY(surf,nvc)*EntityScaleY(mesh)
			PokeFloat vbank,nv*12+8,VertexZ(surf,nvc)*EntityScaleZ(mesh)
			nv = nv+1
		Next
		pnvv=pnvv+nvv-1
	Next
	bbb%=pxCreateTriMesh(vbank, fbank, nvert, nface,mass)
	FreeBank vbank
	FreeBank fbank
	Return bbb%
End Function

Function EntityScaleX#(ent%)  
    row=0 
    el1# = GetMatElement(ent,row,0)  
    el2# = GetMatElement(ent,row,1)  
    el3# = GetMatElement(ent,row,2)  
    Return Sqr(el1*el1+el2*el2+el3*el3)  
End Function 
Function EntityScaleY#(ent%)  
    row=1 
    el1# = GetMatElement(ent,row,0)  
    el2# = GetMatElement(ent,row,1)  
    el3# = GetMatElement(ent,row,2)  
    Return Sqr(el1*el1+el2*el2+el3*el3)  
End Function
Function EntityScaleZ#(ent%)
    row=2 
    el1# = GetMatElement(ent,row,0)  
    el2# = GetMatElement(ent,row,1)  
    el3# = GetMatElement(ent,row,2)  
    Return Sqr(el1*el1+el2*el2+el3*el3)  
End Function
Hint: убирает потребность в ResetXForm и проблемы с масштабами.
__________________
299 792 458
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Coks (11.03.2011)