БЕЗНОГ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 и проблемы с масштабами.