játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5440
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2519

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2186
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
Korábbi postok
> 1 < [2] [3] [4] [5] [6]
B@z - Törzstag | 436 hsz       Online status #187263   2012.09.11 10:20 GMT+1 óra  
Helló!
Egy fizika editoron dolgozom, amivel interaktívan létre lehet hozni fizikai objektumokat egy testhez, és egy elég nagy gondba ütköztem.
Mégpedig abba, hogy nem találtam olyan fícsőrt a physxben, hogy tehetetlenség. Ami ugye szerintem elég alapnak kéne lennie..
Szóval a probléma az, ha van egy egyszerű rúd( kapszula ), aminek a tömegközéppontja a kapszula közepe, és a szélének adok egy erőt felfelé, akkor a kapszulám az életben elkezdene pörögni a középpont körül. Na valahogy ez physxben nem sikerül, ameddig a rúd másik vége a földön van, addig forog, amikor eltávolodott, egyszerűen repül felfelé az egész aktor..
Nem tudom mit csinálhatok rosszul, vagy maga a rendszer ilyen szar, de van valakinek megoldása erre? esetleg találkozott már valaki ilyennel?
Mellékelek egy gifet, hogy hogy néz ki physxben.

   
JagdTiger - Tag | 6 hsz       Online status #185646   2012.08.05 14:02 GMT+1 óra  
Hali,

Öö egészen véletlenül valaki nem találkozott olyan problémával, hogy ha egy NxActorDesc -nek beállít egy NxBodyDesc -et, akkor a létrejövő NxActor getGlobalOrientation() által visszaadott mátrixa és az NxActorDesc globalPose.M mátrixa teljesen eltérő lesz?

Kód:
// ha ezt benthagyom akkor az m33_1 és az m33_2 egyforma lesz
pmDesc.pActorDesc->body = nullptr;

const NxMat33& m33_1 = pmDesc.pActorDesc->globalPose.M;

_pNxActor = _pEngine->GetPhysxSubSystem()->GetScene()->createActor(*pmDesc.pActorDesc);

const NxMat33& m33_2 = _pNxActor->getGlobalOrientation();

   
pista75 - Tag | 144 hsz       Online status #158855   2011.08.08 14:34 GMT+1 óra  
Sziasztok.
Ez az error mit takar?
Exactly one of NDEBUG and _DEBUG needs to be defined by preprocessor

és hogy lehet eltüntetni?

   
pista75 - Tag | 144 hsz       Online status #157026   2011.07.23 17:20 GMT+1 óra  
Áhá szóval akkor erre valaó a .M
Köszönnöm a segítséget

   
HunTer - Tag | 18 hsz       Online status #157025   2011.07.23 14:59 GMT+1 óra  
Nálam így néz ki a dolog:
actorDesc-készítésekor megadom a pozíciót, és az elforgatást:
Kód:
if ( inDynamic )
{
// dinamikus
actorDesc.body = &bodyDesc;
actorDesc.density = inMass;
}
// statikus
actorDesc.globalPose.t.x = inObj->aPos.x;
actorDesc.globalPose.t.y = inObj->aPos.y;
actorDesc.globalPose.t.z = inObj->aPos.z;
NxMat33 mat;
actorDesc.globalPose.M.rotZ(inObj->aRot.z);
mat = actorDesc.globalPose.M;
actorDesc.globalPose.M.rotX(inObj->aRot.x);
mat = mat * actorDesc.globalPose.M;
actorDesc.globalPose.M.rotY(inObj->aRot.y);
mat = mat * actorDesc.globalPose.M;
actorDesc.globalPose.M = mat;
// ezt lehetett volna kicsit egyszerűbben is, mind1


És amikor az objektumok világmátrixát beállítom a fizika szerint, akkor
rendelem hozzá a skálázást:
Kód:
// update scene objects
float mat[16];
for (int r = 0; r < inScene->aObjCnt; r++)
{
if ( inScene->aObjects[r]->aActor != NULL )
{
inScene->aObjects[r]->aActor->getGlobalPose().getColumnMajor44( mat );
inScene->aObjects[r]->aWorldMat = inScene->aObjects[r]->aScaleMat * mat;
}
}
   
