forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=28)
-   -   Проблема с хуломи и тримешами. (http://forum.boolean.name/showthread.php?t=12053)

den 26.02.2010 21:17

Проблема с хуломи и тримешами.
 
Всем привет!:)
У меня возникла проблема с хуломи и тримешами в PhysX Wrapper для Blitz3D. Они просто неработают! Когда я включаю игру, где они есть, блиц выдаёт ошибку:
Цитата:

Memory access violation
В чём проблема?
Функции загрузки хулов и тримешей я брал из примеров учебника.
Для хула:
Код:

Function BodyCreateHull%(mesh%, mass#)

    Local nsurf = CountSurfaces(mesh)
    Local nvert = 0
    For ns = 1 To nsurf
        Local surf = GetSurface(mesh,ns)
        nvert = nvert + CountVertices(surf)
    Next
        vbank = CreateBank(nvert*4*3)
    nv = 0
    For ns = 1 To nsurf
        surf = GetSurface(mesh,ns)
        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
    Next
    Local bbb%= pxBodyCreateHull(vbank, nvert, mass)
    FreeBank vbank
    Return bbb
End Function

Для тримеша:
Код:

Function BodyCreateMesh(mesh%)
        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
        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)
                        PokeInt fbank,nf*12+4,TriangleVertex(surf,nfc,1)
                        PokeInt fbank,nf*12+8,TriangleVertex(surf,nfc,2)
                        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
        Next
        bbb%=pxCreateTriMesh(vbank, fbank, nvert, nface,0)
        FreeBank vbank
        FreeBank fbank
        Return bbb%
End Function


Dzirt 26.02.2010 21:20

Ответ: Проблема с хуломи и тримешами.
 
неплохо бы еще посмотреть как ты эти самые функции используешь в коде =\

is.SarCasm 26.02.2010 22:01

Ответ: Проблема с хуломи и тримешами.
 
Таже фигня. Ошибка вылетает на :
Цитата:

pxCreateTriMesh(vbank, fbank, nvert, nface,0)
или
Цитата:

pxBodyCreateHull(vbank, nvert, mass)

den 26.02.2010 22:20

Ответ: Проблема с хуломи и тримешами.
 
Так что же делать?:(
Подскажите плиз!:''((
З.Ы.: за правильность кода не переживайте, код я брал из примеров к учебнику товарища АВТОМАТа.:super:

ABTOMAT 26.02.2010 22:41

Ответ: Проблема с хуломи и тримешами.
 
Значит, наверное, количество вершин не то.
Посмотри, загрузилась ли модель, из которой ты делал банки для хуллов/мешей и т.д.
По телефону зубы лечить очень сложно.

.Squid 26.02.2010 23:26

Ответ: Проблема с хуломи и тримешами.
 
Может ты вообще версию для Ксорса используешь?

Randomize 27.02.2010 10:35

Ответ: Проблема с хуломи и тримешами.
 
http://forum.boolean.name/showthread.php?t=12008
Да. Я ведь не зря это писал?

den 27.02.2010 20:29

Ответ: Проблема с хуломи и тримешами.
 
Цитата:

Значит, наверное, количество вершин не то.
Посмотри, загрузилась ли модель, из которой ты делал банки для хуллов/мешей и т.д.
По телефону зубы лечить очень сложно.
Пример я скачал из твоего учебника, следовательно и модели там тоже твои (свои модели тоже неработают)

Цитата:

Может ты вообще версию для Ксорса используешь?
Нет, я использую версию для блица.

Цитата:

http://forum.boolean.name/showthread.php?t=12008
Да. Я ведь не зря это писал?
не помогло, и ктомуже мне надо чтоб физикс работал на чистом блице.

З.Ы.: всё работает ( и магниты, и примитивы, и джоинты, и матерьялы, и компаноиды(из примитивов), и всевозможные лучи силы импульсы, но только не ХУЛЫ и ТРИМЕШЫ!!!

ABTOMAT 27.02.2010 20:32

Ответ: Проблема с хуломи и тримешами.
 
Den
Цитата:

Посмотри, загрузилась ли модель, из которой ты делал банки для хуллов/мешей
Скриншоты дебаггера в студию

den 27.02.2010 20:47

Ответ: Проблема с хуломи и тримешами.
 
Вложений: 1
Вот держи картинку!:)
Вложение 9364

ABTOMAT 27.02.2010 21:19

Ответ: Проблема с хуломи и тримешами.
 
Срава разверни плюсиком дерево и найди там PxB и в нём mesh и body и скажи чему они равны.

den 27.02.2010 21:53

Ответ: Проблема с хуломи и тримешами.
 
mesh=12317992
body=0
Хммм, когда я немного упростил код, дебагер начал показывает ошибку в:

Код:

Function BodyCreateHull%(mesh%, mass#)

        Local nsurf = CountSurfaces(mesh)
        Local nvert = 0
        For ns = 1 To nsurf
                Local surf = GetSurface(mesh,ns)
                nvert = nvert + CountVertices(surf)
        Next
            vbank = CreateBank(nvert*4*3)
        nv = 0
        For ns = 1 To nsurf
                surf = GetSurface(mesh,ns)
                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
        Next
        Local bbb%= pxBodyCreateHull(vbank, nvert, mass)
        FreeBank vbank
        Return bbb
End Function

Для тримеша аналогично.
Именно здесь корень проблемы.

Randomize 27.02.2010 21:55

Ответ: Проблема с хуломи и тримешами.
 
Den, информация то где?
Не наезжай преждевременно на меня ок?
1) На какой строчке возникает мав
2) сколько треугольников у твоей модели
3) ты её загрузил как mesh или animmesh
4) Скринами не отделаешься, простейший пример демонстрирующий твою проблему в аттач.

upd. Спасибо, ты уловил суть.
Обнови враппер.
{
1) удали все DLL PhysX`а c компьютера
(Blitzpx.dll, NxCooking.dll, PhysXLoader.dll ищи их в папку Bin или Userlibs твоего Blitz3D)
2) Удали decls файл PhysX
3) Запихни по новой DLL в папку Bin блица и decls файл в Userlibs
4) Убедись в своей версии блица, она должна быть минимум 1.98 в остальных я не так уверен
5) если не поможет то только аттач.
}

den 27.02.2010 22:08

Ответ: Проблема с хуломи и тримешами.
 
Randomize,информация вот.
Так и быть , не буду на тебя наезжать.
1) на ту которую я выделел красным цветом.
Цитата:

pxCreateTriMesh(vbank, fbank, nvert, nface,0)
или
Цитата:

pxBodyCreateHull(vbank, nvert, mass)
2) штук 20
3) как mesh.
4) Повторяю, пример НЕ МОЙ!!! Я его скачал из примеров к учебнику товарища АВТОМАТАа :super: . Просто скачай любой пример из серии:
Цитата:

Хулл, или как сделать физическую модель в 3D Studio max'е
или
Цитата:

Trimesh или физическая модель невыпуклых тел.

Randomize 27.02.2010 22:13

Ответ: Проблема с хуломи и тримешами.
 
Вложений: 1
Мой пост #13 обновлён.
Пожалуйста скажи размеры DLL :
Blitzpx.dll
NxCooking.dll
PhysXLoader.dll
Может проблема в версии.
На всякий случай толькочто потестил и прикладываю свои DLL + Decls.
Они точно работают ;)
Вложение 9365


Часовой пояс GMT +4, время: 19:02.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot