pxCreateTriMesh
Почитал, что автор Render для BMax-а написал отдельный загрузчик Ткани pxCreateClothSpec
Сейчас я просто заменил строку Функции xConvertMeshToTrimesh на аналогичную загрузочку Ткани.
Ошибок загрузки нет.
Но при pxUpdateCloth() - ошибка.
Предполагаю что к Ткани не закреплёна Модель.
Global cloth_mesh=xLoadMesh("..\Media\pol.b3d")
cloth_tex=xLoadTexture("..\Media\rug512.jpg")
xEntityTexture cloth_mesh,cloth_tex
xEntityFX cloth_mesh,16 ;ЭТО ВАЖНО чтобы плоскость отображалась с двух сторон
xScaleMesh cloth_mesh,0.1,0.1,0.1
xPositionMesh cloth_mesh,0,8,0
Global cloth_body=xConvertMeshToCloth(cloth_mesh)
Global cloth_nvert=pxClothGetNumVertices(cloth_body) ;оптимизация чтобы не
Global cloth_vbank=CreateBank(cloth_nvert*4*3) ;повторять в цикле
pxClothAttachVertexToPos(cloth_body,399,-1,8,0)
pxClothAttachVertexToPos(cloth_body,440,1,8,0)
pxClothSetBendingStiffness(cloth_body,1)
~ ~ ~
Function xConvertMeshToCloth(mesh)
nsurf=xCountSurfaces(mesh)
nvert=0
nface=0
For ns=0 To nsurf-1
Local surf=xGetSurface(mesh,ns)
nface=nface+xCountTriangles(surf)
nvert=nvert +xCountVertices(surf)
Next
fbank=CreateBank(nface*4*3)
nf=0
vbank=CreateBank(nvert*4*3)
nv=0
pnvv=0
For ns=0 To nsurf-1
surf=xGetSurface(mesh,ns)
nfv=xCountTriangles(surf)
For nfc=0 To nfv -1
PokeInt fbank,nf*12+0,xTriangleVertex(surf,nfc,0)+pnvv+ns
PokeInt fbank,nf*12+4,xTriangleVertex(surf,nfc,1)+pnvv+ns
PokeInt fbank,nf*12+8,xTriangleVertex(surf,nfc,2)+pnvv+ns
nf=nf+1
Next
nvv=xCountVertices(surf)
For nvc=0 To nvv-1
PokeFloat vbank,nv*12+0,xVertexX(surf,nvc)*xEntityScaleX(mesh)
PokeFloat vbank,nv*12+4,xVertexY(surf,nvc)*xEntityScaleY(mesh)
PokeFloat vbank,nv*12+8,xVertexZ(surf,nvc)*xEntityScaleZ(mesh)
nv=nv+1
Next
pnvv=pnvv+nvv-1
Next
bbb%=[b]pxCreateClothSpec[/b](vbank,fbank,nvert,nface)
FreeBank vbank
FreeBank fbank
Return bbb%
End Function
эта писанина ныне не актуальна:
Пока вот думаю как закрепить Ткань на Модель.
Есть функция pxClothGetNormals(Cloth%, nbank*), но не знаю как её применить (в архиве bmax-а должен быть пример).
Посмотрел в исходник враппера, там в файле Blitzpx.cpp
на 3105 строке:
regularCloth->entityData = 0;
почему то не приписывается Entity к Cloth, хотя можно было бы (наверное) через функцию (при создании Ткани)
Обновление Ткани и её Модели читать ниже \/