pista75 - Tag | 144 hsz       Online status #157020   2011.07.23 14:04 GMT+1 óra  
és a forgatást hogy oldod meg XD.
Én eddig így oldottam meg:
Kód:
ActorDesc.globalPose = wordmat;   

de mióta van nagyítás is benne, bezavarodott az egész .
A statikus objektumokat 2X nagyítja (csak a grafikusi mesht).
A dinamikusakat pedig nem abban a helyzetbe hozza be amikor elkezdem a szimulációt.

   
pista75 - Tag | 144 hsz       Online status #156982   2011.07.22 17:14 GMT+1 óra  
thx XD erre nem jöttem rá

   
HunTer - Tag | 18 hsz       Online status #156980   2011.07.22 16:39 GMT+1 óra  
Egyébként itt a skálázási problémáddal kapcsolatban ha jól értem egy modellt akarsz átméretezni, és főzni belőle valamit trimesh-t pl. Mert nálam amikor betöltöm a modellt, és elkészítem a vertex listát, akkor egyszerűen minden koordinátáját megszorzom a skálaértékkel. És akkor már egyszerűen lehet bármit főzni .
   
HunTer - Tag | 18 hsz       Online status #156978   2011.07.22 16:30 GMT+1 óra  
Igen, akkor látványos ha megyek, mert akkor az egész képernyő szaggat,
de ha mondjuk meglököm a szereket a pályán, akkor csak az akadozik.
A getTimeGet()-el már szívtam máskor, azóta a PhysX QueryPerformanceCounter-jét használom.
   
pista75 - Tag | 144 hsz       Online status #156977   2011.07.22 16:23 GMT+1 óra  
Próbáltam hogy előbb skálázom és utánna cookolm,de mindig visszaugrik az eredetibe...

   
syam - Törzstag | 1491 hsz       Online status #156976   2011.07.22 16:21 GMT+1 óra  
Idézet
pista75 :
syam:
A NxScaleCookedConvexMesh() arányosan növeli a modelt,de ha nekem nemarányosan kellen?



Akkor készítesz egy másik convex mesht és saját kódból kell skáláznod és azt is cookolni.
alias aalberik
   
pista75 - Tag | 144 hsz       Online status #156975   2011.07.22 16:16 GMT+1 óra  
Hun
De csak akkor akadozik ha mész?
Mert nekem is ezt csinálta getTimeGet()-es időzítésél.
Te milyet használsz?

syam:
A NxScaleCookedConvexMesh() arányosan növeli a modelt,de ha nekem nemarányosan kellen?

   
HunTer - Tag | 18 hsz       Online status #156974   2011.07.22 16:12 GMT+1 óra  
Köszi, az enyém is így néz ki, kivéve a deviceWindow beállítást, de az sem segített. Kipróbáltam 1440*900-ban, ugyanúgy laggol, mondjuk 800x600-ba egész sima volt . Az a furcsa, hogy
nem folyamatosan szaggat, csak néha, meg akkor ha oldalazva megyek, a másik meg, hogy fps van bőven és mégis... Ablakban 700FPS -t ír, és nem szaggat.

A kérdésedre válaszolva: nem, ruhával még nem foglalkoztam, csak járművekkel egy kicsit.
   
pista75 - Tag | 144 hsz       Online status #156968   2011.07.22 15:46 GMT+1 óra  
Idézet
HunTer :
Nemjó, a példaprogram OpenGL-t használ. Viszont lehet, hogy ez inkább DirectX probléma, és azért tűnik föl csak a játékos mozgatásánál, mert ugye akkor minden kirajzolt pixel változik. Valami a full screen init-nél sántít, de még nem tudom mi.
Azért köszi!


Szia.
Én fullcreen-be csináom(1440*900-as),és nekem nem szaggat.
A fullscrenn beállításai:
Kód:
t3d9->GetAdapterDisplayMode(D3DADAPTER_DEFAULT,&d3pm);
   ZeroMemory(&d3pp,sizeof(d3pp));
   //Teljes képernyős üzemmód
   d3pp.Windowed=FALSE;
   d3pp.hDeviceWindow=hwnd;
   d3pp.SwapEffect=D3DSWAPEFFECT_DISCARD;
   d3pp.EnableAutoDepthStencil= TRUE;
   d3pp.AutoDepthStencilFormat = D3DFMT_D16;
   d3pp.MultiSampleType = D3DMULTISAMPLE_4_SAMPLES;
   d3pp.BackBufferFormat = D3DFMT_X8R8G8B8;   
   d3pp.BackBufferWidth = screenWidth;   
   d3pp.BackBufferHeight = screenHeight;

  if(FAILED(t3d9->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hwnd,D3DCREATE_HARDWARE_VERTEXPROCESSING,&d3pp,&t3dd9)))
   {
   ::MessageBoxA(NULL,"Nem lehet lekérdezni az eszközt!!!",NULL,NULL);
   }

Nekem viszont a ruha és a soft body szimulálásával van gondom.
Te foglalkoztál vele?

Ezt a hozzászólást pista75 módosította (2011.07.22 16:13 GMT+1 óra, ---)

   
HunTer - Tag | 18 hsz       Online status #156961   2011.07.22 14:57 GMT+1 óra  
Nemjó, a példaprogram OpenGL-t használ. Viszont lehet, hogy ez inkább DirectX probléma, és azért tűnik föl csak a játékos mozgatásánál, mert ugye akkor minden kirajzolt pixel változik. Valami a full screen init-nél sántít, de még nem tudom mi.
Azért köszi!
   
syam - Törzstag | 1491 hsz       Online status #156959   2011.07.22 14:41 GMT+1 óra  
Próbáld meg a saját CC példájukkal ugyanezt a fullscreent megcsinálni.
alias aalberik
   
HunTer - Tag | 18 hsz       Online status #156957   2011.07.22 14:18 GMT+1 óra  
Pontosítok, viszont így már semmi ötletem sincs: ablakos módban, 1680x1050, 60Hz VSYNC -el nem szaggat. Nem értem, a két beállítás között csak annyi a különbség, hogy ablakos, vagy fullscreen... Passz
   
HunTer - Tag | 18 hsz       Online status #156956   2011.07.22 13:47 GMT+1 óra  
Üdv!
Egy motoron dolgozom, és laggolási problémáim vannak. A felállás az, hogy van DirectX, meg van PhysX, és ha ezekkel a beállításokkal futtatom: fullscreen, 1680 x 1050, 60Hz, VSYNC, akkor a játékos mozgása szaggat, de csak az, a többi objektum szépen mozog, az FPS is fix 60. (a játékos mozgatását a sima NxCharacterController-el oldottam meg, a példaprogram alapján) Ha viszont ablakos módban futtatom VSYNC nélkül, akkor jól működik. Én a vsync-re gyanakodtam, próbáltam már, hogy a PhysX szimulációját, nem számolt, hanem fix delta time-al hívom meg, de ez sem oldotta meg.
Környezet:
Visual C++
DirectX 9.0c
PhysX 2.8.4
Hát ez az én nagy problémám, ha valaki tud valamit segítsen plz... Előre is köszönöm!
   
syam - Törzstag | 1491 hsz       Online status #156682   2011.07.18 14:51 GMT+1 óra  
Skálázást nem tűri a fiziksz.
Már elkészült convex mesht NxScaleCookedConvexMesh-sel tudsz skálázni.
alias aalberik
   
pista75 - Tag | 144 hsz       Online status #156680   2011.07.18 14:14 GMT+1 óra  
Tud valaki segíteni?
Ha átméretezek 1 modellt,akkor megszűnik a fizikája,vagy ha elindul a szimuláció akkor ugyan olyan lesz mint előtte.
Próbáltam cooking előtt méretezni hátha az a baj,de semmi,mint ha nem támogatná a méretezést a physx.

   
pista75 - Tag | 144 hsz       Online status #155467   2011.07.04 14:24 GMT+1 óra  
hát nem értem.
Ezeket beállítom így:
Kód:
myBuff.verticesPosBegin         = &(mVertexBuffer[0].position.x);
myBuff.numVerticesPtr           = &mNumVertices;
stb.

de hogyan kapom meg ebből a dolgokat?

   
syam - Törzstag | 1491 hsz       Online status #155410   2011.07.03 18:01 GMT+1 óra  
Idézet
pista75 :
És hogyan tudom kivitelezni ezt?



A doksiban le van írva:
verticesPosBegin - ebben vannak xyz hármasként a generált vertex pozíciók.
numVerticesPtr - ennyi db vertexet generált, ami nem lehet több, mint maxVertices
indicesBegin - ebben vannak integerként a háromszögek. 3 db int egy háromszög.
numIndicesPtr - ennyi db indexed van vagyis numIndices / 3 db háromszög.

Ha szakítást is akarsz bele az külön téma.
alias aalberik
   
pista75 - Tag | 144 hsz       Online status #155398   2011.07.03 15:59 GMT+1 óra  
És hogyan tudom kivitelezni ezt?

Ezt a hozzászólást pista75 módosította (2011.07.03 16:28 GMT+1 óra, ---)

   
syam - Törzstag | 1491 hsz       Online status #155379   2011.07.03 13:13 GMT+1 óra  
Idézet
pista75 :
Sziasztok.
Most a ruha szimulálásnál tartok,de 1 valamit nem értek.
Hogyan töltöm visza a pozíziót a NxCloth ból a pozíciót a Modellembe?
az NxCloth nak nincs getGlobalPose() függvénye,csak getPosition() és getPositions() függvénye.
Ez azt jelenti hogy minden vertexnek külön kell betölteni a pozícióját?



Aha, szépen lemásolod, de ha jól emlékszem közvetlen hozzád is tudja másolni az adatokat.
alias aalberik
   
pista75 - Tag | 144 hsz       Online status #155376   2011.07.03 12:03 GMT+1 óra  
Sziasztok.
Most a ruha szimulálásnál tartok,de 1 valamit nem értek.
Hogyan töltöm visza a pozíziót a NxCloth ból a pozíciót a Modellembe?
az NxCloth nak nincs getGlobalPose() függvénye,csak getPosition() és getPositions() függvénye.
Ez azt jelenti hogy minden vertexnek külön kell betölteni a pozícióját?

   
syam - Törzstag | 1491 hsz       Online status #154878   2011.06.23 18:53 GMT+1 óra  
Idézet
pista75 :
thx erre nem jöttem volna rá magamtól
Ez már a forgást is tartalmazza ugye?



Aham, egy pozíció-orientáció mátrix^^
Más szemszögből nézve: model mátrix.
alias aalberik
   
pista75 - Tag | 144 hsz       Online status #154876   2011.06.23 17:58 GMT+1 óra  
thx erre nem jöttem volna rá magamtól
Ez már a forgást is tartalmazza ugye?

   
syam - Törzstag | 1491 hsz       Online status #154875   2011.06.23 17:56 GMT+1 óra  
Idézet
- Szimulációkor lekéred az actor pozíció-orientáció mátrixát és azzal transzformálod a grafikai mesht rajzoláskor.




getGlobalPose().getColumnMajor44 - ezzel OGL "stílusú" mátrixot kapsz.
D3Dhez gndlm RowMajor44 kell.
alias aalberik
   
pista75 - Tag | 144 hsz       Online status #154874   2011.06.23 17:46 GMT+1 óra  
Na itt találtam megoldást a konverzióra :http://forums.developer.nvidia.com/index.php?showtopic=1953&st=0&start=0

De ha jól látom ez mindig statikus objektumot ad.(ezt meg tudom már oldani,hogy ne csak ez legyen)

A probléma az hogy ha kiszámolja a dolgokat a physx-es meshre azt hogy tudom átadni a dx es meshnek?

   
pista75 - Tag | 144 hsz       Online status #154872   2011.06.23 12:04 GMT+1 óra  
ok akkor improvizálok,azét köszi a segítséget
Edit:
Na mind 1 hagyom,úgy is dolgoznom kellen XD

   
syam - Törzstag | 1491 hsz       Online status #154871   2011.06.23 11:59 GMT+1 óra  
A probláma legalább két részes:
- ki kellene nyerned a geometriát és topológiát a a dxmeshből - ebben nem vagyok kompetens, dx téma^^
- a kinyert adatot át kell adni egy megfelelő nx descriptornak.

Ha megvan a kinyert adat akkor szerintem a fiziksz sdk példái megmutatják, hogy kell csinálni.
Közvetlen tutorialt nem ismerek.
alias aalberik
   
pista75 - Tag | 144 hsz       Online status #154870   2011.06.23 11:50 GMT+1 óra  
Aha értem.
Nemtudsz valami tutorialt ami bemutatja hogy kell XD

   
syam - Törzstag | 1491 hsz       Online status #154869   2011.06.23 11:47 GMT+1 óra  
- El kell döntened milyen mesht (trimesh, convex mesh, egyéb) akarsz az actorhoz rendelni.
- Le kell gyártatnod a cookmesh-sel a fizikai mesht a grafikai meshből
- Szimulációkor lekéred az actor pozíció-orientáció mátrixát és azzal transzformálod a grafikai mesht rajzoláskor.

Nem egyszerű :]
alias aalberik
   
pista75 - Tag | 144 hsz       Online status #154867   2011.06.23 11:06 GMT+1 óra  
Szóval akkor a mesh csúcspontjait kell beletöltenem?
És akkor simán renderelek a Directx el és mennie kell?
Ezt most nem nagyon értem akkor ?
Akkor honnal tudja hogy melyik modell volt az aminek el kell mozdulnia?

   
syam - Törzstag | 1491 hsz       Online status #154866   2011.06.23 11:02 GMT+1 óra  
Idézet
Joga :
Én inkább ilyesmire tippelek:
Kód:
NxActor& operator=( NxActor& actor, LPD3DXMESH mesh)
{
   //konverzió elvégzése, stb
  return actor;
}




Jaja, igazad van
alias aalberik
   
Joga - Törzstag | 1791 hsz       Online status #154865   2011.06.23 10:50 GMT+1 óra  
Én inkább ilyesmire tippelek:
Kód:
NxActor& operator=( NxActor& actor, LPD3DXMESH mesh)
{
   //konverzió elvégzése, stb
  return actor;
}
(ಠ ›ಠ) Stewie!

   
syam - Törzstag | 1491 hsz       Online status #154864   2011.06.23 10:37 GMT+1 óra  
Kód:
NcActor& operator =(const LPD3DXMESH &mesh)
{
  NxActor *actor = new NxActor;
  ...
  return *actor;
}


Vagyis nincs automata konverzió a kettő között; le kell kódolni...
alias aalberik
   
pista75 - Tag | 144 hsz       Online status #154862   2011.06.23 10:09 GMT+1 óra  
Sziasztok
1 kérdés merült fel bennem,ami a dokumentációban nem volt.
1 LPD3DXMESH hogy tudok betölteni NxActor nak?
Egyszerűen így?
Kód:
NxActor valami = LPD3DXMESH  valami;

A segítséget előre is köszönöm

   
syam - Törzstag | 1491 hsz       Online status #154715   2011.06.21 16:17 GMT+1 óra  
Idézet
pista75 :
Ati hoz nem találtam drivet...
Kölcsönkérek a haveromtól 1 nvidiás kártyát megnézem azzal.
Ja még 1 kérdés és ha olyan a kártya hogy nem támogatja a physx-et akkor is futnia kellene?
Edit:
Ezt kellene felrakni?
http://www.nvidia.com/object/physx-9.10.0513-driver.html
és elméletileg menne is?



Igen és ennek bárhova fel kellene települnie + oda van írva, hogy hardveres fizikai gyorsítás GF8-tól felfelé van.
alias aalberik
   
pista75 - Tag | 144 hsz       Online status #154713   2011.06.21 16:05 GMT+1 óra  
Ati hoz nem találtam drivet...
Kölcsönkérek a haveromtól 1 nvidiás kártyát megnézem azzal.
Ja még 1 kérdés és ha olyan a kártya hogy nem támogatja a physx-et akkor is futnia kellene?
Edit:
Ezt kellene felrakni?
http://www.nvidia.com/object/physx-9.10.0513-driver.html
és elméletileg menne is?

   
syam - Törzstag | 1491 hsz       Online status #154712   2011.06.21 15:52 GMT+1 óra  
Idézet
pista75 :
Ha nincs nvidia kártyám akkor is működik a physx a CPU ról?



Telepítés után kellene neki^^
alias aalberik
   
pista75 - Tag | 144 hsz       Online status #154710   2011.06.21 15:07 GMT+1 óra  
Ha nincs nvidia kártyám akkor is működik a physx a CPU ról?

   
syam - Törzstag | 1491 hsz       Online status #151620   2011.05.06 14:28 GMT+1 óra  
Nézte már valaki a PhysX 3.0-t?
alias aalberik
   
misi - Törzstag | 971 hsz       Online status #98759   2008.11.09 06:33 GMT+1 óra  
a PhysX verzióra gondolsz? ( 2.8.1.4 ) Azt használom a mit a 10 demo-nál mellékelt.
   
dvorgaz - Törzstag | 575 hsz       Online status #98750   2008.11.09 05:07 GMT+1 óra  
Még nem sokat foglalkoztam vele, csak azt az aall-in-one sample-t néztem, az működött rendesen. Hogy abba van-e triangle betöltés, azt nem tudom. Amúgy nem lehet, hogy a physx system software verzióval van gond? Mintha írták volna az oldalon, hogy némelyikkel nem működik tökéletesen.
   
misi - Törzstag | 971 hsz       Online status #98739   2008.11.09 02:30 GMT+1 óra  
Abba hogy oldottad meg a triangle betöltéseket? Stream-el?. Nekem ott hibát ír ki ( valami olyat ,hogy védet memória terület.... ). Nincs valami ötlet?
   
dvorgaz - Törzstag | 575 hsz       Online status #98694   2008.11.08 13:57 GMT+1 óra  
PhysX 0.9.1 és XNA 2.0
Le vagyok maradva
   
misi - Törzstag | 971 hsz       Online status #98682   2008.11.08 13:00 GMT+1 óra  
dvorgaz melyik verzió? Ha a 10-es akkor hogy kelteted életre? XNA 3.0?
   
dvorgaz - Törzstag | 575 hsz       Online status #97385   2008.10.22 13:13 GMT+1 óra  
Oks, köszi, akkor megnézem a sample-ket.
   
nagyy - Törzstag | 248 hsz       Online status #97384   2008.10.22 12:57 GMT+1 óra  
Idézet

dvorgaz
A másik meg ha használta már ezt valaki, ugyanúgy működik mint a C++ verzió? Tehát a C++-os tutorokat elolvasom, azok (majdnem) ugyanúgy működni fognak mondjuk XNA-ban is?


Én használtam, nekem teljesen jól működött eddig. Letöltöttem a PhysX SDK-t, és az abban lévő sample-k, és API dokumentáció alapján sikerült boldogulni. Lényegében minden ugyanaz, csak rá kell jönni mit hogyan hívnak a wrapperben.
   
Korábbi postok
> 1 < [2] [3] [4] [5] [6]