From b25f2d9fdea60cd5ce0cd2c2d12f622c91e87f08 Mon Sep 17 00:00:00 2001 From: rarified Date: Sat, 27 Feb 2021 11:59:30 -0700 Subject: [PATCH] Clean up repository inconsistency with line endings for these files. --- .../Plasma/PubUtilLib/plGImage/HS_RECT.inc | 470 ++-- .../Plasma/PubUtilLib/plGImage/notes.txt | 2 +- .../Plasma/PubUtilLib/plIntersect/notes.txt | 6 +- .../Plasma/PythonLib/pyPlasma/pyPlasmaTest.py | 326 +-- MOULOpenSourceClientPlugin/README.txt | 76 +- .../StaticSDKs/Win32/PhysX/release_notes.html | 2084 ++++++++--------- 6 files changed, 1482 insertions(+), 1482 deletions(-) diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/HS_RECT.inc b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/HS_RECT.inc index 906e9105..d85b7b65 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/HS_RECT.inc +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/HS_RECT.inc @@ -1,235 +1,235 @@ - -struct HS_RECT_NAME { - HS_RECT_TYPE fLeft, fTop, fRight, fBottom; - - HS_RECT_TYPE Width() const { return fRight - fLeft; } - HS_RECT_TYPE Height() const { return fBottom - fTop; } - hsBool IsEmpty() const { return fLeft >= fRight || fTop >= fBottom; } - - void SetEmpty() { fLeft = fTop = fRight = fBottom = 0; } - HS_RECT_NAME* Set(HS_RECT_TYPE left, HS_RECT_TYPE top, HS_RECT_TYPE right, HS_RECT_TYPE bottom) - { - fLeft = left; fTop = top; fRight = right; fBottom = bottom; - return this; - } - HS_RECT_NAME* Set(const HS_RECT_POINT* p1, const HS_RECT_POINT* p2) - { - if (p1->fX < p2->fX) - { fLeft = p1->fX; - fRight = p2->fX; - } else - { fLeft = p2->fX; - fRight = p1->fX; - } - - if (p1->fY < p2->fY) - { fTop = p1->fY; - fBottom = p2->fY; - } else - { fTop = p2->fY; - fBottom = p1->fY; - } - return this; - } - HS_RECT_NAME* Set(UInt32 count, const HS_RECT_POINT pts[]) - { - if (count > 0) - { fLeft = fRight = pts[0].fX; - fTop = fBottom = pts[0].fY; - (void)this->Union(count - 1, &pts[1]); - } - return this; - } - - hsBool Contains(HS_RECT_TYPE x, HS_RECT_TYPE y) const - { - return x >= fLeft && x < fRight && y >= fTop && y < fBottom; - } - hsBool Contains(const HS_RECT_POINT* p) const - { - return this->Contains(p->fX, p->fY); - } - hsBool Contains(const HS_RECT_NAME* r) const - { - return fLeft <= r->fLeft && fTop <= r->fTop && fRight >= r->fRight && fBottom >= r->fBottom; - } - hsBool Contains(HS_RECT_TYPE left, HS_RECT_TYPE top, HS_RECT_TYPE right, HS_RECT_TYPE bottom) const - { - return fLeft <= left && fTop <= top && fRight >= right && fBottom >= bottom; - } - HS_RECT_NAME* Offset(HS_RECT_TYPE dx, HS_RECT_TYPE dy) - { - fLeft += dx; fTop += dy; fRight += dx; fBottom += dy; - return this; - } - HS_RECT_NAME* MoveTo(HS_RECT_TYPE x, HS_RECT_TYPE y) - { - this->fRight += x - this->fLeft; - this->fBottom += y - this->fTop; - this->fLeft = x; - this->fTop = y; - return this; - } - HS_RECT_NAME* Inset(HS_RECT_TYPE dx, HS_RECT_TYPE dy) - { - fLeft += dx; fRight -= dx; - fTop += dy; fBottom -= dy; - return this; - } - - HS_RECT_NAME* UnionX(HS_RECT_TYPE x) - { - if (x < fLeft) fLeft = x; else - if (x > fRight) fRight = x; - return this; - } - HS_RECT_NAME* UnionY(HS_RECT_TYPE y) - { - if (y < fTop) fTop = y; else - if (y > fBottom) fBottom = y; - return this; - } - HS_RECT_NAME* Union(const HS_RECT_NAME* r) - { - if (r->fLeft < fLeft) fLeft = r->fLeft; - if (r->fTop < fTop) fTop = r->fTop; - if (r->fRight > fRight) fRight = r->fRight; - if (r->fBottom > fBottom) fBottom = r->fBottom; - return this; - } - HS_RECT_NAME* Union(const HS_RECT_POINT* p) - { - if (p->fX < fLeft) fLeft = p->fX; - if (p->fX > fRight) fRight = p->fX; - if (p->fY < fTop) fTop = p->fY; - if (p->fY> fBottom) fBottom = p->fY; - return this; - } - HS_RECT_NAME* Union(UInt32 count, const HS_RECT_POINT p[]) - { - HS_RECT_TYPE left = this->fLeft; - HS_RECT_TYPE top = this->fTop; - HS_RECT_TYPE right = this->fRight; - HS_RECT_TYPE bottom = this->fBottom; - - for (; count > 0; ++p, --count) - { HS_RECT_TYPE value = p->fX; - if (value < left) left = value; - else if (value > right) right = value; - - value = p->fY; - if (value < top) top = value; - else if (value > bottom) bottom = value; - } - return this->Set(left, top, right, bottom); - } - -#if 0 // Havok reeks - friend int operator==(const HS_RECT_NAME& a, const HS_RECT_NAME& b) - { - return a.fLeft == b.fLeft && a.fTop == b.fTop && - a.fRight == b.fRight && a.fBottom == b.fBottom; - } - friend int operator!=(const HS_RECT_NAME& a, const HS_RECT_NAME& b) - { - return !(a == b); - } -#else // Havok reeks - int operator==(const HS_RECT_NAME& aa) const - { - return aa.fLeft == fLeft && aa.fTop == fTop && - aa.fRight == fRight && aa.fBottom == fBottom; - } - int operator!=(const HS_RECT_NAME& aa) const - { - return !(aa == *this); - } -#endif // Havok reeks - - // Intersect Test - friend int operator&&(const HS_RECT_NAME& a, const HS_RECT_NAME& b) - { - return a.fLeft < b.fRight && a.fRight > b.fLeft && - a.fTop < b.fBottom && a.fBottom > b.fTop; - } - - hsBool Intersect(const HS_RECT_NAME* r) - { - return this->Intersect(r->fLeft, r->fTop, r->fRight, r->fBottom); - } - hsBool Intersect(HS_RECT_TYPE left, HS_RECT_TYPE top, HS_RECT_TYPE right, HS_RECT_TYPE bottom) - { - if (left < fRight && top < fBottom && fLeft < right && fTop < bottom) - { if (left > fLeft) fLeft = left; - if (top > fTop) fTop = top; - if (right < fRight) fRight = right; - if (bottom < fBottom) fBottom = bottom; - return true; - } - return false; - } - hsBool Intersect(const HS_RECT_NAME* a, const HS_RECT_NAME* b) - { - if (a->fLeft < b->fRight && a->fTop < b->fBottom && b->fLeft < a->fRight && b->fTop < a->fBottom) - { *this = *b; - if (a->fLeft > fLeft) fLeft = a->fLeft; - if (a->fTop > fTop) fTop = a->fTop; - if (a->fRight < fRight) fRight = a->fRight; - if (a->fBottom < fBottom) fBottom = a->fBottom; - return true; - } - return false; // "this" is not changed - } - - HS_RECT_POINT* ToQuad(HS_RECT_POINT quad[4]) const - { - quad[0].fX = fLeft; quad[0].fY = fTop; - quad[1].fX = fRight; quad[1].fY = fTop; - quad[2].fX = fRight; quad[2].fY = fBottom; - quad[3].fX = fLeft; quad[3].fY = fBottom; - return quad; - } - - hsBool CornerTest(const HS_RECT_NAME* area, - HS_RECT_POINT* hitPt = nil, HS_RECT_POINT* oppositePt = nil) const - { - if (area->Contains(fLeft, fTop)) - { if (hitPt) hitPt->Set(fLeft, fTop); - if (oppositePt) oppositePt->Set(fRight, fBottom); - return true; - } - if (area->Contains(fLeft, fBottom)) - { if (hitPt) hitPt->Set(fLeft, fBottom); - if (oppositePt) oppositePt->Set(fRight, fTop); - return true; - } - if (area->Contains(fRight, fTop)) - { if (hitPt) hitPt->Set(fRight, fTop); - if (oppositePt) oppositePt->Set(fLeft, fBottom); - return true; - } - if (area->Contains(fRight, fBottom)) - { if (hitPt) hitPt->Set(fRight, fBottom); - if (oppositePt) oppositePt->Set(fLeft, fTop); - return true; - } - return false; - } - hsBool CornerTest(HS_RECT_POINT* pt, HS_RECT_TYPE tolerance, - HS_RECT_POINT* hitPt = nil, HS_RECT_POINT* oppositePt = nil) const - { - HS_RECT_NAME area = { pt->fX - tolerance, pt->fY - tolerance, - pt->fX + tolerance, pt->fY + tolerance }; - - return this->CornerTest(&area, hitPt, oppositePt); - } - -#if !(HS_RECT_EXTEND) -}; -#endif - -#undef HS_RECT_NAME -#undef HS_RECT_POINT -#undef HS_RECT_TYPE -#undef HS_RECT_EXTEND - + +struct HS_RECT_NAME { + HS_RECT_TYPE fLeft, fTop, fRight, fBottom; + + HS_RECT_TYPE Width() const { return fRight - fLeft; } + HS_RECT_TYPE Height() const { return fBottom - fTop; } + hsBool IsEmpty() const { return fLeft >= fRight || fTop >= fBottom; } + + void SetEmpty() { fLeft = fTop = fRight = fBottom = 0; } + HS_RECT_NAME* Set(HS_RECT_TYPE left, HS_RECT_TYPE top, HS_RECT_TYPE right, HS_RECT_TYPE bottom) + { + fLeft = left; fTop = top; fRight = right; fBottom = bottom; + return this; + } + HS_RECT_NAME* Set(const HS_RECT_POINT* p1, const HS_RECT_POINT* p2) + { + if (p1->fX < p2->fX) + { fLeft = p1->fX; + fRight = p2->fX; + } else + { fLeft = p2->fX; + fRight = p1->fX; + } + + if (p1->fY < p2->fY) + { fTop = p1->fY; + fBottom = p2->fY; + } else + { fTop = p2->fY; + fBottom = p1->fY; + } + return this; + } + HS_RECT_NAME* Set(UInt32 count, const HS_RECT_POINT pts[]) + { + if (count > 0) + { fLeft = fRight = pts[0].fX; + fTop = fBottom = pts[0].fY; + (void)this->Union(count - 1, &pts[1]); + } + return this; + } + + hsBool Contains(HS_RECT_TYPE x, HS_RECT_TYPE y) const + { + return x >= fLeft && x < fRight && y >= fTop && y < fBottom; + } + hsBool Contains(const HS_RECT_POINT* p) const + { + return this->Contains(p->fX, p->fY); + } + hsBool Contains(const HS_RECT_NAME* r) const + { + return fLeft <= r->fLeft && fTop <= r->fTop && fRight >= r->fRight && fBottom >= r->fBottom; + } + hsBool Contains(HS_RECT_TYPE left, HS_RECT_TYPE top, HS_RECT_TYPE right, HS_RECT_TYPE bottom) const + { + return fLeft <= left && fTop <= top && fRight >= right && fBottom >= bottom; + } + HS_RECT_NAME* Offset(HS_RECT_TYPE dx, HS_RECT_TYPE dy) + { + fLeft += dx; fTop += dy; fRight += dx; fBottom += dy; + return this; + } + HS_RECT_NAME* MoveTo(HS_RECT_TYPE x, HS_RECT_TYPE y) + { + this->fRight += x - this->fLeft; + this->fBottom += y - this->fTop; + this->fLeft = x; + this->fTop = y; + return this; + } + HS_RECT_NAME* Inset(HS_RECT_TYPE dx, HS_RECT_TYPE dy) + { + fLeft += dx; fRight -= dx; + fTop += dy; fBottom -= dy; + return this; + } + + HS_RECT_NAME* UnionX(HS_RECT_TYPE x) + { + if (x < fLeft) fLeft = x; else + if (x > fRight) fRight = x; + return this; + } + HS_RECT_NAME* UnionY(HS_RECT_TYPE y) + { + if (y < fTop) fTop = y; else + if (y > fBottom) fBottom = y; + return this; + } + HS_RECT_NAME* Union(const HS_RECT_NAME* r) + { + if (r->fLeft < fLeft) fLeft = r->fLeft; + if (r->fTop < fTop) fTop = r->fTop; + if (r->fRight > fRight) fRight = r->fRight; + if (r->fBottom > fBottom) fBottom = r->fBottom; + return this; + } + HS_RECT_NAME* Union(const HS_RECT_POINT* p) + { + if (p->fX < fLeft) fLeft = p->fX; + if (p->fX > fRight) fRight = p->fX; + if (p->fY < fTop) fTop = p->fY; + if (p->fY> fBottom) fBottom = p->fY; + return this; + } + HS_RECT_NAME* Union(UInt32 count, const HS_RECT_POINT p[]) + { + HS_RECT_TYPE left = this->fLeft; + HS_RECT_TYPE top = this->fTop; + HS_RECT_TYPE right = this->fRight; + HS_RECT_TYPE bottom = this->fBottom; + + for (; count > 0; ++p, --count) + { HS_RECT_TYPE value = p->fX; + if (value < left) left = value; + else if (value > right) right = value; + + value = p->fY; + if (value < top) top = value; + else if (value > bottom) bottom = value; + } + return this->Set(left, top, right, bottom); + } + +#if 0 // Havok reeks + friend int operator==(const HS_RECT_NAME& a, const HS_RECT_NAME& b) + { + return a.fLeft == b.fLeft && a.fTop == b.fTop && + a.fRight == b.fRight && a.fBottom == b.fBottom; + } + friend int operator!=(const HS_RECT_NAME& a, const HS_RECT_NAME& b) + { + return !(a == b); + } +#else // Havok reeks + int operator==(const HS_RECT_NAME& aa) const + { + return aa.fLeft == fLeft && aa.fTop == fTop && + aa.fRight == fRight && aa.fBottom == fBottom; + } + int operator!=(const HS_RECT_NAME& aa) const + { + return !(aa == *this); + } +#endif // Havok reeks + + // Intersect Test + friend int operator&&(const HS_RECT_NAME& a, const HS_RECT_NAME& b) + { + return a.fLeft < b.fRight && a.fRight > b.fLeft && + a.fTop < b.fBottom && a.fBottom > b.fTop; + } + + hsBool Intersect(const HS_RECT_NAME* r) + { + return this->Intersect(r->fLeft, r->fTop, r->fRight, r->fBottom); + } + hsBool Intersect(HS_RECT_TYPE left, HS_RECT_TYPE top, HS_RECT_TYPE right, HS_RECT_TYPE bottom) + { + if (left < fRight && top < fBottom && fLeft < right && fTop < bottom) + { if (left > fLeft) fLeft = left; + if (top > fTop) fTop = top; + if (right < fRight) fRight = right; + if (bottom < fBottom) fBottom = bottom; + return true; + } + return false; + } + hsBool Intersect(const HS_RECT_NAME* a, const HS_RECT_NAME* b) + { + if (a->fLeft < b->fRight && a->fTop < b->fBottom && b->fLeft < a->fRight && b->fTop < a->fBottom) + { *this = *b; + if (a->fLeft > fLeft) fLeft = a->fLeft; + if (a->fTop > fTop) fTop = a->fTop; + if (a->fRight < fRight) fRight = a->fRight; + if (a->fBottom < fBottom) fBottom = a->fBottom; + return true; + } + return false; // "this" is not changed + } + + HS_RECT_POINT* ToQuad(HS_RECT_POINT quad[4]) const + { + quad[0].fX = fLeft; quad[0].fY = fTop; + quad[1].fX = fRight; quad[1].fY = fTop; + quad[2].fX = fRight; quad[2].fY = fBottom; + quad[3].fX = fLeft; quad[3].fY = fBottom; + return quad; + } + + hsBool CornerTest(const HS_RECT_NAME* area, + HS_RECT_POINT* hitPt = nil, HS_RECT_POINT* oppositePt = nil) const + { + if (area->Contains(fLeft, fTop)) + { if (hitPt) hitPt->Set(fLeft, fTop); + if (oppositePt) oppositePt->Set(fRight, fBottom); + return true; + } + if (area->Contains(fLeft, fBottom)) + { if (hitPt) hitPt->Set(fLeft, fBottom); + if (oppositePt) oppositePt->Set(fRight, fTop); + return true; + } + if (area->Contains(fRight, fTop)) + { if (hitPt) hitPt->Set(fRight, fTop); + if (oppositePt) oppositePt->Set(fLeft, fBottom); + return true; + } + if (area->Contains(fRight, fBottom)) + { if (hitPt) hitPt->Set(fRight, fBottom); + if (oppositePt) oppositePt->Set(fLeft, fTop); + return true; + } + return false; + } + hsBool CornerTest(HS_RECT_POINT* pt, HS_RECT_TYPE tolerance, + HS_RECT_POINT* hitPt = nil, HS_RECT_POINT* oppositePt = nil) const + { + HS_RECT_NAME area = { pt->fX - tolerance, pt->fY - tolerance, + pt->fX + tolerance, pt->fY + tolerance }; + + return this->CornerTest(&area, hitPt, oppositePt); + } + +#if !(HS_RECT_EXTEND) +}; +#endif + +#undef HS_RECT_NAME +#undef HS_RECT_POINT +#undef HS_RECT_TYPE +#undef HS_RECT_EXTEND + diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/notes.txt b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/notes.txt index ab6efca9..50992e46 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/notes.txt +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/notes.txt @@ -1,2 +1,2 @@ - + Moving hsRect here since it doesn't have a lot to do with transforms. mf \ No newline at end of file diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/notes.txt b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/notes.txt index b0a68729..65860c27 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/notes.txt +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plIntersect/notes.txt @@ -1,4 +1,4 @@ - -Collection of geometry intersection routines between various primitives, e.g. TriList/Box, Box/Box, Box/Sphere, etc. - + +Collection of geometry intersection routines between various primitives, e.g. TriList/Box, Box/Box, Box/Sphere, etc. + Mesh types will often convert themselves to appropriate type, and call from this lib when queried for intersection. \ No newline at end of file diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyPlasma/pyPlasmaTest.py b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyPlasma/pyPlasmaTest.py index f8f1e2b3..147c9bb6 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyPlasma/pyPlasmaTest.py +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PythonLib/pyPlasma/pyPlasmaTest.py @@ -1,163 +1,163 @@ -""" *==LICENSE==* - -CyanWorlds.com Engine - MMOG client, server and tools -Copyright (C) 2011 Cyan Worlds, Inc. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Additional permissions under GNU GPL version 3 section 7 - -If you modify this Program, or any covered work, by linking or -combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, -NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent -JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK -(or a modified version of those libraries), -containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, -PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG -JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the -licensors of this Program grant you additional -permission to convey the resulting work. Corresponding Source for a -non-source form of such a combination shall include the source code for -the parts of OpenSSL and IJG JPEG Library used as well as that of the covered -work. - -You can contact Cyan Worlds, Inc. by email legal@cyan.com - or by snail mail at: - Cyan Worlds, Inc. - 14617 N Newport Hwy - Mead, WA 99021 - - *==LICENSE==* """ -from pyPlasma import * -from pyPlasmaHelpers import * -from traceback import print_exc - -kLogToDebugger = 32 -kPeristentNode = 1 -kTransientNode = 0 -kQuittingGame = 7 -kLinkingOut = 8 -kExitingLobby = 9 - -#------------------------------------- - -print "BEGIN" - -# create client-side networking -net = ptNetClientComm() -# init log. this must be done before creating the vault manager -net.setLog("pyPlasmaTest.log", kLogToDebugger ) -# create vault manager -#vault = ptPlayerVNodeMgr(net) -vault = ptAdminVNodeMgr(net) -vault.setWantGlobalSDL(1) -vault.setWantAllPlayers(1) -# create the NetClientMgr. -nc = NetClientMgr(net) -# create the VaultConnectMgr -vc = VaultConnectMgr(vault) - -# startup networking -print "Net: starting up..." -net.init() -print "Net: started" - -# point to lobby server -net.setActiveServer('ea1-2k',5000) -# set acct username/password -net.setAuthInfo('reseng0221','tooann42') -# specify the name of player we want to use. -nc.setDesiredPlayer('Scooby5',1) - -#------------------ -success = 0 - -while 1: - try: - # login to the lobby server - if nc.login(NetClientMgr.kLobby)<0: break - - # connect to vault - if vc.connect()<0: break - # get root node - rootNode = vault.getRootNode() - print rootNode - # create a template node for finding the global sdl folder node - tmpNode = vault.createNode(PtVaultNodeTypes.kFolderNode,kTransientNode).upcastToFolderNode() - tmpNode.setFolderType(PtVaultStandardNodes.kAllAgeGlobalSDLNodesFolder) - # find global SDL folder - globalSDLFolder = vault.findNode(tmpNode) - if globalSDLFolder: - globalSDLFolder = globalSDLFolder.upcastToFolderNode() - print globalSDLFolder - - # startup an age or three (forces global sdl nodes to initialize) - ageLink = ptAgeLinkStruct() - # ageLink.getAgeInfo().setAgeFilename('Teledahn') - # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete - # ageLink.getAgeInfo().setAgeFilename('city') - # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete - # ageLink.getAgeInfo().setAgeFilename('Personal') - # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete - # ageLink.getAgeInfo().setAgeFilename('Garden') - # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete - # ageLink.getAgeInfo().setAgeFilename('BaronCityOffice') - # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete - # ageLink.getAgeInfo().setAgeFilename('Kadish') - # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete - # ageLink.getAgeInfo().setAgeFilename('Neighborhood') - # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete - # ageLink.getAgeInfo().setAgeFilename('Cleft') - # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete - # ageLink.getAgeInfo().setAgeFilename('Garrison') - # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete - - # spawn a game - ageLink.getAgeInfo().setAgeFilename('Teledahn') - ageLink.setLinkingRules(PtLinkingRules.kOriginalBook) - if nc.findAge(ageLink)<0: break - serverInfo = nc.fCbArgs[0] - - # leave the lobby - nc.logout(kExitingLobby) - - # log into the game server - net.setActiveServer(serverInfo) - if nc.login(NetClientMgr.kGame)<0: break - - # join the age - if nc.joinAge()<0: break - - # done trying things - success = 1 - break - except: - print_exc() - break - -# disconnect from vault -vc.disconnect() -# leave the server -nc.logout(kQuittingGame) - -#------------------ - -# shutdown networking. only flush msgs if all went well (not required, but speeds up shutdown on error) -print "Net: shutting down..." -net.fini(success) -print "Net: shut down" - - -print "END" -raw_input("\npress return") +""" *==LICENSE==* + +CyanWorlds.com Engine - MMOG client, server and tools +Copyright (C) 2011 Cyan Worlds, Inc. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +Additional permissions under GNU GPL version 3 section 7 + +If you modify this Program, or any covered work, by linking or +combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, +NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent +JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK +(or a modified version of those libraries), +containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, +PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG +JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the +licensors of this Program grant you additional +permission to convey the resulting work. Corresponding Source for a +non-source form of such a combination shall include the source code for +the parts of OpenSSL and IJG JPEG Library used as well as that of the covered +work. + +You can contact Cyan Worlds, Inc. by email legal@cyan.com + or by snail mail at: + Cyan Worlds, Inc. + 14617 N Newport Hwy + Mead, WA 99021 + + *==LICENSE==* """ +from pyPlasma import * +from pyPlasmaHelpers import * +from traceback import print_exc + +kLogToDebugger = 32 +kPeristentNode = 1 +kTransientNode = 0 +kQuittingGame = 7 +kLinkingOut = 8 +kExitingLobby = 9 + +#------------------------------------- + +print "BEGIN" + +# create client-side networking +net = ptNetClientComm() +# init log. this must be done before creating the vault manager +net.setLog("pyPlasmaTest.log", kLogToDebugger ) +# create vault manager +#vault = ptPlayerVNodeMgr(net) +vault = ptAdminVNodeMgr(net) +vault.setWantGlobalSDL(1) +vault.setWantAllPlayers(1) +# create the NetClientMgr. +nc = NetClientMgr(net) +# create the VaultConnectMgr +vc = VaultConnectMgr(vault) + +# startup networking +print "Net: starting up..." +net.init() +print "Net: started" + +# point to lobby server +net.setActiveServer('ea1-2k',5000) +# set acct username/password +net.setAuthInfo('reseng0221','tooann42') +# specify the name of player we want to use. +nc.setDesiredPlayer('Scooby5',1) + +#------------------ +success = 0 + +while 1: + try: + # login to the lobby server + if nc.login(NetClientMgr.kLobby)<0: break + + # connect to vault + if vc.connect()<0: break + # get root node + rootNode = vault.getRootNode() + print rootNode + # create a template node for finding the global sdl folder node + tmpNode = vault.createNode(PtVaultNodeTypes.kFolderNode,kTransientNode).upcastToFolderNode() + tmpNode.setFolderType(PtVaultStandardNodes.kAllAgeGlobalSDLNodesFolder) + # find global SDL folder + globalSDLFolder = vault.findNode(tmpNode) + if globalSDLFolder: + globalSDLFolder = globalSDLFolder.upcastToFolderNode() + print globalSDLFolder + + # startup an age or three (forces global sdl nodes to initialize) + ageLink = ptAgeLinkStruct() + # ageLink.getAgeInfo().setAgeFilename('Teledahn') + # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete + # ageLink.getAgeInfo().setAgeFilename('city') + # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete + # ageLink.getAgeInfo().setAgeFilename('Personal') + # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete + # ageLink.getAgeInfo().setAgeFilename('Garden') + # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete + # ageLink.getAgeInfo().setAgeFilename('BaronCityOffice') + # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete + # ageLink.getAgeInfo().setAgeFilename('Kadish') + # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete + # ageLink.getAgeInfo().setAgeFilename('Neighborhood') + # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete + # ageLink.getAgeInfo().setAgeFilename('Cleft') + # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete + # ageLink.getAgeInfo().setAgeFilename('Garrison') + # nc.startFindingAge(ageLink) # we don't need to wait around for the operation to complete + + # spawn a game + ageLink.getAgeInfo().setAgeFilename('Teledahn') + ageLink.setLinkingRules(PtLinkingRules.kOriginalBook) + if nc.findAge(ageLink)<0: break + serverInfo = nc.fCbArgs[0] + + # leave the lobby + nc.logout(kExitingLobby) + + # log into the game server + net.setActiveServer(serverInfo) + if nc.login(NetClientMgr.kGame)<0: break + + # join the age + if nc.joinAge()<0: break + + # done trying things + success = 1 + break + except: + print_exc() + break + +# disconnect from vault +vc.disconnect() +# leave the server +nc.logout(kQuittingGame) + +#------------------ + +# shutdown networking. only flush msgs if all went well (not required, but speeds up shutdown on error) +print "Net: shutting down..." +net.fini(success) +print "Net: shut down" + + +print "END" +raw_input("\npress return") diff --git a/MOULOpenSourceClientPlugin/README.txt b/MOULOpenSourceClientPlugin/README.txt index b98a9b9e..3f9cae27 100644 --- a/MOULOpenSourceClientPlugin/README.txt +++ b/MOULOpenSourceClientPlugin/README.txt @@ -1,38 +1,38 @@ -/*==README.txt== - -About Non-Free Libraries: - -This software uses some non-free libraries for which exceptions appear in the -source code license inserts. It is suggested that anyone who thinks of doing -substantial further work on this program should first free it from dependence -on the non-free libraries so that it does the same job without the non-free -libraries. Further introduction of non-free libraries likely would require a -revised license and thus permission from all contributors to the codebase. -That being problematic, any additional non-free libraries are unlikely to be -accepted by Cyan Worlds or the development community. - -Acknowledgements: - -OPENSSL: - -This product includes software developed by the OpenSSL Project for use in -the OpenSSL Toolkit (http://www.openssl.org/). This product includes -cryptographic software written by Eric A. Young (eay@cryptsoft.com). This -product includes software written by Tim J. Hudson (tjh@cryptsoft.com)." - -Independent JPEG Group (IJG) JPEG Library: - -This software is based in part on the work of the Independent JPEG Group. - -Jani Kajala: - -Copyright (c) 2001 Jani Kajala - -Permission to use, copy, modify, distribute and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that copyright -notice and this permission notice appear in supporting documentation. Jani -Kajala makes no representations about the suitability of this software for -any purpose. It is provided "as is" without express or implied warranty. - -*==README==*/ +/*==README.txt== + +About Non-Free Libraries: + +This software uses some non-free libraries for which exceptions appear in the +source code license inserts. It is suggested that anyone who thinks of doing +substantial further work on this program should first free it from dependence +on the non-free libraries so that it does the same job without the non-free +libraries. Further introduction of non-free libraries likely would require a +revised license and thus permission from all contributors to the codebase. +That being problematic, any additional non-free libraries are unlikely to be +accepted by Cyan Worlds or the development community. + +Acknowledgements: + +OPENSSL: + +This product includes software developed by the OpenSSL Project for use in +the OpenSSL Toolkit (http://www.openssl.org/). This product includes +cryptographic software written by Eric A. Young (eay@cryptsoft.com). This +product includes software written by Tim J. Hudson (tjh@cryptsoft.com)." + +Independent JPEG Group (IJG) JPEG Library: + +This software is based in part on the work of the Independent JPEG Group. + +Jani Kajala: + +Copyright (c) 2001 Jani Kajala + +Permission to use, copy, modify, distribute and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that copyright +notice and this permission notice appear in supporting documentation. Jani +Kajala makes no representations about the suitability of this software for +any purpose. It is provided "as is" without express or implied warranty. + +*==README==*/ diff --git a/MOULOpenSourceClientPlugin/StaticSDKs/Win32/PhysX/release_notes.html b/MOULOpenSourceClientPlugin/StaticSDKs/Win32/PhysX/release_notes.html index fe04e6cd..ef594fba 100644 --- a/MOULOpenSourceClientPlugin/StaticSDKs/Win32/PhysX/release_notes.html +++ b/MOULOpenSourceClientPlugin/StaticSDKs/Win32/PhysX/release_notes.html @@ -1,1042 +1,1042 @@ - - - - Release Notes - AGEIA PhysX SDK 2.6 - - - -
-

-
-

Release Notes - AGEIA PhysX SDK 2.6.0

-

28th September 2006

-

 

-

What's New In AGEIA PhysX 2.6

-
-

Hardware/Software Rigid Bodies

-
    -
  • There is a new joint projection mode, NX_JPM_LINEAR_MINDIST, that uses only - linear projection for improved performance.
  • -
  • A new stack overflow protection scheme is in place, where too-large stack allocations are replaced by heap allocations when needed. If heap allocations are suddenly causing a slowdown, the threshold for this fallback can be set using NxFoundationSDK::setAllocaThreshold().
  • -
  • Fixed: Raycasts missing on the exact boundary of a heightfield.
  • -
  • Fixed: Filtering does not work correctly with HSM.
  • -
  • Fixed (SW): DistanceJoint will not work properly when attachment points coincide in worldspace.
  • -
  • Fixed: No contacts generated in Capsule-Capsule collision when capsule segments intersect.
  • -
  • Fixed: No contacts generated in capsule-convex collision when capsule penetrates convex.
  • -
  • Fixed: CCD collision response in FW scenes.
  • -
-

Hardware Fluids

-
    -
  • Fluid collision improvements including support for a - collision distance between fluid particles and rigid - body geometry which is maintained during the - simulation - (NxFluidDesc::collisionDistanceMutliplier).
  • -
  • A new method, NxScene::cookFluidMeshHotspot, allows - for preparing static mesh, height field and convex - shapes for fluid collision, preventing on-the-fly - cooking.
  • -
  • More information about particles including particle - flags, IDs and notifications for particle - creations/deletions.
  • -
  • New runtime switches for degrading simulation - fidelity on heavy system load.
  • -
  • Fluids emitters are now attached to shapes not actors.
  • -
-

Hardware/Software Cloth

-
    -
  • Cloth metal - a combination of deformable cloth and - nondeformable rigid body, useful for sheet metal and - similar objects. This mode can be activated by - attaching a piece of cloth to a rigid body via the - NxCloth::attachToCore method.
  • -
  • Cloth self collision is now implemented and can be activated by means of - NxClothFlag::NX_CLF_SELFCOLLISION.
  • -
-

Hardware Scene Manager(HSM)

-
    -
  • The HSM now uses Compartments, allowing the utilization of multiple PhysX cards - in future versions.
  • -
  • The interface of the HSM has been completely revised.
  • -
-

Performance

-
    -
  • The performance of some scenes with many kinematic actors and/or a lot of broadphase activity has been improved.
  • -
  • Fluid collision performance improved, especially for dynamic convex shapes.
  • -
-

Serialization

-
    -
  • A new serialization library has been introduced called NxuStream
  • -
  • This is a source code library with an easy to use interface.
  • -
  • SampleAssetExport and SampleSceneExport demonstrate how to use this library.
  • -
  • It is now possible to serialize to and from an XML file format, as a high speed binary file, and in COLLADA 1.4.1 physics.
  • -
-

Documentation

-
    -
  • Many small corrections and fixes for the user guide and API - reference.
  • -
  • Information in the User's Guide pertaining to hardware has been concentrated in one place.
  • -
  • User guide documentation for: -
      -
    • Compartments
    • -
    • Training programs
    • -
    • Cloth Metal
    • -
    -
  • -
-

Installer

-
    -
  • The client installers have been replaced by a single client installer. This installer is based on the MSI/WISE installer which was distributed in the past. There is no longer an NSIS based installer.
  • -
-
-

Supported Platforms

-
-

Runtime

-
    -
  • Software Runtime for Microsoft Windows XP (32bit and 64bit - editions; Pentium III / Athlon XP and higher only)
  • -
  • Software Runtime for Microsoft Windows Vista (32bit - edition; Pentium III / Athlon XP and higher only)
  • -
  • AGEIA PhysX Hardware Runtime for Microsoft Windows XP - (32bit and 64bit editions)
  • -
  • AGEIA PhysX Hardware Runtime for Microsoft Windows Vista - (32bit and 64bit editions)
  • -
  • Microsoft XBox360
  • -
  • Sony Play Station 3 (provided by Sony)
  • -
  • Software Runtime for SuSE Enterprise Linux 10.0 (alpha release; 32bit and 64bit - editions; Pentium III / Athlon XP and higher only)
  • -
  • Software Runtime for Red Hat Enterprise Linux WS 4.0 (alpha release; 32bit and 64bit - editions; Pentium III / Athlon XP and higher only)
  • - -
-

Development

-
    -
  • Microsoft Windows XP
  • -
  • Microsoft Visual Studio .NET 2003
  • -
  • Microsoft Visual Studio .NET 2005
  • -
  • Microsoft XBox360 development tools
  • -
  • Sony Playstation 3 development tools
  • -
  • SuSE Enterprise Linux 10.0 (alpha release)
  • -
  • Red Hat Enterprise Linux 4.0 WS (alpha release)
    -
  • -
-
-


- -Known Issues And Limitations

-
-

Hardware/Software Rigid Bodies

-
    -
  • Objects may not get woken if they lose contact but their bounds still overlap.
  • -
  • Objects may have difficulty falling asleep if they have alternating bounds overlaps with non sleeping bodies.
  • -
  • Joint projection may cause instability in the D6 joint.
  • -
  • joints may pull off each other when the mass relationship is not properly set up
  • -
  • joints' behavior may differ when actors are in very small size.
  • -
-

Hardware Fluids

-
    -
  • Dynamic fluid - mesh shape collision isn't supported anymore.
  • -
  • Dynamic convex shapes are limited to 64 planes for - fluid collision. If a convex consists of more than 64 - planes, only the first 64 planes are taken into consideration for - collision. If this is the case it may happen that particles collide - with the axis aligned bounding box of the convex shape.
  • -
  • If fluid particles are located more than - 32768*NxFluidDesc::kernelRadiusMultiplier/NxFluidDesc::restParticlesPerMeter - units far from the world origin, collision and SPH computations will fail. -
  • -
  • If particles get trapped between two dynamic rigid - bodies, they jitter within the penetration depth of - the rigid bodies.
  • -
  • Switching from no-particle-interaction mode to mixed mode or even sph mode can cause instabilities in the simulation.
  • -
  • Fluids have a limit on the packet number. It's 1024.
  • -
  • Max 4096 new Particles per time step can be added by the function of NxFluid::addParticles().
  • -
  • 16 Mbytes are reserved on the PPUs external memory - for cooked static collision geometry for fluids. If - this is exceeded during runtime collision geometry is - dropped and a debug message - "Hardware heap ran out of memory" is generated. The call - NxScene::cookFluidMeshHotspot can't cause this, since - it only cooks data and doesn't transfer the data to - the PPUs external memory yet.
  • -
  • If more than 8192 static triangles are located in the range - of a fluid packet, triangles will be dropped. - A debug message is generated in this case. -
  • -
-

Hardware/Software Cloth

-
    -
  • A self-collision enabled cloth can still intersect itself due to high relative - velocities of cloth particles, small cloth thickness, multiple collisions with - other objects or user interaction.
  • -
  • Untangling is not yet supported.
  • -
  • Collision handling between different pieces of cloth is not yet supported.
  • -
  • Supported core bodies for cloth metal are boxes, - spheres, capsules and compounds of spheres.
  • -
  • The metal deformation is penetration based. This - means that if the rigid body solver leaves a big - penetration, the result looks more dramatic. Thus, in - some range, the deformation is not predictable. - However, the cloth is moved towards the colliding - body by the penetrationDepth parameter at an impact - so the penetration just varies around this value.
  • -
  • Attaching a low density actor to cloth in NX_CLOTH_ATTACHMENT_TWOWAY mode can cause unstable simulation.
  • -
  • When the density of object collision with cloth is too high, the objects can easily penetrate cloth, even in very low speed.
  • -
  • In some cases a cloth can slip through a concave corner or a valley edge during mesh or terrain collisions. (Workaround: Increase the cloth's thickness or bending stiffness)
  • -
-

Hardware Scene Manager(HSM)

-
    -
  • dynamic triangle meshes are not supported anymore.
  • -
  • Objects in compartments are not visualized.
  • -
  • Hardware objects from different hardware compartments do not interact (i.e., cloth and rigid).
  • -
-

Serialization

-
    -
  • COLLADA does not retain all of the physics data in our SDK. It will not retain heightfields, wheel shapes, CCD information, cloth, fluids, or a number of other items that are not in the COLLADA 1.4.1 specification. -
  • -
-

Installers

-
    -
  • The AGEIA PhysX SDK must be installed to run samples as they - rely on DLLs contained within the main SDK installer.
  • -
-

Windows Device Driver

-
    -
  • No known issues.
  • -
-

Tools

-
    -
  • There is currently no support for content creation tools in the Linux SDK release.
  • -
-
- -

Release Notes - AGEIA PhysX SDK -2.5.1

- -

17th August 2006

- -

 

- -

What's New In AGEIA PhysX 2.5.1

- -
-

General

-
    -
  • The NxPhysicsSDK object is now reference counted, and - thus all NxCreatePhysicsSDK()/NxCreatePhysicsSDKWithID() - calls should be matched with an NxReleasePhysicsSDK() - call.
  • -
-

Hardware/Software Rigid Bodies

-
    -
  • The following HW Rigid Body optimizations have been - introduced.
      -
    • Improved mesh cooking
    • -
    • Optimized narrow phase collision detection
    • -
    • Optimized broad phase collision detection
    • -
    • Optimized dynamics solver
    • -
    -

    These optimizations are expected to improve - performance with no significant change to the - behavior of the simulation.

    -
  • -
-

Windows Device Driver

-
    -
  • Microsoft Windows XP 32bit and 64bit now supported. - Allows for 32bit software which use AGEIA PhysX - hardware to run on Microsoft Windows XP 64bit.
  • -
-
- -

Supported Platforms

- -
-

Runtime

-
    -
  • Software Runtime for Microsoft Windows XP (32bit and 64bit - editions)
  • -
  • Software Runtime for Microsoft Windows Vista (32bit - edition)
  • -
  • AGEIA PhysX Hardware Runtime for Microsoft Windows XP - (32bit and 64bit editions)
  • -
  • AGEIA PhysX Hardware Runtime for Microsoft Windows Vista - (32bit edition)
  • -
  • Microsoft XBox360
  • -
  • Sony Play Station 3 (provided by Sony)
    -
  • -
-

Development

-
    -
  • Microsoft Windows XP
  • -
  • Microsoft Visual Studio .NET 2003
  • -
  • Microsoft XBox360 development tools (August 2006 XDK - v3529)
  • -
  • Sony Playstation 3 development tools
  • -
-
- -

- -


-Known Issues And Limitations

- -


-Below is a list of new issues and limitations; this is an -addition to the list from 2.5.0.

- -
-

Windows Device Driver

-
    -
  • Since the AGEIA PhysX Properties Control Panel Applet - is a 32-bit DLL, it does not appear in the Control - Panel automatically under 64-bit Windows. The user - must enable 32-bit Control Panel icons for it to - appear.
  • -
-

Hardware/Software Rigid Bodies

-
    -
  • If shapes are added to an actor containing a single - triangle mesh shape in a HW scene, collisions with - the triangle mesh shape will no longer work. The - problem lies in the transition from single shape - actor to a compound, which means that compound actors - can be created with triangle mesh shapes either by - specifying all shapes directly in the descriptor, or - by making sure that the triangle mesh is never the - only shape in the actor.
  • -
-
- -

Release Notes - AGEIA PhysX SDK 2.5.0

-

30th June 2006

-

 

-

What's New In AGEIA PhysX 2.5

-
-

Hardware/Software Rigid Bodies

-
    -
  • Sweep API - Allows swept shape queries against a scene.
  • -
  • Active Transform Notification - Provides a list of actors which - have been updated.
  • -
  • Sleep Events - Provides a notification when an actor wakes up or - goes to sleep.
  • -
  • Kinetic Energy Based Sleeping - An improved criteria for - deciding if an actor should sleep. This is now the default.
  • -
  • Reduced overhead for sleeping actors.
  • -
  • Contact Modification - A callback is provided which allows the - user to modify contacts between the near phase and solver.
  • -
  • Fine grained threading is now enabled on the PC - parallel near - phase and solver.
  • -
  • Version Controlled Cooking - Cooking is now versioned along with - the runtime.
  • -
  • New/Delete has been cleaned up in many places and all calls - should now go through the user supplied memory allocator.
  • -
  • Adaptive force improvements - The adaptive force optimization is - now only applied to groups of objects which are in contact with a - static object, for example a stack resting on the floor.
  • -
  • The ratio property of a pulley joint is a force ratio rather - than a distance ratio.
  • -
  • The gear ratio of joints take into account the inertial - properties of the bodies involved. This affects the way forces are - propagated.
  • -
  • All joint types and collision primitives have software fall - backs in hardware scenes.
  • -
  • Full contact callbacks and modifiable contacts available in HW - scenes, but with substantial performance overhead.
  • -
  • Up to 64K shapes, 64K bodies, and 64K D6 joints may be created - in hardware scenes (but note the limitation below concerning active - object counts.)
  • -
-

Hardware Fluids

-
    -
  • Fluid surfaces allow triangle meshes surfaces to be generated - for fluids on the PPU. Basic fluid surface feature set includes: -
      -
    • Depth smoothing
    • -
    • Multiple fluid surfaces associated with fluids
      -
    • -
    • User defined particles supported
    • -
    -
  • -
  • Two Way Interaction - Fluids can now exert a force on a rigid - body.
  • -
  • NX_FF_ENABLED flag added - This allows simulation to be enabled - and disabled for fluids. By default the flag is set. When turning the - flag off (on NxFluid), the next fluid step is not carried out. - Particles are not copied to the user buffers
  • -
  • NX_SF_FLUID_DRAIN_INVERTED - Removed for performance reasons. - There are workarounds to get the same effect.
  • -
-

Hardware/Software Cloth

-
    -
  • Basic feature set: -
      -
    • stretching and bending resistance
    • -
    • two way rigid body interaction
    • -
    • attachments
    • -
    • damping and friction
    • -
    • tearing
    • -
    • pressure
    • -
    -
  • -
-

Hardware Scene Manager(HSM)

-
    -
  • Two way hardware rigid body and cloth interaction.
  • -
  • Two way fluid and rigid body interaction.
  • -
  • One way managed rigid body versus primary scene rigid body - interaction, including:
  • -
  • Software material table mirrored to the managed scenes.
  • -
  • Software static meshes are paged to managed scenes.
  • -
  • Group based filtering mirrored to the managed scenes.
  • -
  • Ray cast results include query performed against managed scenes.
  • -
-

Performance

-
    -
  • Sleeping objects are much faster, not consuming any CPU in 2.5
  • -
  • New friction model in 2.5 is somewhat faster, showing up in - stacking scenarios
  • -
  • Anisotropic friction, per-triangle materials and terrain height - fields run somewhat slower than in 2.4
  • -
  • All joint types but the D6 run somewhat slower in 2.5
  • -
  • Hardware rigid body scenes consume more CPU cycles than in 2.4
  • -
  • Running a scene on multiple threads now consumes memory - proportional to the number of threads concurrently within the SDK - rather than the number of threads which have entered the SDK since - creation.
  • -
  • Xbox 360 Optimization: -
      -
    • VMX128 rigid body constraint - solver.
    • -
    • VMX128 cloth solver.
    • -
    • VMX128 optimizations to box-box, - convex-mesh and convex-convex collision detection.
    • -
    • VMX128 midphase optimization for sphere-mesh, capsule-mesh, - OBB-mesh
    • -
    • VMX128 some small optimization for CCD.
      -
    • -
    -
  • -
  • PlayStation3 PPU only version significantly faster due to changes in Vector library.
  • -
-

Rocket

-
    -
  • Updated interface using menu items in addition to onscreen - buttons.
  • -
  • Support for Cloth
  • -
  • Support for Fluids
  • -
  • Support for NxUStream
  • -
  • (For details, see the Rocket documentation included in the Tools - Installer)
  • -
-

Installers

-
    -
  • With the high/low level split in the SDK, the source code - installer will not contain sources for low level components
  • -
  • 2.5.0 includes a tools installer. For beta and beyond, it will - include Rocket, a 3DStudio Max plugin and a Maya plugin.
  • -
  • Tool developers can now specify the version of cooking they want - to use.
  • -
  • Applications no longer need to include the PhysXLoader (that is - now in the System32 folder)
  • -
-

Documentation

-
    -
  • Many small corrections and fixes for the user guide and API - reference.
  • -
  • User guide and API reference documentation for: -
      -
    • Fluid surfaces
    • -
    • Contact modification callback
    • -
    • Sweep tests
    • -
    • Active transform notification
    • -
    • Sleep events
    • -
    • Hardware scene manager
      -
    • -
    • Cloth tearing and pressure
      -
    • -
    • Mesh auto paging
      -
    • -
    -
  • -
  • Updates to the tutorials and samples pages.
  • -
-

Windows Device Driver

-
    -
  • Support for PCIExpress Cards
  • -
-
-

Supported Platforms

-
-

Runtime

-
    -
  • Software Runtime for Microsoft Windows XP (32bit editions)
  • -
  • AGEIA PhysX Hardware Runtime for Microsoft Windows XP (32bit - editions)
  • -
  • Microsoft XBox360
  • -
  • Sony Play Station 3 (provided by Sony)
    -
  • -
-

Development

-
    -
  • Microsoft Windows XP
  • -
  • Microsoft Visual Studio .NET 2003
  • -
  • Microsoft Visual Studio .NET 2005 (not supported, project files - only)
    -
  • -
  • Microsoft XBox360 development tools
  • -
  • Sony Playstation 3 development tools
    -
  • -
-
-


- -Known Issues And Limitations

-
-

Hardware/Software Rigid Bodies

-
    -
  • Joint types other than D6, spherical and revolute are partially - simulated in software.
  • -
  • For HW D6 joints, Only angular orientation drive & linear - position drive are supported, i.e. slerp drive & velocity - drive are not supported.
  • -
  • Wheel shape and joint parameters may need tweaking due to solver - changes.
  • -
  • Spherical and revolute joint behavior may differ from 2.4.
  • -
  • All joint break limits are specified as a maximum impulse and - might need to be adjusted.
  • -
  • User break notification now reports an impulse which is clamped - to the break impulse.
  • -
  • The friction model has changed. It should now be somewhat - stiffer. In addition friction is applied as soon as a contact is - created.
  • -
  • Mesh-Mesh collision detection is always performed in software(in - particular PMaps).
  • -
  • Mesh based height field collisions and height field collisions - are performed in software.
  • -
  • Wheel shapes are simulated in software.
  • -
  • Mesh and height field collisions are performed in software if - the mesh/height field has multiple materials defined.
  • -
  • Anisotropic friction is partially performed in software.
  • -
  • User contact reports and contact modification have quite a large - performance hit.
  • -
  • The result of sweep tests which are initially penetrating is - currently undefined.
  • -
  • Only boxes and capsules are supported by the sweep API as swept - objects. (spheres are emulated as capsules of zero length).
  • -
  • Sweep tests against planes, wheel shapes, and height fields are - not supported.
  • -
  • All sweep tests are synchronous(NX_SF_ASYNC is not supported).
  • -
  • Trigger shapes do not take part in CCD (Continuous Collision - Detection).
  • -
  • The methods isSleeping() and isGroupSleeping() now return the - same value.
  • -
  • Contact forces are not reported unless NX_NOTIFY_FORCES is set
  • -
  • Scene statistics no longer report the number and maximum number - of contacts, axis constraints or solver bodies
  • -
  • Hardware rigid body scenes support at most 4K active bodies. The - following additional restrictions are expected to be removed or - significantly alleviated during beta: at most 8K active shapes (shapes - whose pose is linked to active bodies), 4K active joints, and 4K - software fall back constraints. Note: these are counts for active - objects, sleeping objects are not included in the limits.
    -
  • -
  • The hardware broad phase supports at most 4080 actors. Broad - phase runs in hardware only if the NX_SF_RESTRICTED_SCENE flag is set - on the scene. Otherwise broad phase runs in software even in hardware - scenes, and there are no size restrictions.
  • -
  • Joint pose projection is not hardware accelerated
  • -
  • Hardware convexes are limited to 32 vertices and 32 faces. Convexes will fallback - to software above these limits.
  • -
-

Hardware Fluids

-
    -
  • Maximum of 32767 particles per fluid.
  • -
  • Only limited fluid surface depth smoothing is supported in - hardware with filter size = 3.
  • -
  • Silhouette smoothing for fluid surfaces is not supported in - hardware.
  • -
  • Fluid surface resolution is limited to no more than 256x256, so - in the initial state, if the resolution is beyond the limitation, - NxImplicitScreenMeshDesc::isValid() will give an assert error. But if - this resolution is changed during application program running, it will - be automatically clamped to the maximum value.
  • -
  • Quadtree hierarchy mesh is not supported in hardware for fluid - surfaces.
    -
  • -
  • Two way interaction may be unstable with resting - particle-RB-contacts.
  • -
  • If the fluid hits packets which contain a high triangle density, - fluid mesh cooking on the host might become the bottleneck. However - there is logic to prevent detailed cooking when the load is too high. - Also cooking is now taking place in a separate thread, which removes - frame rate hick ups.
  • -
-

Hardware/Software Cloth
-

-
    -
  • Convexes up to 120 planes
  • -
  • Only cloth particle collision detection (no cloth triangle - collision detection)
  • -
  • < 1024 attached particles per cloth (limit might be removed - before release)
  • -
  • < 1024 colliding shapes (limit might be removed before - release)
  • -
  • Wild movement of the cloth in connection with high bending - stiffness can get the cloth into an entangled state. It looks like the - cloth would locally stick to itself. This is a local self collision - issue. Workaround: reduce bending stiffness.
  • -
  • Squeezing cloth between rigid bodies can cause jittering. - Workaround: reduce cloth thickness.
  • -
  • For small meshes (< 256 vertices) it is more efficient to - merge several of them into one cloth than creating a cloth instance for - each individual mesh. These meshes do not need to be connected (e.g. - multiple leaves of a plant).
  • -
-

Hardware Scene Manager(HSM)

-
    -
  • Only group based collision reports are supported by the HSM.
  • -
  • Only a single managed hardware scene is supported by the HSM.
  • -
  • Effectors between hardware actors are not supported.
  • -
  • Actor and Shape pair flags not supported by the HSM.
  • -
  • Scene stats for hardware objects controlled by the HSM are not - supported.
  • -
  • Hardware rigid bodies do not exhibit two way interaction with - software objects under the HSM.
  • -
  • Hardware objects from separate scenes do not interact(e.g. rigid - body, cloth, fluids) under the HSM.
  • -
  • Dynamic height fields mirrored into the cloth and fluid scenes - will only supply 64 triangles, the rest will be silently dropped.
  • -
  • Shapes mirrored into the slave scene(cloth, rigid body, fluids) - will not be updated until they are mirrored/un-mirrored. This means if - you change a shape property(e.g. sphere radius) the hardware objects - will not be updated.
  • -
  • In the hardware rigid body scene only dynamic objects are - mirrored to the software scene.
  • -
-

Rocket

-
    -
  • No known issues.
  • -
-

Installers

-
    -
  • The AGEIA PhysX SDK must be installed to run samples as they - rely on DLLs contained within the main SDK installer.
  • -
-

Windows Device Driver

-
    -
  • No known issues.
  • -
-
-
-
-
    -
-
-

Release Notes - AGEIA PhysX SDK 2.4.0

-

23rd February 2006

-

AGEIA PhysX SDK Build Component

-

What's New?

-
    -
  1. Documentation and Samples for new features.
  2. -
  3. A number of smaller documentation corrections and -clarifications.
  4. -
-

Platforms Supported

-Development: -
    -
  • Microsoft Windows XP (32bit editions)
  • -
  • Microsoft Visual Studio .NET 2003
  • -
  • Microsoft Visual Studio .NET 2003 with the XBox360 development -kit.
  • -
-Not Supported for Development: -
    -
  • Microsoft Windows XP x64 Edition (and all other 64bit editions)
  • -
  • Microsoft Visual Studio .NET 2005 (project files not provided / -not tested)
  • -
  • Microsoft Visual C++ 6 (project files not provided / not tested) -
  • -
-

Known Issues and Limitations

-
    -
  • The AGEIA PhysX SDK Build Component and AGEIA PhysX Software -Runtime Component must be installed to run samples and training -programs, since they rely on DLLs contained within the runtime -component.
  • -
-

Version

-2.4.0 -

AGEIA PhysX Software Runtime Component

-

What's New?

-
    -
  1. Dynamic vs Dynamic CCD support
  2. -
  3. Support for heightfield shapes
  4. -
  5. User thread control.
  6. -
  7. Fine grained threading of the simulation(available only on -XBox360)
  8. -
  9. Additional overlap tests for shapes
  10. -
  11. Hardware scene manager, allows fluids to interact with rigid -bodies.
  12. -
-

Platforms Supported (Runtime)

-
    -
  • Microsoft Windows XP (32bit editions)
  • -
  • Microsoft XBox 360
  • -
  • Sony PlayStation3 (provided by Sony)
  • -
-

Known Issues and Limitations

-
    -
  1. The AGEIA PhysX SDK must be installed to run samples as they -rely on DLLs contained within the main SDK installer.
  2. -
-

Version

-2.4.0 -

Hardware Rigid Bodies (AGEIA PhysX Driver)

-

What's New?

-
    -
  1. Many optimizations and Bug fixes.
  2. -
  3. D6 joint support. The D6 supports the following features: -breaking and signaling, angular orientation drive and gears,
  4. -
  5. The simulation no longer locks up on firmware crashes. Instead a -flag passed to fetchResults () which is set on an error.
  6. -
  7. A new error reporting tool allows the driver to record the -simulation state leading up to a crash to allow analysis and bug -fixing.
  8. -
-

Platforms Supported (Runtime)

-
    -
  • Microsoft Windows XP (32bit editions) with an AGEIA PhysX Card
  • -
-

Known Issues and Limitations

-
    -
  1. There is a limit of 2048 D6 joints per scene.
  2. -
  3. Only angular D6 drives are supported. All other types of drive -are not supported.
  4. -
  5. D6 joint pose projection is disabled.
  6. -
-

Version

-2.4.0 -

Hardware Fluids (AGEIA PhysX Driver)

-

What's New?

-
    -
  1. The AGEIA PhysX SDK now has a hardware scene manager, which -allows fluids to be created in a software scene. The hardware scene -manager takes care of mesh cooking and mirroring actors into the -hardware scene.
  2. -
  3. Support for more dynamic shapes in a fluid scene: convex mesh, -box, capsule, sphere
  4. -
  5. The following unimplemented API calls have been removed: -
      -
    • NX_FF_MESH_INCLUDE_SEPARATED
    • -
    • void NxFluid::setCollisionGroup(NxCollisionGroup group);
    • -
    • NxU32 NxFluid::getCollisionGroup();
    • -
    • NxImplicitMesh* NxFluid::createSurfaceMesh(const -NxImplicitMeshDesc& mesh);
    • -
    • void NxFluid::releaseSurfaceMesh();
    • -
    • NxImplicitMesh* NxFluid::getSurfaceMesh();
    • -
    • NxFluid::getDynamicActorReactionSmoothing ()
    • -
    • NxFluid::setDynamicActorReactionSmoothing(NxReal smooth)
    • -
    • NxFluid::getDynamicActorReactionScaling()
    • -
    • NxFluid::setDynamicActorReactionScaling(NxReal scale)
    • -
    • NxFluid::setOnSeparationAction (NxFluidParticleAction -action, bool val)
    • -
    • NxFluid::getOnSeparationAction(NxFluidParticleAction action) -
    • -
    • NxFluid::setOnCollision(NxFluidParticleAction action, bool -val)
    • -
    • NxFluid::getOnCollision(NxFluidParticleAction action)
    • -
    • NxFluid::setOnLifetimeExpired(NxFluidParticleAction action, -bool val)
    • -
    • NxFluid::getOnLifetimeExpired(NxFluidParticleAction action)
    • -
    • typedef NxU16 NxFluidGroup;
    • -
    • void NxFluid::setFluidGroup(NxFluidGroup group)
    • -
    • NxU32 NxFluid::getFluidGroup()
    • -
    • NxU32 NxFluidDesc::onSeparation;
    • -
    • NxU32 NxFluidDesc::onCollision;
    • -
    • NxU32 NxFluidDesc::onLifetimeExpired;
    • -
    • NxReal NxFluidDesc::dynamicActorReactionSmoothing ;
    • -
    • NxReal NxFluidDesc::dynamicActorReactionScaling;
    • -
    • NxReal NxFluidDesc::collisionGroup;
    • -
    • class NxImplicitMesh
    • -
    • void NxPhysicsSDK::setFluidGroupPairFlags()
    • -
    • NxPhysicsSDK::getFluidGroupPairFlags()
    • -
    • NxScene::setUserFluidContactReport()
    • -
    • NxScene:: getUserFluidContactReport()
    • -
    • NxImplicitMesh * NxScene::createImplicitMesh();
    • -
    • Void NxScene::releaseImplicitMesh();
    • -
    • NxScene::getNbImplicitMeshes
    • -
    • NxImplicitMesh** NxScene::getImplicitMeshes()
    • -
    • class NxUserFluidContactReport
    • -
    • NxFluidCollisionMethod::NX_F_DYNAMIC_ACTOR_REACTION
    • -
    -
  6. -
-

Platforms Supported (Runtime)

-
    -
  • Microsoft Windows XP (32bit editions) with an AGEIA PhysX Card
  • -
-

Known Issues and Limitations

-
    -
  1. The maximum number of capsules are limited to 1024 in a scene.
  2. -
  3. The maximum number of boxes in a scene is limited to 1024.
  4. -
  5. Spheres are emulated as capsule of zero height, so they share -the same limitation as capsules.
  6. -
-

Version

-2.4.0 -

Cloth

-

What's New?

-
    -
  1. Software only cloth support (see the user guide for further -details)
  2. -
  3. Collision filtering.
  4. -
  5. Support for tearing and pressure.
  6. -
-

Platforms Supported (Runtime)

-
    -
  • Microsoft Windows XP (32bit editions)
  • -
  • Microsoft XBox 360
  • -
-

Known Issues and Limitations

-
    -
  1. A cloth can bend too much and get stuck in itself. Workaround: -use less bending stiffness or variate the bending stiffness over time.
  2. -
-

Version

-2.4.0 -

Tools

-

What's New?

-
    -
  1. NxuStream- Support for serialization of the physical scene. -Supported formats include binary, Ascii(write only) and Collada
  2. -
  3. Visual Remote Debugger - View the physical representation used -by a game in real time and gather statistics and profiling information. -
  4. -
-

Platforms Supported (Runtime)

-
    -
  • Microsoft Windows XP (32bit editions)
  • -
  • Microsoft XBox 360
  • -
  • Sony PlayStation3 (provided by Sony)
  • -
-

Known Issues and Limitations

-
    -
  1. NxuStreamdoes not import Collada files created with other -libraries correctly.
  2. -
  3. Visual Remote Debugger connections must be enabled immediately -after initializing the SDK, otherwise the connection is likely to fail -(because object creation data, etc, is lost). For example: -
    // Create Physics SDK ...

    gPhysicsSDK->getFoundationSDK().getRemoteDebugger()->connect ("localhost", 5425);
    -
  4. -
  5. Reading profiler data at the same time the Visual Remote -Debugger is connected is not supported. Profiler data will not be -returned to the user when they call NxScene::readProfileData() if the -debugger is connected.
  6. -
-

Version

-2.4.0 -
-

Release Notes - AGEIA PhysX SDK 2.3.2

-

6th January 2006

-

AGEIA PhysX SDK Build Component

-

What's New?

-
    -
  1. It is no longer possible for end users to load PhysXCore.dll -from the application directory. The correct version is now loaded by -PhysXLoader from "Program Files\Ageia Technologies"
  2. -
  3. Installer improvements.
  4. -
  5. Fixes to sample project files.
  6. -
  7. Foundation.lib included with the XBox 360 installer.
  8. -
  9. Lots of documentation improvements.
  10. -
-

Platforms Supported

-Development: -
    -
  • Microsoft Windows XP (32bit editions)
  • -
  • Microsoft Visual Studio .NET 2003
  • -
  • Microsoft Visual Studio .NET 2003 with the XBox360 development -kit. Not Supported for Development:
  • -
  • Microsoft Windows XP x64 Edition (and all other 64bit editions)
  • -
  • Microsoft Visual Studio .NET 2005 (project files not provided / -not tested)
  • -
  • Microsoft Visual C++ 6 (project files not provided / not tested) -
  • -
-

Known Issues and Limitations

-
    -
  • The AGEIA PhysX SDK Build Component and AGEIA PhysX Software -Runtime Component must be installed to run samples and training -programs, since they rely on DLLs contained within these components.
  • -
-

Version

-2.3.2 -

AGEIA PhysX Software Runtime Component

-

What's New?

-
    -
  1. Improved convex hull generation algorithm(the old method is -still available using a flag)
  2. -
  3. Character controller fixes.
  4. -
  5. Fix for distance joints not being breakable.
  6. -
  7. Additional overlap/intersection queries.
  8. -
  9. Fix for performance issues related to SSE denormal handling on -some machines.
  10. -
-

Platforms Supported (Runtime)

-
    -
  • Microsoft Windows XP (32bit editions)
  • -
  • Microsoft XBox 360
  • -
  • Sony PlayStation3 (provided by Sony)
  • -
-

Known Issues and Limitations

-
    -
  1. When statically linked(for example on XBox360) calling -NxInitCooking() overwrites parameters set when calling -NxCreatePhysicsSDK(). For example the error stream is reset. This -occurs because the variables are shared when statically linked.
    -Workaround: Supply the same parameters to NxInitCooking() and -NxCreatePhysicsSDK()
  2. -
  3. In some cases convex hull generation can fail for degenerate -input.
    -Workaround: Supply geometry without degenerate sets of points (edges -and planes). Use the legacy convex hull generation(see -NX_CF_USE_LEGACY_COOKER).
  4. -
-

Version

-2.3.2 -

Hardware Rigid Bodies (AGEIA PhysX Driver)

-

What's New?

-
    -
  1. Many bug fixes and optimizations.
  2. -
  3. Fix getWorldBounds () for triangle mesh shapes.
  4. -
  5. Driver error reporting in fetchResults()
  6. -
-

Platforms Supported (Runtime)

-
    -
  • Microsoft Windows XP (32bit editions) with an AGEIA PhysX Card
  • -
-

Known Issues and Limitations

-
    -
  1. See the API references for details concerning which API -functions are supported.
  2. -
  3. At most 2000 shapes can be present in a scene at once (this -includes both static and dynamic shapes).
  4. -
  5. Precision limitations suggest that physics behavior may not be -stable or correct more than 1000 units from the origin.
  6. -
  7. Rigid body scenes occupy 32MB of memory on the card, so that -absolutely no more than three scenes may be present on the card at -once.
  8. -
  9. The following is an important but non-exhaustive list of SDK -features which are not supported: joints, continuous collision, contact -notification, many debugging visualization, contact notifications, -triggers, per shape skin width.
  10. -
  11. Convex hulls are limited in this release to have at most 32 -vertices and 32 faces.
  12. -
  13. Using terrain meshes on hardware requires making use of the new -mesh paging API. When a mesh is cooked, it is divided into a number of -hardware pages, and these pages must be manually moved to the card by -the application for any collision to take place.
    -The number of pages into which a mesh will be cooked is variable, and -will depend on the degree of local convexity in the mesh. However, at -least 500 triangles should fit into a mesh page, and the allocation of -16MB of mesh data supports 256 pages, which allows for the presence of -more than 100,000 triangles on the card. Note that when a page is -removed from the card, the space occupied by that mesh page is not -freed until after the physics has been stepped. No data yet exists for -the performance of paging meshes on and off the card; however as a -baseline the raw transmission of a mesh page by DMA requires half a -millisecond.
    -As in the software SDK, in the absence of ATT it is easy for thin -objects to tunnel through the mesh; in particular collisions will not -be detected with objects whose center lies beneath the mesh.
  14. -
  15. Due to limitations of the friction model, objects sliding on a -triangle mesh may not have correct frictional behavior. Per-triangle -materials are not supported.
  16. -
-

Version

-2.3.2 -

Hardware Fluids (AGEIA PhysX Driver)

-

What's New?

-
    -
  1. Many bug fixes and optimizations.
  2. -
  3. Fluid scenes are created in a special hardware scene.
  4. -
  5. Fix to intermittent crash bug when adding a mesh to a fluid -scene.
  6. -
  7. Better input validation for the fluid mesh cooker.
  8. -
  9. Driver error reporting in fetchResults()
  10. -
  11. The Fluid can be configured with the new parameter -"motionLimitMultiplier". The user can define how far a particle can -travel during one timestep. This is important for tuning the memory -size consumed by the static mesh cooked for fluid collision. The -parameter effectively limits the maximal velocity of a particle. See -the user guide for more details.
  12. -
  13. If the user is interested in a more coarse simulation of fluids -which supports sprays and puddles, but works less well on deep pools, -he can choose this new simulation mode which alternates the simulation -between simple particles (without inter particle forces) and SPH -simulation. See NxFluidSimulationMethod::NX_F_MIXED_MODE and -NxFluidDesc::simulationMethod in the documentation.
  14. -
-

Platforms Supported (Runtime)

-
    -
  • Microsoft Windows XP (32bit editions) with an AGEIA PhysX Card
  • -
-

Known Issues and Limitations

-
    -
  1. See the API references for details concerning which API -functions are supported
  2. -
  3. Collision detection only supported with static triangle meshes -and convex meshes.
  4. -
  5. The number of convex shapes interacting at the same time with -one fluid is restricted to 1024 convexes. The user may add more dynamic -convex actors to the fluid hardware scene, though. If more than 1024 -convexes are moving within the AABB of the fluid, some will be ignored -for collision.
  6. -
  7. One dynamic convex is restricted to 64 triangles. If a convex -with more than 64 triangles is added to the fluid hardware scene, some -triangles are ignored for collision.
  8. -
  9. The user can only provide one pre-cooked static mesh per fluid -scene. All fluids added to the scene have to be compatible to the -static mesh structure, i.e. have the same restParticlesPerMeter, -kernelRadiusMultiplier, packetSizeMultiplier.
  10. -
  11. Issue: Max PPU Connections (15): If multiple fluids are created, -the maximal possible number of PPU connections can be reached. One -connection is used for the static mesh interface (per scene), and one -for each fluid created. If the maximum of connections is reached, the -fluid creation returns NULL.
    -Workaround: Don't create too many scenes and fluids. A fluid hardware -scene uses one connection and every fluid uses another one.
  12. -
  13. Crashing call to createFluidHardwareTriangleMesh (): This call -may crash if running out of PPU connections or PPU memory.
    -Workaround: Try to save on hardware rigid body scenes and hardware -fluid scenes, as well as fluids. Try to reduce the maximal number of -particles for the fluids. A main issue might be the cooked fluid static -triangle mesh size.
  14. -
  15. Fluid memory consumption can be approximated as:
    -NxFluid: constant(~2.5Mb) + 11 * maxParticles * 64 Bytes
    -Triangle Mesh: Depends upon:- -
      -
    • Cooked Geometry
    • -
    • restParticlesPerMeter
    • -
    • kernelRadiusMultiplier
    • -
    • motionLimitMultiplier
    • -
    • packetSizeMultiplier
    • -
    -Fluids can be allocated from all of the cards onboard memory. However -when hardware rigid bodies are used they compete for memory.
  16. -
  17. Issue: Slowdown on creating and releasing fluids in a row: The -reason for this issue has not been determined. This doesn't happen when -releasing the scene too.
    -Workaround: Create fluids once and reuse them. Recreation may lead to -fragmentation on the PPU memory, which is bad anyway.
  18. -
-

Version

-2.3.2 -
-
Old Release Notes / Changelog

2.3 - 2005.08.15
==================
- XBOX 360, PS3 support. (may require files separate from windows installer package)
- improved API reference documentation, doc comments.
- new static vs. dynamic continuous collision detection based on CCD Skeletons
- NxConvexShape introduced as independent class of NxTriangleMeshShape
- NxWheelShape introduced for better raycast car support
- added API to support selection between hardware and software implementation.
- NxMaterial::programData API replaced with strongly typed spring member. Behavior is unchanged.
- debug rendering API simplified. NxUserDebugRenderable removed, NxDebugRenderable interface class replaced by a simple struct.
- more strict parameter checking in several places
- removed raycast based CCD
- removed FPU manipulation API functions.
- intel assembly implementation of NxMath::sincos().
- changed implementation of NxMath::rand()
- replaced buggy TransformPlane() with correct NxPlane::transform() and NxPlane::inverseTransform().
- added NxQUat::fromAxisAngleFast() and NxQuat::invert().
- modified implementations for NxQUat::rot, invRot (), and ::transform().
- removed NX_MF_CONVEX and NX_COMPUTE_CONVEX from NxMeshFlags of NxSimpleTriangleMesh
- removed NX_NUM_SLEEP_FRAMES macro

2.2, 2.1.3 - 2005.03.21

==================

- new abstract core implementation for hardware compatibility
- lots of new features for the D6Joint.
- materials API completely rewritten
- new mesh cooking library. Raw meshes must be preprocessed by the cooking library before being handed to the SDK. This makes creation of meshes at runtime much faster.
- new character motion controller library
- new extensions library
- new external utils library
- Foundation SDK has been merged into the Physics SDK. Specifically:
- there is no more foundation.dll
- the user must no longer link to foundation.lib
- API documentation for the foundation SDK is now part of the Physics SDK API documentation.
- the function exports of the foundation.dll are now exported from physics.dll
- the member functions from foundation shape API classes (NxSphere, NxBox, etc.) that were calling foundation exports have been removed. Here is a list with the corresponding replacement export that must be called by the user instead:

Old Member Function Replacement Function

NxSphere::NxSphere(unsigned nb_verts, const NxVec3* verts) NxComputeSphere(sphere, nb_verts, verts);
NxSphere::NxSphere(const NxSphere& sphere0, const NxSphere& sphere1) NxMergeSpheres(sphere, sphere0, sphere1);
NxSphere::compute(unsigned nb_verts, const NxVec3* verts) NxComputeSphere(sphere, nb_verts, verts);
NxSphere::fastCompute(unsigned nb_verts, const NxVec3* verts) NxFastComputeSphere(sphere, nb_verts, verts);
NxBox::containsPoint(const NxVec3& p) NxBoxContainsPoint(box, p);
NxBox::create(const NxBounds3& aabb, const NxMat34& mat) NxCreateBox(box, aabb, mat);
NxBox::computePlanes(NxPlane* planes) NxComputeBoxPlanes(box, planes);
NxBox::computePoints(NxVec3* pts) const NxComputeBoxPoints(box, pts);
NxBox::computeVertexNormals(NxVec3* pts) const NxComputeBoxVertexNormals(box, pts);
NxBox::getEdges() NxGetBoxEdges();
NxBox::getEdgesAxes() NxGetBoxEdgesAxes();
NxBox::getTriangles() NxGetBoxTriangles();
NxBox::getLocalEdgeNormals() NxGetBoxLocalEdgeNormals();
NxBox::computeWorldEdgeNormal(NxU32 edge_index, NxVec3& world_normal) NxComputeBoxWorldEdgeNormal(box, edge_index, world_normal);
NxBox::computeCapsule(NxCapsule& capsule) NxComputeCapsuleAroundBox(box, capsule);
NxBox::isInside(const NxBox& box) NxIsBoxAInsideBoxB(box, box);
NxRay::distanceSquared(const NxVec3& point, NxF32* t = NULL) NxComputeDistanceSquared(ray, point, t);
NxRay::distance(const NxVec3& point, NxF32* t = NULL) sqrtf(NxComputeDistanceSquared(ray, point, t));
NxSegment::squareDistance(const NxVec3& point, NxF32* t=NULL) NxComputeSquareDistance(segment, point, t);
NxSegment::distance(const NxVec3& point, NxF32* t = NULL) sqrtf(NxComputeSquareDistance(segment,point, t));
NxCapsule::computeOBB(NxBox&box) NxComputeBoxAroundCapsule(capsule, box);
NxCapsule::contains(const NxVec3& pt) NxComputeSquareDistance(capsule, point) <= radius*radius;
NxCapsule::contains(const NxSphere& sphere) NxF32 d = radius - sphere.radius; if(d> = 0.0f) return NxComputeSquareDistance(capsule, sphere.center) < = d*d; else return false;
NxCapsule::contains(const NxCapsule& capsule) contains(NxSphere(capsule.p0, capsule.radius)) && contains(NxSphere(capsule.p1, capsule.radius));

Users will need to replace any calls to the old member function to the corresponding replacement function.
- NxProfiler class deleted
- removed virtual NxProfilingZone * NxFoundationSDK::createProfilingZone(const char * x) = 0;
- NxArray no longer derives from NxAllocateable
- removed NxComputeVolumeIntegrals from API
- removed obsolete Foundation/include/NxBlank.h
- removed obsolete Foundation/include/NxList.h
- added NxActor::getMaxAngularVelocity ()
- added NxActor::get/setSolverIterationCount()
- added Physics/src/Physics.h: contains #define's from /src/Nxp.h which are just used from inide the SDK and should not be visible from outside
all files in the /src including Nxp.h now include Physics.h
- removed is...() (e.g. isBox()) functions from NxShapes and NxJoints
updated samples: added static castings for on NxShape and NxJoint to the appropriate type instead of calling the is function
(e.g static_cast(s) instead of s->isBox())
- added NxPlane NxPlaneShape::getPlane() const;
- removed methods deprecated in 2.1.2
- added NxScene &NxActor::getScene() const;
- added NxPhysicsSDK& NxScene::getPhysicsSDK() const;
- added NxJoint& NxActor::getScene() const;
- removed NX_INLINE void NxFPU::NxSinCos(NxF32& c, NxF32& s, NxF32 f);
- added NX_INLINE static void NxMath::sinCos(NxF32 & c, NxF32 & s, NxF32 f);
- new NX_ACCELERATION force mode.
- new getScene() method for objects contained in scene.
- moved public enums from various classes to Nxp.h
- new shape flag NX_SF_POINT_CONTACT_FORCE and NxContactStreamIterator::getPointNormalForce() for returning per-point contact forces.
- improved validation in NxJointLimitSoftDesc::isValid()
- added function NxGetValue(NxCookingValue).
- motor for pulley joint
- added NxU32 NxScene::setThreadAffinityMask(NxU32 mask)
- replaced MIN_SEPARATION_FOR_PENALTY with NxShape::get/setSkinWidth(), and a global skin width parameter.
- new 128 bit mask based collision filtering (NxShape::getGroupsMask(), NxGroupsMask)
- new NxRaycastBit NX_RAYCAST_FACE_NORMAL for retrieving non-smoothed normals.
- new method NxCapsuleShape::getWorldCapsule()
- new method NxSphereShape::getWorldSphere() - new NxScene::getNbStaticShapes(), getNbDynamicShapes().
- new triangleIDs for raycasting.
- removed support for pmap-less nonconvex nonheightfield mesh-mesh collision detection which was working poorly.
- removed obsolete parameter NX_MESH_MESH_LEVEL
- removed obsolete parameter NX_MESH_HINT_SPEED - removed NxActor::setDynamic(). Workaround: Create the initially static actor as a kinematic. Later turn off the kinematic state.

2.1.2 - 2004.11.08

==================

- more strict error checking
- multithreaded implementation - shape descriptors in NxActorDesc can now be allocated using a custom allocator.
- fluid API - NX_MESH_SMOOTH_SPHERE_COLLISIONS now disabled by default
- made mesh instances default to flat and not smooth sphere mode
- removed neccesarily reentrant method NxContactPair::setPairNotify(NxU32). Workaround: use any of the
several different ways to set actor flags.
- actor group and actor group pair flags
- raycast car support, including: - New + improved 'multipatch' friction implementation. Fringe benefits are that rare contact situations with multiple contact normals or materials-per-triangle are now handled correctly.
- Capsule shapes now have a 'swept shape' mode that can be used to get raycast wheel behavior. This is enabled with the new NX_SWEPT_SHAPE flag in NxCapsuleShapeDesc.
- programData member in NxMaterial
- NX_MF_SPRING_CONTACT flag of NxMaterial, and the appropriate code to emit suspension-spring-like contacts when this is enabled.
- SampleRaycast car
- Reworked applyForce code:
- removed these methods of NxActor because they were causing user confusion (they were hoping that it did more than just read back what they have previously set...) setForce (), setTorque(), getForce(), getTorque()
The replacement for setForce/setTorque is calling addForce/addTorque just once (per frame).
The replacement of getForce ()/getTorque() is to keep track of the forces you add.
- removed the variables: NxBodyDesc::initialForce, NxBodyDesc::initialTorque. The replacement for initialForce, initialTorque is addForce/addTorque after creating the object.
- forces act over the entire time step, including all substeps
- NxMaterial's vectors are now in shape space not in actor space.
- added 3 new joint types: - Distance - Pulley - Fixed
- kinematics perform move over a whole step, not a substep
- added methods to add impulses and velocity changes
- exception handling in SDK off, was enabled by mistake in 2.1.1
- implemented more material combine modes
- fixed a debug rendering crash bug
- fixed debug rendering extra lines and zero length lines bugs
- NX_VISUALIZE_COLLISION_NORMALS now defaults to zero.
- raycasting based approximate continuous collision detection (enable using NX_CONTINUOUS_CD)
- faster raycasting, now also supports segment queries
- 'one shot' scene collision queries
- added access to internal mesh data

2.1.1 - 2004.07.15
==================
- convex-mesh collision detection
- convex meshes viewer scene
- broken joints deletion process cleared up
- raycasting against compounds fix
- NX_NOTIFY_ON_START_TOUCH bug fixed
- bugs related to jointing bodies to kinematics fixed
- crash fixed when switching body from kinematic to dynamic
- implemented contact and friction force feedback in contact report
- joints to kinematic bodies now projected correctly
- removed reduced simulation mode for joints
- made it possible to set a different number of solver iterations per body
- added adaptive force parameter - improved solver: bodies don't pop out of other bodies as fast as before
- improved solver: non-reduced mode joints work better
- fixed rotating spheres and longs solver problem
- fixed solver instability on very thin objects
- visual C++ .NET project files
- fixed several box-capsule contact generation bugs
- added more error messages regarding broken joints
- removed '#'-s in filenames of monster truck demos
- updated docs with more information on releasing actors and broken joints
- added angular projection for revolute joints
- fixed some bias scaling related bugs in friction and joint setup code
- fixed uninitialized variable bug in viewer
- removed obsolete files from foundation
- extended ODF files to permit specification of joint projection
- fixed joint projection bug
- fixed fat lines rendering bug in viewer
- fixed some doc bugs
- fixed bug regarding kinematic bodies going to sleep
- fixed sphere joint limit visualization bug
- visualization flag for shapes, bodies, and joints
- added docs on masses of trigger shapes
- added FAQ section to SDK docs
- simplified versioning mechanism
- renamed ShapeDesc::triggerFlags into ShapeDesc::flags.
- fixed bug regarding deletion of trigger shapes
- removed personal edition copy protection scheme
2.1 - 2004.05.15
=================
- Pulled enums and typedefs out of classes. For example NxSomeClass::SOME_FLAG is now NX_SOME_FLAG.
- NxCollisionGroup changed from an enum to an int.
- NxCollisionGroup 0 no longer has special meaning. Static-static collision detection is automatically not performed.
- Actors, Shapes and Joints now have setName () getName() methods for debugging convenience.
- Removed support for dynamic meshes flag
- Optimized mesh inertia tensor computation
- Removed dynamic and default mesh classes from Foundation
- Replaced NxUserTriangleMesh with NxSimpleTriangleMesh, changed the way meshes are provided to the SDK - User's meshes are now copied, not referenced
- Materials are now stored in a global list and indexed by shapes, not actors.
- New material per triangles feature (for all mesh-primitive combinations)
- Added sleep velocity thresholds
- Changed SLEEP_LIN_VEL_SQUARED to SLEEP_DEFAULT_LIN_VEL_QUARED& also angular
- Documented NX_MIN_SEPARATION_FOR_PENALTY in manual.
- Removed quaternion accessor functions and made elements public.
- Added NxMat34::getColumnMajor44(), NxMat34::setColumnMajor44() for ez 4x4 graphics matrix conversion.
- Added X get*() methods which return the matrix value instead of copying it to a destination address. void get*(X) methods are now deprecated.
- Fixed bug with kinematicactors (were generating useless contacts)
- Fixed bug with raycasting against compounds (was returning internal compound shapes & wasn't testing collision groups)
- RunFor() timing params are now scene properties.
- Asynchronous API added. runFor is deprecated.
- Removed NxUserContactReport::onPairCreated() due to performance concerns! Users must take care to notice that their implementing code no longer does anything / never gets called!! We don't have a full replacement for this mechanism yet. For now NxScene::setActorPairFlags() is the best bet.
- Added CoreDump mechanism.
- Maya exporter
- ConvexMesh-ConvexMesh Collision Detection
- Four new sample programs: SampleConvex, SampleGameLevel, SampleMaterials, SampleMeshMaterials
- Got rid of NxActor's localToGlobalSpace, globalToLocalSpace, localToGlobalSpaceDirection, globalToLocalSpaceDirection . because the implementation transformed between the wrong spaces. To get the old behavior, use this code: NxMat34 cmpose; actor->setCMassGlobalPose(cmpose); worldPositon = cmpose * bodyPosition;
//localToGlobalSpace bodyPositon = cmpose % worldPosition;
//globalToLocalSpace worldDirection = cmpose.M * bodyDirection;

//localToGlobalSpaceDirection bodyDirection = cmpose.M % worldDirection;
//globalToLocalSpaceDirection To get the proper behavior, use this code: worldPositon = actor->getGlobalPoseReference() * bodyPosition;
//localToGlobalSpace bodyPositon = actor->getGlobalPoseReference() % worldPosition;
//globalToLocalSpace worldDirection = actor->getGlobalPoseReference().M * bodyDirection;

//localToGlobalSpaceDirection bodyDirection = actor->getGlobalPoseReference().M % worldDirection;
//globalToLocalSpaceDirection
- Removed NxScene::enablePair, isEnabledPair. They are replaced by the new get/setPairFlags (). The old behavior maps to the new calls like so: /**
enables or disables collision detection between a pair of actors. Initially all pairs are enabled. Collision detection between two shapes a and b occurs if: NxPhysicsSDK::getGroupCollisionFlag(a->getGroup(), b->getGroup()) && isEnabledPair(a->getActor(),b->getActor()) is true. Note: a and b may not refer to the same shape. */ NX_INLINE void enablePair (NxActor&,
NxActor&,
bool enable) { if (enable) setPairFlags(a,b, getPairFlags(a,b) | NX_IGNORE_PAIR); else
setPairFlags(a,b, getPairFlags(a,b) & ~NX_IGNORE_PAIR);
}
/** Queries the value set by the above call. */ NX_INLINE bool isEnabledPair(NxActor&a, NxActor&b) = 0 {
return getPairFlags(a,b) & 1;
}
2.03 - 2004.04.08
=================
-B

AM Feb 20 fixed: inertia tensors of meshes are wrong -B
AM Feb 22 fixed: syntax error in NxQuat template's slerp code -B
AM Feb 22 fixed: setGlobalAxis/setGlobalAnchor in NxJoint and NxJointDesc transform to body space, while the local frames are documented as being in actor space, as they should be -B
AM Feb 22 releasing/in any way changing static actor doesn't notify its joints (incl: making it dynamic) == > workaround for now is to use NULL for static actors when jointing
-B AM Feb 22 fixed: Spellcheck api doc comments
-B AM Feb 22 new feature: kinematic motion of bodies
-B AM Mar 5 fixed: Several class doc comments are not immediately followed by the class declaration so doxygen ignores them.
-B AM Mar 02 fixed: Sleeping code is time step sensitive: With small dt stuff goes to sleep unrealistically fast.
-B AM Mar 05 fixed: Deleting while in bbox vis mode causes a crash
-B PT Mar 20 Fixed crash when running empty simulation
-B AM Mar 20 Improved capsule contact generation for parallell case.
-B PT Mar 22 Additional parameter in NxActor::wakeUp

API Changes

- replaced bitfields with enum flags (impacts aniso friction and joints)

Other changes

- removed all templates except NxArray
- Added 3 new samples
- fixed various contact stream iterator problems
- updated docs with kinematic bodies infos
- added this change log

2.02 - 2004.02.19
=================
Collision SDK and RB SDK Merged
Substance SDK Discontinued
Most of the tech completely rewritten - hence no change list.


1.91 - 2003.07.07
=================
Rigid Body SDK: get hinge angle and velocity query, for both artic and lagrange .
Rigid Body SDK: fixed: penetration correction of lagrange jointed stuff is worse than articulated stuff
Rigid Body SDK: fixed: dense grid of contacts acts weird (Pierre showed that this is fixed but we have no good repro)
Rigid Body SDK: changed solver to no sub iters (5x faster), and correct bounce correction
-- now big stacks go to sleep slower
-- boxes don't bounce up straight anymore
Rigid Body SDK: removed obsolete rigid sdk params
Rigid Body SDK: very redundant contacts are working.
Rigid Body SDK: stuff can be created in sleeping mode, even if jointed.
Rigid Body SDK: fixed: Articulations don't fall asleep
Collision SDK: heightfield mode for meshes
Foundation SDK: fixed inplace matrix transpose bug
Collision SDK: test cave configuration for terrains
Collision SDK: upgrated to opcode 1.3
Collision SDK: fixed a bug in mesh-mesh that didn't seem to be having any bad effects.
Foundation SDK: all stl gotten rid of
Foundation SDK: array class with decent memory management
Viewer: vs7 build of viewer
Tools: flexporter was exporting spheres wrong (made them off-center with a nonzero offset)
Rigid Body SDK: fixed: the asymetry of the fixed and prismatic joint leads to breakage if the bodies are not ordered right (it creates a different response.) Collision SDK: capsules integrated (Simon)
Rigid Body SDK: new contact solver combines Pierre's work
Rigid Body SDK: created fixed joint
Demo: gears demo
Demo: bride demo
Rigid Body SDK: added bias for limits.
Collision SDK: fixed a bug in sphere-sphere penetration computation
Foundation SDK: Spelling Error in Nx.h: "usually becase you have passed"
Rigid Body SDK: Spelling Error in NxRigidBodySDK.h: "byt": Larger values may fix exploding systems byt introduces constraint error.
Collision SDK: fixed incorrect computation of box-sphere penetration in the special case of the sphere center being embedded in the box.
Rigid Body SDK: fixed a bug regarding the deletion of effectors not removed from scene
Rigid Body SDK: fixed a bug regarding removal of joints, bodies, and effectors from one of multiple scenes, where they were not added
Rigid Body SDK: fixed a bug regarding the duplicate addition of effectors to a scene
Rigid Body SDK: fixed a bug with non-invertable response of fixed articulation
Viewer: fixed non pow2 texture widths are loaded badly (jpg format)
Collision SDK: Fixed a bug in mesh vs. line
Collision SDK: Fixed a bug in heightfield vs. box
Collision SDK: Fixed a bug in mesh vs. plane
Rigid Body SDK: fixed explosion on constraining missing featherstone dofs.
1.9
All SDKs: Codewarrior compiler compatibility -- renamed overloaded method names
All SDKs: Professional Edition DLLs
Rigid Body SDK: Fixed a crash bug related to deleting certain joints or bodies
Rigid Body SDK: Completely rewritten solver
Foundation SDK: changed memory allocation in foundation, + other misc stuff so other SDKs don't have to link with foundation

1.8 - 2003.06.01
=================
Rigid Body SDK: gravity applied if group is not sleeping
Rigid Body SDK: normal forces have different magnitudes, not real normal forces, just an estimate (this is a problem)
Rigid Body SDK: frict scaling params removed.
Rigid Body SDK: frict coeffs changed, new ranges
Rigid Body SDK: FAST linear time contact solver has good friction model!
Rigid Body SDK: FAST linear time contact solver!
Rigid Body SDK: add API method to purge limit planes.
Rigid Body SDK: applyImpulses () should checks f[i], and early outs if it is zero.
Collision SDK: sweep and prune broad phase, new NxBroadPhase
Collision SDK: caching of near phase results when there was no movement.
Collision SDK: redone exact mesh-box
Collision SDK: redone exact mesh-sphere
Collision SDK: fixed iterators in scene and shapeSet so that calling getNext () after hasMore() returns zero doesn't result in access violation. Actually, now hasMore () is redundant.
Viewer: changed default friction and restitution coeffs in viewer.
Viewer: don't pose change notify unless neccesary
Viewer: punching of bodies
Viewer: better mesh visualization

1.6 - 2003.02.21
=================
Viewer: delete bodies in viewer demos by right-dragging a body and then pressing delete.
Viewer: monster truck can now be driven even if some wheels have been deleted.
Viewer: tweaked monster truck car controller for torque based driving.
Viewer: Granny support for articulated characters ('ragdolls') (only available for Rad Game Tools Granny licensees)
Viewer: inertia tensor can be specified explicitly in the body block of an ods file
Viewer: Made a real collision veto joint in viewer
Collision SDK: fixed bug in mesh-box colldet (thanks to Jason Zisk of nFusion)
Collision SDK: mesh data structure can be visualized by appropriate setting SDK param.
Collision SDK: removed STL from hashGridSpace + optimized it a bit
Collision SDK: new contact groups methods, removed corresp. group methods from hashGridSpace.
Collision SDK: new pairwise contact disabling methods
Rigid Body SDK: hugely improved performance of hinge and prismatic joints, see the monster truck demo for an example.
Rigid Body SDK: NxBody::createClone()
Rigid Body SDK: customizeable damping in NxJoint, works only for chains of hinge and prismatic joints.
Rigid Body SDK: fixed defect in joint limit plane iteration.
Rigid Body SDK: fixed implementation bug of bool Scene::hasMoreJoints().
Rigid Body SDK: joint and body scene removal / addition / deletion error checking.
Rigid Body SDK: setVelocity / momentum only wakes bodies if the set vel is high.
More orderly shortcuts in startmenu.
More demos.
New licensing scheme (registry stuff goes to HKEY_CURRENT_USER, we don't mail reg files anymore.)
No more double precision libs shipped in personal edition (ask if you still want them)
updated docs

1.51 - 2003.01.09
=================
Fixed vsync slowdown problem in viewer
Frame rate limited to physics rate (usually 50 Hz)
single precision floating point DLLs for collision SDK and RB SDK(F32 suffix)
doc bug fixes

1.5
=================
Substance SDK
userErrorStream has new reportError member
Foundation SDK as DLL
substance SDK support in viewer
breaking joints was broken in 1.45, fixed.
mesh-box collision detection implemented
matrix ops of the form Mx::op(A,B) first write to a temp object in case A.op(A,B) is called.
also same for vector cross product.
fixed bug regarding edge-edge colldet penetration depth compute.
improved mesh-sphere
added fracturable vase and road blocks to monster truck demo

1.45 - 2002.12.02
=================
updated simple demos
added colldet block and sim params block to demo scripts.
obstacle support removed
mass = 0 bodies can have material properties
getBodies method in NxJoint
fixed hashspace problem
solver params settable from scripts
fixed box-box bug
stuff stuck in air now wake up
thin rod spin limiting by max angular velocity
joint support improved for Juice

1.44 - 2002.10.30
=================
mesh-mesh collision detection added
mesh-sphere collision detection added
mesh-line collision detection added
mesh-plane collision detection added
internal parameters exposed
doc bugs fixed
full screen mode put back
box-sphere collision penetration depth fix
isAttachedByJoint typo
NxSphere, etc. can have release() called on it directly.

1.431
=================
mass adaptive drag force strength in viewer

1.43 - 2002.10.15
=================
additions and fixes in viewer and rigid body documentation (thanks to Nate and Pierre)
memory leak fix in viewer (thanks to Mete)
domino demo failure
included Pierre's new toboggan demo

1.42 - 2002.10.08
=================
fixed installer problem (DLL placement)

1.41 - 2002.10.03
=================
memory manager issues
readme for max exporter
shortcuts to viewer doc and projects
readme file correction

1.4 - 2002.08.25
================
first public SDK release


==EOF==
-

-
Copyright © 2006 AGEIA Technologies Inc, Suite 118, 82 Pioneer Way, -Mountain View, CA 94041 U.S.A. All rights reserved. www.ageia.com - - + + + + Release Notes - AGEIA PhysX SDK 2.6 + + + +
+

+
+

Release Notes - AGEIA PhysX SDK 2.6.0

+

28th September 2006

+

 

+

What's New In AGEIA PhysX 2.6

+
+

Hardware/Software Rigid Bodies

+
    +
  • There is a new joint projection mode, NX_JPM_LINEAR_MINDIST, that uses only + linear projection for improved performance.
  • +
  • A new stack overflow protection scheme is in place, where too-large stack allocations are replaced by heap allocations when needed. If heap allocations are suddenly causing a slowdown, the threshold for this fallback can be set using NxFoundationSDK::setAllocaThreshold().
  • +
  • Fixed: Raycasts missing on the exact boundary of a heightfield.
  • +
  • Fixed: Filtering does not work correctly with HSM.
  • +
  • Fixed (SW): DistanceJoint will not work properly when attachment points coincide in worldspace.
  • +
  • Fixed: No contacts generated in Capsule-Capsule collision when capsule segments intersect.
  • +
  • Fixed: No contacts generated in capsule-convex collision when capsule penetrates convex.
  • +
  • Fixed: CCD collision response in FW scenes.
  • +
+

Hardware Fluids

+
    +
  • Fluid collision improvements including support for a + collision distance between fluid particles and rigid + body geometry which is maintained during the + simulation + (NxFluidDesc::collisionDistanceMutliplier).
  • +
  • A new method, NxScene::cookFluidMeshHotspot, allows + for preparing static mesh, height field and convex + shapes for fluid collision, preventing on-the-fly + cooking.
  • +
  • More information about particles including particle + flags, IDs and notifications for particle + creations/deletions.
  • +
  • New runtime switches for degrading simulation + fidelity on heavy system load.
  • +
  • Fluids emitters are now attached to shapes not actors.
  • +
+

Hardware/Software Cloth

+
    +
  • Cloth metal - a combination of deformable cloth and + nondeformable rigid body, useful for sheet metal and + similar objects. This mode can be activated by + attaching a piece of cloth to a rigid body via the + NxCloth::attachToCore method.
  • +
  • Cloth self collision is now implemented and can be activated by means of + NxClothFlag::NX_CLF_SELFCOLLISION.
  • +
+

Hardware Scene Manager(HSM)

+
    +
  • The HSM now uses Compartments, allowing the utilization of multiple PhysX cards + in future versions.
  • +
  • The interface of the HSM has been completely revised.
  • +
+

Performance

+
    +
  • The performance of some scenes with many kinematic actors and/or a lot of broadphase activity has been improved.
  • +
  • Fluid collision performance improved, especially for dynamic convex shapes.
  • +
+

Serialization

+
    +
  • A new serialization library has been introduced called NxuStream
  • +
  • This is a source code library with an easy to use interface.
  • +
  • SampleAssetExport and SampleSceneExport demonstrate how to use this library.
  • +
  • It is now possible to serialize to and from an XML file format, as a high speed binary file, and in COLLADA 1.4.1 physics.
  • +
+

Documentation

+
    +
  • Many small corrections and fixes for the user guide and API + reference.
  • +
  • Information in the User's Guide pertaining to hardware has been concentrated in one place.
  • +
  • User guide documentation for: +
      +
    • Compartments
    • +
    • Training programs
    • +
    • Cloth Metal
    • +
    +
  • +
+

Installer

+
    +
  • The client installers have been replaced by a single client installer. This installer is based on the MSI/WISE installer which was distributed in the past. There is no longer an NSIS based installer.
  • +
+
+

Supported Platforms

+
+

Runtime

+
    +
  • Software Runtime for Microsoft Windows XP (32bit and 64bit + editions; Pentium III / Athlon XP and higher only)
  • +
  • Software Runtime for Microsoft Windows Vista (32bit + edition; Pentium III / Athlon XP and higher only)
  • +
  • AGEIA PhysX Hardware Runtime for Microsoft Windows XP + (32bit and 64bit editions)
  • +
  • AGEIA PhysX Hardware Runtime for Microsoft Windows Vista + (32bit and 64bit editions)
  • +
  • Microsoft XBox360
  • +
  • Sony Play Station 3 (provided by Sony)
  • +
  • Software Runtime for SuSE Enterprise Linux 10.0 (alpha release; 32bit and 64bit + editions; Pentium III / Athlon XP and higher only)
  • +
  • Software Runtime for Red Hat Enterprise Linux WS 4.0 (alpha release; 32bit and 64bit + editions; Pentium III / Athlon XP and higher only)
  • + +
+

Development

+
    +
  • Microsoft Windows XP
  • +
  • Microsoft Visual Studio .NET 2003
  • +
  • Microsoft Visual Studio .NET 2005
  • +
  • Microsoft XBox360 development tools
  • +
  • Sony Playstation 3 development tools
  • +
  • SuSE Enterprise Linux 10.0 (alpha release)
  • +
  • Red Hat Enterprise Linux 4.0 WS (alpha release)
    +
  • +
+
+


+ +Known Issues And Limitations

+
+

Hardware/Software Rigid Bodies

+
    +
  • Objects may not get woken if they lose contact but their bounds still overlap.
  • +
  • Objects may have difficulty falling asleep if they have alternating bounds overlaps with non sleeping bodies.
  • +
  • Joint projection may cause instability in the D6 joint.
  • +
  • joints may pull off each other when the mass relationship is not properly set up
  • +
  • joints' behavior may differ when actors are in very small size.
  • +
+

Hardware Fluids

+
    +
  • Dynamic fluid - mesh shape collision isn't supported anymore.
  • +
  • Dynamic convex shapes are limited to 64 planes for + fluid collision. If a convex consists of more than 64 + planes, only the first 64 planes are taken into consideration for + collision. If this is the case it may happen that particles collide + with the axis aligned bounding box of the convex shape.
  • +
  • If fluid particles are located more than + 32768*NxFluidDesc::kernelRadiusMultiplier/NxFluidDesc::restParticlesPerMeter + units far from the world origin, collision and SPH computations will fail. +
  • +
  • If particles get trapped between two dynamic rigid + bodies, they jitter within the penetration depth of + the rigid bodies.
  • +
  • Switching from no-particle-interaction mode to mixed mode or even sph mode can cause instabilities in the simulation.
  • +
  • Fluids have a limit on the packet number. It's 1024.
  • +
  • Max 4096 new Particles per time step can be added by the function of NxFluid::addParticles().
  • +
  • 16 Mbytes are reserved on the PPUs external memory + for cooked static collision geometry for fluids. If + this is exceeded during runtime collision geometry is + dropped and a debug message + "Hardware heap ran out of memory" is generated. The call + NxScene::cookFluidMeshHotspot can't cause this, since + it only cooks data and doesn't transfer the data to + the PPUs external memory yet.
  • +
  • If more than 8192 static triangles are located in the range + of a fluid packet, triangles will be dropped. + A debug message is generated in this case. +
  • +
+

Hardware/Software Cloth

+
    +
  • A self-collision enabled cloth can still intersect itself due to high relative + velocities of cloth particles, small cloth thickness, multiple collisions with + other objects or user interaction.
  • +
  • Untangling is not yet supported.
  • +
  • Collision handling between different pieces of cloth is not yet supported.
  • +
  • Supported core bodies for cloth metal are boxes, + spheres, capsules and compounds of spheres.
  • +
  • The metal deformation is penetration based. This + means that if the rigid body solver leaves a big + penetration, the result looks more dramatic. Thus, in + some range, the deformation is not predictable. + However, the cloth is moved towards the colliding + body by the penetrationDepth parameter at an impact + so the penetration just varies around this value.
  • +
  • Attaching a low density actor to cloth in NX_CLOTH_ATTACHMENT_TWOWAY mode can cause unstable simulation.
  • +
  • When the density of object collision with cloth is too high, the objects can easily penetrate cloth, even in very low speed.
  • +
  • In some cases a cloth can slip through a concave corner or a valley edge during mesh or terrain collisions. (Workaround: Increase the cloth's thickness or bending stiffness)
  • +
+

Hardware Scene Manager(HSM)

+
    +
  • dynamic triangle meshes are not supported anymore.
  • +
  • Objects in compartments are not visualized.
  • +
  • Hardware objects from different hardware compartments do not interact (i.e., cloth and rigid).
  • +
+

Serialization

+
    +
  • COLLADA does not retain all of the physics data in our SDK. It will not retain heightfields, wheel shapes, CCD information, cloth, fluids, or a number of other items that are not in the COLLADA 1.4.1 specification. +
  • +
+

Installers

+
    +
  • The AGEIA PhysX SDK must be installed to run samples as they + rely on DLLs contained within the main SDK installer.
  • +
+

Windows Device Driver

+
    +
  • No known issues.
  • +
+

Tools

+
    +
  • There is currently no support for content creation tools in the Linux SDK release.
  • +
+
+ +

Release Notes - AGEIA PhysX SDK +2.5.1

+ +

17th August 2006

+ +

 

+ +

What's New In AGEIA PhysX 2.5.1

+ +
+

General

+
    +
  • The NxPhysicsSDK object is now reference counted, and + thus all NxCreatePhysicsSDK()/NxCreatePhysicsSDKWithID() + calls should be matched with an NxReleasePhysicsSDK() + call.
  • +
+

Hardware/Software Rigid Bodies

+
    +
  • The following HW Rigid Body optimizations have been + introduced.
      +
    • Improved mesh cooking
    • +
    • Optimized narrow phase collision detection
    • +
    • Optimized broad phase collision detection
    • +
    • Optimized dynamics solver
    • +
    +

    These optimizations are expected to improve + performance with no significant change to the + behavior of the simulation.

    +
  • +
+

Windows Device Driver

+
    +
  • Microsoft Windows XP 32bit and 64bit now supported. + Allows for 32bit software which use AGEIA PhysX + hardware to run on Microsoft Windows XP 64bit.
  • +
+
+ +

Supported Platforms

+ +
+

Runtime

+
    +
  • Software Runtime for Microsoft Windows XP (32bit and 64bit + editions)
  • +
  • Software Runtime for Microsoft Windows Vista (32bit + edition)
  • +
  • AGEIA PhysX Hardware Runtime for Microsoft Windows XP + (32bit and 64bit editions)
  • +
  • AGEIA PhysX Hardware Runtime for Microsoft Windows Vista + (32bit edition)
  • +
  • Microsoft XBox360
  • +
  • Sony Play Station 3 (provided by Sony)
    +
  • +
+

Development

+
    +
  • Microsoft Windows XP
  • +
  • Microsoft Visual Studio .NET 2003
  • +
  • Microsoft XBox360 development tools (August 2006 XDK + v3529)
  • +
  • Sony Playstation 3 development tools
  • +
+
+ +

+ +


+Known Issues And Limitations

+ +


+Below is a list of new issues and limitations; this is an +addition to the list from 2.5.0.

+ +
+

Windows Device Driver

+
    +
  • Since the AGEIA PhysX Properties Control Panel Applet + is a 32-bit DLL, it does not appear in the Control + Panel automatically under 64-bit Windows. The user + must enable 32-bit Control Panel icons for it to + appear.
  • +
+

Hardware/Software Rigid Bodies

+
    +
  • If shapes are added to an actor containing a single + triangle mesh shape in a HW scene, collisions with + the triangle mesh shape will no longer work. The + problem lies in the transition from single shape + actor to a compound, which means that compound actors + can be created with triangle mesh shapes either by + specifying all shapes directly in the descriptor, or + by making sure that the triangle mesh is never the + only shape in the actor.
  • +
+
+ +

Release Notes - AGEIA PhysX SDK 2.5.0

+

30th June 2006

+

 

+

What's New In AGEIA PhysX 2.5

+
+

Hardware/Software Rigid Bodies

+
    +
  • Sweep API - Allows swept shape queries against a scene.
  • +
  • Active Transform Notification - Provides a list of actors which + have been updated.
  • +
  • Sleep Events - Provides a notification when an actor wakes up or + goes to sleep.
  • +
  • Kinetic Energy Based Sleeping - An improved criteria for + deciding if an actor should sleep. This is now the default.
  • +
  • Reduced overhead for sleeping actors.
  • +
  • Contact Modification - A callback is provided which allows the + user to modify contacts between the near phase and solver.
  • +
  • Fine grained threading is now enabled on the PC - parallel near + phase and solver.
  • +
  • Version Controlled Cooking - Cooking is now versioned along with + the runtime.
  • +
  • New/Delete has been cleaned up in many places and all calls + should now go through the user supplied memory allocator.
  • +
  • Adaptive force improvements - The adaptive force optimization is + now only applied to groups of objects which are in contact with a + static object, for example a stack resting on the floor.
  • +
  • The ratio property of a pulley joint is a force ratio rather + than a distance ratio.
  • +
  • The gear ratio of joints take into account the inertial + properties of the bodies involved. This affects the way forces are + propagated.
  • +
  • All joint types and collision primitives have software fall + backs in hardware scenes.
  • +
  • Full contact callbacks and modifiable contacts available in HW + scenes, but with substantial performance overhead.
  • +
  • Up to 64K shapes, 64K bodies, and 64K D6 joints may be created + in hardware scenes (but note the limitation below concerning active + object counts.)
  • +
+

Hardware Fluids

+
    +
  • Fluid surfaces allow triangle meshes surfaces to be generated + for fluids on the PPU. Basic fluid surface feature set includes: +
      +
    • Depth smoothing
    • +
    • Multiple fluid surfaces associated with fluids
      +
    • +
    • User defined particles supported
    • +
    +
  • +
  • Two Way Interaction - Fluids can now exert a force on a rigid + body.
  • +
  • NX_FF_ENABLED flag added - This allows simulation to be enabled + and disabled for fluids. By default the flag is set. When turning the + flag off (on NxFluid), the next fluid step is not carried out. + Particles are not copied to the user buffers
  • +
  • NX_SF_FLUID_DRAIN_INVERTED - Removed for performance reasons. + There are workarounds to get the same effect.
  • +
+

Hardware/Software Cloth

+
    +
  • Basic feature set: +
      +
    • stretching and bending resistance
    • +
    • two way rigid body interaction
    • +
    • attachments
    • +
    • damping and friction
    • +
    • tearing
    • +
    • pressure
    • +
    +
  • +
+

Hardware Scene Manager(HSM)

+
    +
  • Two way hardware rigid body and cloth interaction.
  • +
  • Two way fluid and rigid body interaction.
  • +
  • One way managed rigid body versus primary scene rigid body + interaction, including:
  • +
  • Software material table mirrored to the managed scenes.
  • +
  • Software static meshes are paged to managed scenes.
  • +
  • Group based filtering mirrored to the managed scenes.
  • +
  • Ray cast results include query performed against managed scenes.
  • +
+

Performance

+
    +
  • Sleeping objects are much faster, not consuming any CPU in 2.5
  • +
  • New friction model in 2.5 is somewhat faster, showing up in + stacking scenarios
  • +
  • Anisotropic friction, per-triangle materials and terrain height + fields run somewhat slower than in 2.4
  • +
  • All joint types but the D6 run somewhat slower in 2.5
  • +
  • Hardware rigid body scenes consume more CPU cycles than in 2.4
  • +
  • Running a scene on multiple threads now consumes memory + proportional to the number of threads concurrently within the SDK + rather than the number of threads which have entered the SDK since + creation.
  • +
  • Xbox 360 Optimization: +
      +
    • VMX128 rigid body constraint + solver.
    • +
    • VMX128 cloth solver.
    • +
    • VMX128 optimizations to box-box, + convex-mesh and convex-convex collision detection.
    • +
    • VMX128 midphase optimization for sphere-mesh, capsule-mesh, + OBB-mesh
    • +
    • VMX128 some small optimization for CCD.
      +
    • +
    +
  • +
  • PlayStation3 PPU only version significantly faster due to changes in Vector library.
  • +
+

Rocket

+
    +
  • Updated interface using menu items in addition to onscreen + buttons.
  • +
  • Support for Cloth
  • +
  • Support for Fluids
  • +
  • Support for NxUStream
  • +
  • (For details, see the Rocket documentation included in the Tools + Installer)
  • +
+

Installers

+
    +
  • With the high/low level split in the SDK, the source code + installer will not contain sources for low level components
  • +
  • 2.5.0 includes a tools installer. For beta and beyond, it will + include Rocket, a 3DStudio Max plugin and a Maya plugin.
  • +
  • Tool developers can now specify the version of cooking they want + to use.
  • +
  • Applications no longer need to include the PhysXLoader (that is + now in the System32 folder)
  • +
+

Documentation

+
    +
  • Many small corrections and fixes for the user guide and API + reference.
  • +
  • User guide and API reference documentation for: +
      +
    • Fluid surfaces
    • +
    • Contact modification callback
    • +
    • Sweep tests
    • +
    • Active transform notification
    • +
    • Sleep events
    • +
    • Hardware scene manager
      +
    • +
    • Cloth tearing and pressure
      +
    • +
    • Mesh auto paging
      +
    • +
    +
  • +
  • Updates to the tutorials and samples pages.
  • +
+

Windows Device Driver

+
    +
  • Support for PCIExpress Cards
  • +
+
+

Supported Platforms

+
+

Runtime

+
    +
  • Software Runtime for Microsoft Windows XP (32bit editions)
  • +
  • AGEIA PhysX Hardware Runtime for Microsoft Windows XP (32bit + editions)
  • +
  • Microsoft XBox360
  • +
  • Sony Play Station 3 (provided by Sony)
    +
  • +
+

Development

+
    +
  • Microsoft Windows XP
  • +
  • Microsoft Visual Studio .NET 2003
  • +
  • Microsoft Visual Studio .NET 2005 (not supported, project files + only)
    +
  • +
  • Microsoft XBox360 development tools
  • +
  • Sony Playstation 3 development tools
    +
  • +
+
+


+ +Known Issues And Limitations

+
+

Hardware/Software Rigid Bodies

+
    +
  • Joint types other than D6, spherical and revolute are partially + simulated in software.
  • +
  • For HW D6 joints, Only angular orientation drive & linear + position drive are supported, i.e. slerp drive & velocity + drive are not supported.
  • +
  • Wheel shape and joint parameters may need tweaking due to solver + changes.
  • +
  • Spherical and revolute joint behavior may differ from 2.4.
  • +
  • All joint break limits are specified as a maximum impulse and + might need to be adjusted.
  • +
  • User break notification now reports an impulse which is clamped + to the break impulse.
  • +
  • The friction model has changed. It should now be somewhat + stiffer. In addition friction is applied as soon as a contact is + created.
  • +
  • Mesh-Mesh collision detection is always performed in software(in + particular PMaps).
  • +
  • Mesh based height field collisions and height field collisions + are performed in software.
  • +
  • Wheel shapes are simulated in software.
  • +
  • Mesh and height field collisions are performed in software if + the mesh/height field has multiple materials defined.
  • +
  • Anisotropic friction is partially performed in software.
  • +
  • User contact reports and contact modification have quite a large + performance hit.
  • +
  • The result of sweep tests which are initially penetrating is + currently undefined.
  • +
  • Only boxes and capsules are supported by the sweep API as swept + objects. (spheres are emulated as capsules of zero length).
  • +
  • Sweep tests against planes, wheel shapes, and height fields are + not supported.
  • +
  • All sweep tests are synchronous(NX_SF_ASYNC is not supported).
  • +
  • Trigger shapes do not take part in CCD (Continuous Collision + Detection).
  • +
  • The methods isSleeping() and isGroupSleeping() now return the + same value.
  • +
  • Contact forces are not reported unless NX_NOTIFY_FORCES is set
  • +
  • Scene statistics no longer report the number and maximum number + of contacts, axis constraints or solver bodies
  • +
  • Hardware rigid body scenes support at most 4K active bodies. The + following additional restrictions are expected to be removed or + significantly alleviated during beta: at most 8K active shapes (shapes + whose pose is linked to active bodies), 4K active joints, and 4K + software fall back constraints. Note: these are counts for active + objects, sleeping objects are not included in the limits.
    +
  • +
  • The hardware broad phase supports at most 4080 actors. Broad + phase runs in hardware only if the NX_SF_RESTRICTED_SCENE flag is set + on the scene. Otherwise broad phase runs in software even in hardware + scenes, and there are no size restrictions.
  • +
  • Joint pose projection is not hardware accelerated
  • +
  • Hardware convexes are limited to 32 vertices and 32 faces. Convexes will fallback + to software above these limits.
  • +
+

Hardware Fluids

+
    +
  • Maximum of 32767 particles per fluid.
  • +
  • Only limited fluid surface depth smoothing is supported in + hardware with filter size = 3.
  • +
  • Silhouette smoothing for fluid surfaces is not supported in + hardware.
  • +
  • Fluid surface resolution is limited to no more than 256x256, so + in the initial state, if the resolution is beyond the limitation, + NxImplicitScreenMeshDesc::isValid() will give an assert error. But if + this resolution is changed during application program running, it will + be automatically clamped to the maximum value.
  • +
  • Quadtree hierarchy mesh is not supported in hardware for fluid + surfaces.
    +
  • +
  • Two way interaction may be unstable with resting + particle-RB-contacts.
  • +
  • If the fluid hits packets which contain a high triangle density, + fluid mesh cooking on the host might become the bottleneck. However + there is logic to prevent detailed cooking when the load is too high. + Also cooking is now taking place in a separate thread, which removes + frame rate hick ups.
  • +
+

Hardware/Software Cloth
+

+
    +
  • Convexes up to 120 planes
  • +
  • Only cloth particle collision detection (no cloth triangle + collision detection)
  • +
  • < 1024 attached particles per cloth (limit might be removed + before release)
  • +
  • < 1024 colliding shapes (limit might be removed before + release)
  • +
  • Wild movement of the cloth in connection with high bending + stiffness can get the cloth into an entangled state. It looks like the + cloth would locally stick to itself. This is a local self collision + issue. Workaround: reduce bending stiffness.
  • +
  • Squeezing cloth between rigid bodies can cause jittering. + Workaround: reduce cloth thickness.
  • +
  • For small meshes (< 256 vertices) it is more efficient to + merge several of them into one cloth than creating a cloth instance for + each individual mesh. These meshes do not need to be connected (e.g. + multiple leaves of a plant).
  • +
+

Hardware Scene Manager(HSM)

+
    +
  • Only group based collision reports are supported by the HSM.
  • +
  • Only a single managed hardware scene is supported by the HSM.
  • +
  • Effectors between hardware actors are not supported.
  • +
  • Actor and Shape pair flags not supported by the HSM.
  • +
  • Scene stats for hardware objects controlled by the HSM are not + supported.
  • +
  • Hardware rigid bodies do not exhibit two way interaction with + software objects under the HSM.
  • +
  • Hardware objects from separate scenes do not interact(e.g. rigid + body, cloth, fluids) under the HSM.
  • +
  • Dynamic height fields mirrored into the cloth and fluid scenes + will only supply 64 triangles, the rest will be silently dropped.
  • +
  • Shapes mirrored into the slave scene(cloth, rigid body, fluids) + will not be updated until they are mirrored/un-mirrored. This means if + you change a shape property(e.g. sphere radius) the hardware objects + will not be updated.
  • +
  • In the hardware rigid body scene only dynamic objects are + mirrored to the software scene.
  • +
+

Rocket

+
    +
  • No known issues.
  • +
+

Installers

+
    +
  • The AGEIA PhysX SDK must be installed to run samples as they + rely on DLLs contained within the main SDK installer.
  • +
+

Windows Device Driver

+
    +
  • No known issues.
  • +
+
+
+
+
    +
+
+

Release Notes - AGEIA PhysX SDK 2.4.0

+

23rd February 2006

+

AGEIA PhysX SDK Build Component

+

What's New?

+
    +
  1. Documentation and Samples for new features.
  2. +
  3. A number of smaller documentation corrections and +clarifications.
  4. +
+

Platforms Supported

+Development: +
    +
  • Microsoft Windows XP (32bit editions)
  • +
  • Microsoft Visual Studio .NET 2003
  • +
  • Microsoft Visual Studio .NET 2003 with the XBox360 development +kit.
  • +
+Not Supported for Development: +
    +
  • Microsoft Windows XP x64 Edition (and all other 64bit editions)
  • +
  • Microsoft Visual Studio .NET 2005 (project files not provided / +not tested)
  • +
  • Microsoft Visual C++ 6 (project files not provided / not tested) +
  • +
+

Known Issues and Limitations

+
    +
  • The AGEIA PhysX SDK Build Component and AGEIA PhysX Software +Runtime Component must be installed to run samples and training +programs, since they rely on DLLs contained within the runtime +component.
  • +
+

Version

+2.4.0 +

AGEIA PhysX Software Runtime Component

+

What's New?

+
    +
  1. Dynamic vs Dynamic CCD support
  2. +
  3. Support for heightfield shapes
  4. +
  5. User thread control.
  6. +
  7. Fine grained threading of the simulation(available only on +XBox360)
  8. +
  9. Additional overlap tests for shapes
  10. +
  11. Hardware scene manager, allows fluids to interact with rigid +bodies.
  12. +
+

Platforms Supported (Runtime)

+
    +
  • Microsoft Windows XP (32bit editions)
  • +
  • Microsoft XBox 360
  • +
  • Sony PlayStation3 (provided by Sony)
  • +
+

Known Issues and Limitations

+
    +
  1. The AGEIA PhysX SDK must be installed to run samples as they +rely on DLLs contained within the main SDK installer.
  2. +
+

Version

+2.4.0 +

Hardware Rigid Bodies (AGEIA PhysX Driver)

+

What's New?

+
    +
  1. Many optimizations and Bug fixes.
  2. +
  3. D6 joint support. The D6 supports the following features: +breaking and signaling, angular orientation drive and gears,
  4. +
  5. The simulation no longer locks up on firmware crashes. Instead a +flag passed to fetchResults () which is set on an error.
  6. +
  7. A new error reporting tool allows the driver to record the +simulation state leading up to a crash to allow analysis and bug +fixing.
  8. +
+

Platforms Supported (Runtime)

+
    +
  • Microsoft Windows XP (32bit editions) with an AGEIA PhysX Card
  • +
+

Known Issues and Limitations

+
    +
  1. There is a limit of 2048 D6 joints per scene.
  2. +
  3. Only angular D6 drives are supported. All other types of drive +are not supported.
  4. +
  5. D6 joint pose projection is disabled.
  6. +
+

Version

+2.4.0 +

Hardware Fluids (AGEIA PhysX Driver)

+

What's New?

+
    +
  1. The AGEIA PhysX SDK now has a hardware scene manager, which +allows fluids to be created in a software scene. The hardware scene +manager takes care of mesh cooking and mirroring actors into the +hardware scene.
  2. +
  3. Support for more dynamic shapes in a fluid scene: convex mesh, +box, capsule, sphere
  4. +
  5. The following unimplemented API calls have been removed: +
      +
    • NX_FF_MESH_INCLUDE_SEPARATED
    • +
    • void NxFluid::setCollisionGroup(NxCollisionGroup group);
    • +
    • NxU32 NxFluid::getCollisionGroup();
    • +
    • NxImplicitMesh* NxFluid::createSurfaceMesh(const +NxImplicitMeshDesc& mesh);
    • +
    • void NxFluid::releaseSurfaceMesh();
    • +
    • NxImplicitMesh* NxFluid::getSurfaceMesh();
    • +
    • NxFluid::getDynamicActorReactionSmoothing ()
    • +
    • NxFluid::setDynamicActorReactionSmoothing(NxReal smooth)
    • +
    • NxFluid::getDynamicActorReactionScaling()
    • +
    • NxFluid::setDynamicActorReactionScaling(NxReal scale)
    • +
    • NxFluid::setOnSeparationAction (NxFluidParticleAction +action, bool val)
    • +
    • NxFluid::getOnSeparationAction(NxFluidParticleAction action) +
    • +
    • NxFluid::setOnCollision(NxFluidParticleAction action, bool +val)
    • +
    • NxFluid::getOnCollision(NxFluidParticleAction action)
    • +
    • NxFluid::setOnLifetimeExpired(NxFluidParticleAction action, +bool val)
    • +
    • NxFluid::getOnLifetimeExpired(NxFluidParticleAction action)
    • +
    • typedef NxU16 NxFluidGroup;
    • +
    • void NxFluid::setFluidGroup(NxFluidGroup group)
    • +
    • NxU32 NxFluid::getFluidGroup()
    • +
    • NxU32 NxFluidDesc::onSeparation;
    • +
    • NxU32 NxFluidDesc::onCollision;
    • +
    • NxU32 NxFluidDesc::onLifetimeExpired;
    • +
    • NxReal NxFluidDesc::dynamicActorReactionSmoothing ;
    • +
    • NxReal NxFluidDesc::dynamicActorReactionScaling;
    • +
    • NxReal NxFluidDesc::collisionGroup;
    • +
    • class NxImplicitMesh
    • +
    • void NxPhysicsSDK::setFluidGroupPairFlags()
    • +
    • NxPhysicsSDK::getFluidGroupPairFlags()
    • +
    • NxScene::setUserFluidContactReport()
    • +
    • NxScene:: getUserFluidContactReport()
    • +
    • NxImplicitMesh * NxScene::createImplicitMesh();
    • +
    • Void NxScene::releaseImplicitMesh();
    • +
    • NxScene::getNbImplicitMeshes
    • +
    • NxImplicitMesh** NxScene::getImplicitMeshes()
    • +
    • class NxUserFluidContactReport
    • +
    • NxFluidCollisionMethod::NX_F_DYNAMIC_ACTOR_REACTION
    • +
    +
  6. +
+

Platforms Supported (Runtime)

+
    +
  • Microsoft Windows XP (32bit editions) with an AGEIA PhysX Card
  • +
+

Known Issues and Limitations

+
    +
  1. The maximum number of capsules are limited to 1024 in a scene.
  2. +
  3. The maximum number of boxes in a scene is limited to 1024.
  4. +
  5. Spheres are emulated as capsule of zero height, so they share +the same limitation as capsules.
  6. +
+

Version

+2.4.0 +

Cloth

+

What's New?

+
    +
  1. Software only cloth support (see the user guide for further +details)
  2. +
  3. Collision filtering.
  4. +
  5. Support for tearing and pressure.
  6. +
+

Platforms Supported (Runtime)

+
    +
  • Microsoft Windows XP (32bit editions)
  • +
  • Microsoft XBox 360
  • +
+

Known Issues and Limitations

+
    +
  1. A cloth can bend too much and get stuck in itself. Workaround: +use less bending stiffness or variate the bending stiffness over time.
  2. +
+

Version

+2.4.0 +

Tools

+

What's New?

+
    +
  1. NxuStream- Support for serialization of the physical scene. +Supported formats include binary, Ascii(write only) and Collada
  2. +
  3. Visual Remote Debugger - View the physical representation used +by a game in real time and gather statistics and profiling information. +
  4. +
+

Platforms Supported (Runtime)

+
    +
  • Microsoft Windows XP (32bit editions)
  • +
  • Microsoft XBox 360
  • +
  • Sony PlayStation3 (provided by Sony)
  • +
+

Known Issues and Limitations

+
    +
  1. NxuStreamdoes not import Collada files created with other +libraries correctly.
  2. +
  3. Visual Remote Debugger connections must be enabled immediately +after initializing the SDK, otherwise the connection is likely to fail +(because object creation data, etc, is lost). For example: +
    // Create Physics SDK ...

    gPhysicsSDK->getFoundationSDK().getRemoteDebugger()->connect ("localhost", 5425);
    +
  4. +
  5. Reading profiler data at the same time the Visual Remote +Debugger is connected is not supported. Profiler data will not be +returned to the user when they call NxScene::readProfileData() if the +debugger is connected.
  6. +
+

Version

+2.4.0 +
+

Release Notes - AGEIA PhysX SDK 2.3.2

+

6th January 2006

+

AGEIA PhysX SDK Build Component

+

What's New?

+
    +
  1. It is no longer possible for end users to load PhysXCore.dll +from the application directory. The correct version is now loaded by +PhysXLoader from "Program Files\Ageia Technologies"
  2. +
  3. Installer improvements.
  4. +
  5. Fixes to sample project files.
  6. +
  7. Foundation.lib included with the XBox 360 installer.
  8. +
  9. Lots of documentation improvements.
  10. +
+

Platforms Supported

+Development: +
    +
  • Microsoft Windows XP (32bit editions)
  • +
  • Microsoft Visual Studio .NET 2003
  • +
  • Microsoft Visual Studio .NET 2003 with the XBox360 development +kit. Not Supported for Development:
  • +
  • Microsoft Windows XP x64 Edition (and all other 64bit editions)
  • +
  • Microsoft Visual Studio .NET 2005 (project files not provided / +not tested)
  • +
  • Microsoft Visual C++ 6 (project files not provided / not tested) +
  • +
+

Known Issues and Limitations

+
    +
  • The AGEIA PhysX SDK Build Component and AGEIA PhysX Software +Runtime Component must be installed to run samples and training +programs, since they rely on DLLs contained within these components.
  • +
+

Version

+2.3.2 +

AGEIA PhysX Software Runtime Component

+

What's New?

+
    +
  1. Improved convex hull generation algorithm(the old method is +still available using a flag)
  2. +
  3. Character controller fixes.
  4. +
  5. Fix for distance joints not being breakable.
  6. +
  7. Additional overlap/intersection queries.
  8. +
  9. Fix for performance issues related to SSE denormal handling on +some machines.
  10. +
+

Platforms Supported (Runtime)

+
    +
  • Microsoft Windows XP (32bit editions)
  • +
  • Microsoft XBox 360
  • +
  • Sony PlayStation3 (provided by Sony)
  • +
+

Known Issues and Limitations

+
    +
  1. When statically linked(for example on XBox360) calling +NxInitCooking() overwrites parameters set when calling +NxCreatePhysicsSDK(). For example the error stream is reset. This +occurs because the variables are shared when statically linked.
    +Workaround: Supply the same parameters to NxInitCooking() and +NxCreatePhysicsSDK()
  2. +
  3. In some cases convex hull generation can fail for degenerate +input.
    +Workaround: Supply geometry without degenerate sets of points (edges +and planes). Use the legacy convex hull generation(see +NX_CF_USE_LEGACY_COOKER).
  4. +
+

Version

+2.3.2 +

Hardware Rigid Bodies (AGEIA PhysX Driver)

+

What's New?

+
    +
  1. Many bug fixes and optimizations.
  2. +
  3. Fix getWorldBounds () for triangle mesh shapes.
  4. +
  5. Driver error reporting in fetchResults()
  6. +
+

Platforms Supported (Runtime)

+
    +
  • Microsoft Windows XP (32bit editions) with an AGEIA PhysX Card
  • +
+

Known Issues and Limitations

+
    +
  1. See the API references for details concerning which API +functions are supported.
  2. +
  3. At most 2000 shapes can be present in a scene at once (this +includes both static and dynamic shapes).
  4. +
  5. Precision limitations suggest that physics behavior may not be +stable or correct more than 1000 units from the origin.
  6. +
  7. Rigid body scenes occupy 32MB of memory on the card, so that +absolutely no more than three scenes may be present on the card at +once.
  8. +
  9. The following is an important but non-exhaustive list of SDK +features which are not supported: joints, continuous collision, contact +notification, many debugging visualization, contact notifications, +triggers, per shape skin width.
  10. +
  11. Convex hulls are limited in this release to have at most 32 +vertices and 32 faces.
  12. +
  13. Using terrain meshes on hardware requires making use of the new +mesh paging API. When a mesh is cooked, it is divided into a number of +hardware pages, and these pages must be manually moved to the card by +the application for any collision to take place.
    +The number of pages into which a mesh will be cooked is variable, and +will depend on the degree of local convexity in the mesh. However, at +least 500 triangles should fit into a mesh page, and the allocation of +16MB of mesh data supports 256 pages, which allows for the presence of +more than 100,000 triangles on the card. Note that when a page is +removed from the card, the space occupied by that mesh page is not +freed until after the physics has been stepped. No data yet exists for +the performance of paging meshes on and off the card; however as a +baseline the raw transmission of a mesh page by DMA requires half a +millisecond.
    +As in the software SDK, in the absence of ATT it is easy for thin +objects to tunnel through the mesh; in particular collisions will not +be detected with objects whose center lies beneath the mesh.
  14. +
  15. Due to limitations of the friction model, objects sliding on a +triangle mesh may not have correct frictional behavior. Per-triangle +materials are not supported.
  16. +
+

Version

+2.3.2 +

Hardware Fluids (AGEIA PhysX Driver)

+

What's New?

+
    +
  1. Many bug fixes and optimizations.
  2. +
  3. Fluid scenes are created in a special hardware scene.
  4. +
  5. Fix to intermittent crash bug when adding a mesh to a fluid +scene.
  6. +
  7. Better input validation for the fluid mesh cooker.
  8. +
  9. Driver error reporting in fetchResults()
  10. +
  11. The Fluid can be configured with the new parameter +"motionLimitMultiplier". The user can define how far a particle can +travel during one timestep. This is important for tuning the memory +size consumed by the static mesh cooked for fluid collision. The +parameter effectively limits the maximal velocity of a particle. See +the user guide for more details.
  12. +
  13. If the user is interested in a more coarse simulation of fluids +which supports sprays and puddles, but works less well on deep pools, +he can choose this new simulation mode which alternates the simulation +between simple particles (without inter particle forces) and SPH +simulation. See NxFluidSimulationMethod::NX_F_MIXED_MODE and +NxFluidDesc::simulationMethod in the documentation.
  14. +
+

Platforms Supported (Runtime)

+
    +
  • Microsoft Windows XP (32bit editions) with an AGEIA PhysX Card
  • +
+

Known Issues and Limitations

+
    +
  1. See the API references for details concerning which API +functions are supported
  2. +
  3. Collision detection only supported with static triangle meshes +and convex meshes.
  4. +
  5. The number of convex shapes interacting at the same time with +one fluid is restricted to 1024 convexes. The user may add more dynamic +convex actors to the fluid hardware scene, though. If more than 1024 +convexes are moving within the AABB of the fluid, some will be ignored +for collision.
  6. +
  7. One dynamic convex is restricted to 64 triangles. If a convex +with more than 64 triangles is added to the fluid hardware scene, some +triangles are ignored for collision.
  8. +
  9. The user can only provide one pre-cooked static mesh per fluid +scene. All fluids added to the scene have to be compatible to the +static mesh structure, i.e. have the same restParticlesPerMeter, +kernelRadiusMultiplier, packetSizeMultiplier.
  10. +
  11. Issue: Max PPU Connections (15): If multiple fluids are created, +the maximal possible number of PPU connections can be reached. One +connection is used for the static mesh interface (per scene), and one +for each fluid created. If the maximum of connections is reached, the +fluid creation returns NULL.
    +Workaround: Don't create too many scenes and fluids. A fluid hardware +scene uses one connection and every fluid uses another one.
  12. +
  13. Crashing call to createFluidHardwareTriangleMesh (): This call +may crash if running out of PPU connections or PPU memory.
    +Workaround: Try to save on hardware rigid body scenes and hardware +fluid scenes, as well as fluids. Try to reduce the maximal number of +particles for the fluids. A main issue might be the cooked fluid static +triangle mesh size.
  14. +
  15. Fluid memory consumption can be approximated as:
    +NxFluid: constant(~2.5Mb) + 11 * maxParticles * 64 Bytes
    +Triangle Mesh: Depends upon:- +
      +
    • Cooked Geometry
    • +
    • restParticlesPerMeter
    • +
    • kernelRadiusMultiplier
    • +
    • motionLimitMultiplier
    • +
    • packetSizeMultiplier
    • +
    +Fluids can be allocated from all of the cards onboard memory. However +when hardware rigid bodies are used they compete for memory.
  16. +
  17. Issue: Slowdown on creating and releasing fluids in a row: The +reason for this issue has not been determined. This doesn't happen when +releasing the scene too.
    +Workaround: Create fluids once and reuse them. Recreation may lead to +fragmentation on the PPU memory, which is bad anyway.
  18. +
+

Version

+2.3.2 +
+
Old Release Notes / Changelog

2.3 - 2005.08.15
==================
- XBOX 360, PS3 support. (may require files separate from windows installer package)
- improved API reference documentation, doc comments.
- new static vs. dynamic continuous collision detection based on CCD Skeletons
- NxConvexShape introduced as independent class of NxTriangleMeshShape
- NxWheelShape introduced for better raycast car support
- added API to support selection between hardware and software implementation.
- NxMaterial::programData API replaced with strongly typed spring member. Behavior is unchanged.
- debug rendering API simplified. NxUserDebugRenderable removed, NxDebugRenderable interface class replaced by a simple struct.
- more strict parameter checking in several places
- removed raycast based CCD
- removed FPU manipulation API functions.
- intel assembly implementation of NxMath::sincos().
- changed implementation of NxMath::rand()
- replaced buggy TransformPlane() with correct NxPlane::transform() and NxPlane::inverseTransform().
- added NxQUat::fromAxisAngleFast() and NxQuat::invert().
- modified implementations for NxQUat::rot, invRot (), and ::transform().
- removed NX_MF_CONVEX and NX_COMPUTE_CONVEX from NxMeshFlags of NxSimpleTriangleMesh
- removed NX_NUM_SLEEP_FRAMES macro

2.2, 2.1.3 - 2005.03.21

==================

- new abstract core implementation for hardware compatibility
- lots of new features for the D6Joint.
- materials API completely rewritten
- new mesh cooking library. Raw meshes must be preprocessed by the cooking library before being handed to the SDK. This makes creation of meshes at runtime much faster.
- new character motion controller library
- new extensions library
- new external utils library
- Foundation SDK has been merged into the Physics SDK. Specifically:
- there is no more foundation.dll
- the user must no longer link to foundation.lib
- API documentation for the foundation SDK is now part of the Physics SDK API documentation.
- the function exports of the foundation.dll are now exported from physics.dll
- the member functions from foundation shape API classes (NxSphere, NxBox, etc.) that were calling foundation exports have been removed. Here is a list with the corresponding replacement export that must be called by the user instead:

Old Member Function Replacement Function

NxSphere::NxSphere(unsigned nb_verts, const NxVec3* verts) NxComputeSphere(sphere, nb_verts, verts);
NxSphere::NxSphere(const NxSphere& sphere0, const NxSphere& sphere1) NxMergeSpheres(sphere, sphere0, sphere1);
NxSphere::compute(unsigned nb_verts, const NxVec3* verts) NxComputeSphere(sphere, nb_verts, verts);
NxSphere::fastCompute(unsigned nb_verts, const NxVec3* verts) NxFastComputeSphere(sphere, nb_verts, verts);
NxBox::containsPoint(const NxVec3& p) NxBoxContainsPoint(box, p);
NxBox::create(const NxBounds3& aabb, const NxMat34& mat) NxCreateBox(box, aabb, mat);
NxBox::computePlanes(NxPlane* planes) NxComputeBoxPlanes(box, planes);
NxBox::computePoints(NxVec3* pts) const NxComputeBoxPoints(box, pts);
NxBox::computeVertexNormals(NxVec3* pts) const NxComputeBoxVertexNormals(box, pts);
NxBox::getEdges() NxGetBoxEdges();
NxBox::getEdgesAxes() NxGetBoxEdgesAxes();
NxBox::getTriangles() NxGetBoxTriangles();
NxBox::getLocalEdgeNormals() NxGetBoxLocalEdgeNormals();
NxBox::computeWorldEdgeNormal(NxU32 edge_index, NxVec3& world_normal) NxComputeBoxWorldEdgeNormal(box, edge_index, world_normal);
NxBox::computeCapsule(NxCapsule& capsule) NxComputeCapsuleAroundBox(box, capsule);
NxBox::isInside(const NxBox& box) NxIsBoxAInsideBoxB(box, box);
NxRay::distanceSquared(const NxVec3& point, NxF32* t = NULL) NxComputeDistanceSquared(ray, point, t);
NxRay::distance(const NxVec3& point, NxF32* t = NULL) sqrtf(NxComputeDistanceSquared(ray, point, t));
NxSegment::squareDistance(const NxVec3& point, NxF32* t=NULL) NxComputeSquareDistance(segment, point, t);
NxSegment::distance(const NxVec3& point, NxF32* t = NULL) sqrtf(NxComputeSquareDistance(segment,point, t));
NxCapsule::computeOBB(NxBox&box) NxComputeBoxAroundCapsule(capsule, box);
NxCapsule::contains(const NxVec3& pt) NxComputeSquareDistance(capsule, point) <= radius*radius;
NxCapsule::contains(const NxSphere& sphere) NxF32 d = radius - sphere.radius; if(d> = 0.0f) return NxComputeSquareDistance(capsule, sphere.center) < = d*d; else return false;
NxCapsule::contains(const NxCapsule& capsule) contains(NxSphere(capsule.p0, capsule.radius)) && contains(NxSphere(capsule.p1, capsule.radius));

Users will need to replace any calls to the old member function to the corresponding replacement function.
- NxProfiler class deleted
- removed virtual NxProfilingZone * NxFoundationSDK::createProfilingZone(const char * x) = 0;
- NxArray no longer derives from NxAllocateable
- removed NxComputeVolumeIntegrals from API
- removed obsolete Foundation/include/NxBlank.h
- removed obsolete Foundation/include/NxList.h
- added NxActor::getMaxAngularVelocity ()
- added NxActor::get/setSolverIterationCount()
- added Physics/src/Physics.h: contains #define's from /src/Nxp.h which are just used from inide the SDK and should not be visible from outside
all files in the /src including Nxp.h now include Physics.h
- removed is...() (e.g. isBox()) functions from NxShapes and NxJoints
updated samples: added static castings for on NxShape and NxJoint to the appropriate type instead of calling the is function
(e.g static_cast(s) instead of s->isBox())
- added NxPlane NxPlaneShape::getPlane() const;
- removed methods deprecated in 2.1.2
- added NxScene &NxActor::getScene() const;
- added NxPhysicsSDK& NxScene::getPhysicsSDK() const;
- added NxJoint& NxActor::getScene() const;
- removed NX_INLINE void NxFPU::NxSinCos(NxF32& c, NxF32& s, NxF32 f);
- added NX_INLINE static void NxMath::sinCos(NxF32 & c, NxF32 & s, NxF32 f);
- new NX_ACCELERATION force mode.
- new getScene() method for objects contained in scene.
- moved public enums from various classes to Nxp.h
- new shape flag NX_SF_POINT_CONTACT_FORCE and NxContactStreamIterator::getPointNormalForce() for returning per-point contact forces.
- improved validation in NxJointLimitSoftDesc::isValid()
- added function NxGetValue(NxCookingValue).
- motor for pulley joint
- added NxU32 NxScene::setThreadAffinityMask(NxU32 mask)
- replaced MIN_SEPARATION_FOR_PENALTY with NxShape::get/setSkinWidth(), and a global skin width parameter.
- new 128 bit mask based collision filtering (NxShape::getGroupsMask(), NxGroupsMask)
- new NxRaycastBit NX_RAYCAST_FACE_NORMAL for retrieving non-smoothed normals.
- new method NxCapsuleShape::getWorldCapsule()
- new method NxSphereShape::getWorldSphere() - new NxScene::getNbStaticShapes(), getNbDynamicShapes().
- new triangleIDs for raycasting.
- removed support for pmap-less nonconvex nonheightfield mesh-mesh collision detection which was working poorly.
- removed obsolete parameter NX_MESH_MESH_LEVEL
- removed obsolete parameter NX_MESH_HINT_SPEED - removed NxActor::setDynamic(). Workaround: Create the initially static actor as a kinematic. Later turn off the kinematic state.

2.1.2 - 2004.11.08

==================

- more strict error checking
- multithreaded implementation - shape descriptors in NxActorDesc can now be allocated using a custom allocator.
- fluid API - NX_MESH_SMOOTH_SPHERE_COLLISIONS now disabled by default
- made mesh instances default to flat and not smooth sphere mode
- removed neccesarily reentrant method NxContactPair::setPairNotify(NxU32). Workaround: use any of the
several different ways to set actor flags.
- actor group and actor group pair flags
- raycast car support, including: - New + improved 'multipatch' friction implementation. Fringe benefits are that rare contact situations with multiple contact normals or materials-per-triangle are now handled correctly.
- Capsule shapes now have a 'swept shape' mode that can be used to get raycast wheel behavior. This is enabled with the new NX_SWEPT_SHAPE flag in NxCapsuleShapeDesc.
- programData member in NxMaterial
- NX_MF_SPRING_CONTACT flag of NxMaterial, and the appropriate code to emit suspension-spring-like contacts when this is enabled.
- SampleRaycast car
- Reworked applyForce code:
- removed these methods of NxActor because they were causing user confusion (they were hoping that it did more than just read back what they have previously set...) setForce (), setTorque(), getForce(), getTorque()
The replacement for setForce/setTorque is calling addForce/addTorque just once (per frame).
The replacement of getForce ()/getTorque() is to keep track of the forces you add.
- removed the variables: NxBodyDesc::initialForce, NxBodyDesc::initialTorque. The replacement for initialForce, initialTorque is addForce/addTorque after creating the object.
- forces act over the entire time step, including all substeps
- NxMaterial's vectors are now in shape space not in actor space.
- added 3 new joint types: - Distance - Pulley - Fixed
- kinematics perform move over a whole step, not a substep
- added methods to add impulses and velocity changes
- exception handling in SDK off, was enabled by mistake in 2.1.1
- implemented more material combine modes
- fixed a debug rendering crash bug
- fixed debug rendering extra lines and zero length lines bugs
- NX_VISUALIZE_COLLISION_NORMALS now defaults to zero.
- raycasting based approximate continuous collision detection (enable using NX_CONTINUOUS_CD)
- faster raycasting, now also supports segment queries
- 'one shot' scene collision queries
- added access to internal mesh data

2.1.1 - 2004.07.15
==================
- convex-mesh collision detection
- convex meshes viewer scene
- broken joints deletion process cleared up
- raycasting against compounds fix
- NX_NOTIFY_ON_START_TOUCH bug fixed
- bugs related to jointing bodies to kinematics fixed
- crash fixed when switching body from kinematic to dynamic
- implemented contact and friction force feedback in contact report
- joints to kinematic bodies now projected correctly
- removed reduced simulation mode for joints
- made it possible to set a different number of solver iterations per body
- added adaptive force parameter - improved solver: bodies don't pop out of other bodies as fast as before
- improved solver: non-reduced mode joints work better
- fixed rotating spheres and longs solver problem
- fixed solver instability on very thin objects
- visual C++ .NET project files
- fixed several box-capsule contact generation bugs
- added more error messages regarding broken joints
- removed '#'-s in filenames of monster truck demos
- updated docs with more information on releasing actors and broken joints
- added angular projection for revolute joints
- fixed some bias scaling related bugs in friction and joint setup code
- fixed uninitialized variable bug in viewer
- removed obsolete files from foundation
- extended ODF files to permit specification of joint projection
- fixed joint projection bug
- fixed fat lines rendering bug in viewer
- fixed some doc bugs
- fixed bug regarding kinematic bodies going to sleep
- fixed sphere joint limit visualization bug
- visualization flag for shapes, bodies, and joints
- added docs on masses of trigger shapes
- added FAQ section to SDK docs
- simplified versioning mechanism
- renamed ShapeDesc::triggerFlags into ShapeDesc::flags.
- fixed bug regarding deletion of trigger shapes
- removed personal edition copy protection scheme
2.1 - 2004.05.15
=================
- Pulled enums and typedefs out of classes. For example NxSomeClass::SOME_FLAG is now NX_SOME_FLAG.
- NxCollisionGroup changed from an enum to an int.
- NxCollisionGroup 0 no longer has special meaning. Static-static collision detection is automatically not performed.
- Actors, Shapes and Joints now have setName () getName() methods for debugging convenience.
- Removed support for dynamic meshes flag
- Optimized mesh inertia tensor computation
- Removed dynamic and default mesh classes from Foundation
- Replaced NxUserTriangleMesh with NxSimpleTriangleMesh, changed the way meshes are provided to the SDK - User's meshes are now copied, not referenced
- Materials are now stored in a global list and indexed by shapes, not actors.
- New material per triangles feature (for all mesh-primitive combinations)
- Added sleep velocity thresholds
- Changed SLEEP_LIN_VEL_SQUARED to SLEEP_DEFAULT_LIN_VEL_QUARED& also angular
- Documented NX_MIN_SEPARATION_FOR_PENALTY in manual.
- Removed quaternion accessor functions and made elements public.
- Added NxMat34::getColumnMajor44(), NxMat34::setColumnMajor44() for ez 4x4 graphics matrix conversion.
- Added X get*() methods which return the matrix value instead of copying it to a destination address. void get*(X) methods are now deprecated.
- Fixed bug with kinematicactors (were generating useless contacts)
- Fixed bug with raycasting against compounds (was returning internal compound shapes & wasn't testing collision groups)
- RunFor() timing params are now scene properties.
- Asynchronous API added. runFor is deprecated.
- Removed NxUserContactReport::onPairCreated() due to performance concerns! Users must take care to notice that their implementing code no longer does anything / never gets called!! We don't have a full replacement for this mechanism yet. For now NxScene::setActorPairFlags() is the best bet.
- Added CoreDump mechanism.
- Maya exporter
- ConvexMesh-ConvexMesh Collision Detection
- Four new sample programs: SampleConvex, SampleGameLevel, SampleMaterials, SampleMeshMaterials
- Got rid of NxActor's localToGlobalSpace, globalToLocalSpace, localToGlobalSpaceDirection, globalToLocalSpaceDirection . because the implementation transformed between the wrong spaces. To get the old behavior, use this code: NxMat34 cmpose; actor->setCMassGlobalPose(cmpose); worldPositon = cmpose * bodyPosition;
//localToGlobalSpace bodyPositon = cmpose % worldPosition;
//globalToLocalSpace worldDirection = cmpose.M * bodyDirection;

//localToGlobalSpaceDirection bodyDirection = cmpose.M % worldDirection;
//globalToLocalSpaceDirection To get the proper behavior, use this code: worldPositon = actor->getGlobalPoseReference() * bodyPosition;
//localToGlobalSpace bodyPositon = actor->getGlobalPoseReference() % worldPosition;
//globalToLocalSpace worldDirection = actor->getGlobalPoseReference().M * bodyDirection;

//localToGlobalSpaceDirection bodyDirection = actor->getGlobalPoseReference().M % worldDirection;
//globalToLocalSpaceDirection
- Removed NxScene::enablePair, isEnabledPair. They are replaced by the new get/setPairFlags (). The old behavior maps to the new calls like so: /**
enables or disables collision detection between a pair of actors. Initially all pairs are enabled. Collision detection between two shapes a and b occurs if: NxPhysicsSDK::getGroupCollisionFlag(a->getGroup(), b->getGroup()) && isEnabledPair(a->getActor(),b->getActor()) is true. Note: a and b may not refer to the same shape. */ NX_INLINE void enablePair (NxActor&,
NxActor&,
bool enable) { if (enable) setPairFlags(a,b, getPairFlags(a,b) | NX_IGNORE_PAIR); else
setPairFlags(a,b, getPairFlags(a,b) & ~NX_IGNORE_PAIR);
}
/** Queries the value set by the above call. */ NX_INLINE bool isEnabledPair(NxActor&a, NxActor&b) = 0 {
return getPairFlags(a,b) & 1;
}
2.03 - 2004.04.08
=================
-B

AM Feb 20 fixed: inertia tensors of meshes are wrong -B
AM Feb 22 fixed: syntax error in NxQuat template's slerp code -B
AM Feb 22 fixed: setGlobalAxis/setGlobalAnchor in NxJoint and NxJointDesc transform to body space, while the local frames are documented as being in actor space, as they should be -B
AM Feb 22 releasing/in any way changing static actor doesn't notify its joints (incl: making it dynamic) == > workaround for now is to use NULL for static actors when jointing
-B AM Feb 22 fixed: Spellcheck api doc comments
-B AM Feb 22 new feature: kinematic motion of bodies
-B AM Mar 5 fixed: Several class doc comments are not immediately followed by the class declaration so doxygen ignores them.
-B AM Mar 02 fixed: Sleeping code is time step sensitive: With small dt stuff goes to sleep unrealistically fast.
-B AM Mar 05 fixed: Deleting while in bbox vis mode causes a crash
-B PT Mar 20 Fixed crash when running empty simulation
-B AM Mar 20 Improved capsule contact generation for parallell case.
-B PT Mar 22 Additional parameter in NxActor::wakeUp

API Changes

- replaced bitfields with enum flags (impacts aniso friction and joints)

Other changes

- removed all templates except NxArray
- Added 3 new samples
- fixed various contact stream iterator problems
- updated docs with kinematic bodies infos
- added this change log

2.02 - 2004.02.19
=================
Collision SDK and RB SDK Merged
Substance SDK Discontinued
Most of the tech completely rewritten - hence no change list.


1.91 - 2003.07.07
=================
Rigid Body SDK: get hinge angle and velocity query, for both artic and lagrange .
Rigid Body SDK: fixed: penetration correction of lagrange jointed stuff is worse than articulated stuff
Rigid Body SDK: fixed: dense grid of contacts acts weird (Pierre showed that this is fixed but we have no good repro)
Rigid Body SDK: changed solver to no sub iters (5x faster), and correct bounce correction
-- now big stacks go to sleep slower
-- boxes don't bounce up straight anymore
Rigid Body SDK: removed obsolete rigid sdk params
Rigid Body SDK: very redundant contacts are working.
Rigid Body SDK: stuff can be created in sleeping mode, even if jointed.
Rigid Body SDK: fixed: Articulations don't fall asleep
Collision SDK: heightfield mode for meshes
Foundation SDK: fixed inplace matrix transpose bug
Collision SDK: test cave configuration for terrains
Collision SDK: upgrated to opcode 1.3
Collision SDK: fixed a bug in mesh-mesh that didn't seem to be having any bad effects.
Foundation SDK: all stl gotten rid of
Foundation SDK: array class with decent memory management
Viewer: vs7 build of viewer
Tools: flexporter was exporting spheres wrong (made them off-center with a nonzero offset)
Rigid Body SDK: fixed: the asymetry of the fixed and prismatic joint leads to breakage if the bodies are not ordered right (it creates a different response.) Collision SDK: capsules integrated (Simon)
Rigid Body SDK: new contact solver combines Pierre's work
Rigid Body SDK: created fixed joint
Demo: gears demo
Demo: bride demo
Rigid Body SDK: added bias for limits.
Collision SDK: fixed a bug in sphere-sphere penetration computation
Foundation SDK: Spelling Error in Nx.h: "usually becase you have passed"
Rigid Body SDK: Spelling Error in NxRigidBodySDK.h: "byt": Larger values may fix exploding systems byt introduces constraint error.
Collision SDK: fixed incorrect computation of box-sphere penetration in the special case of the sphere center being embedded in the box.
Rigid Body SDK: fixed a bug regarding the deletion of effectors not removed from scene
Rigid Body SDK: fixed a bug regarding removal of joints, bodies, and effectors from one of multiple scenes, where they were not added
Rigid Body SDK: fixed a bug regarding the duplicate addition of effectors to a scene
Rigid Body SDK: fixed a bug with non-invertable response of fixed articulation
Viewer: fixed non pow2 texture widths are loaded badly (jpg format)
Collision SDK: Fixed a bug in mesh vs. line
Collision SDK: Fixed a bug in heightfield vs. box
Collision SDK: Fixed a bug in mesh vs. plane
Rigid Body SDK: fixed explosion on constraining missing featherstone dofs.
1.9
All SDKs: Codewarrior compiler compatibility -- renamed overloaded method names
All SDKs: Professional Edition DLLs
Rigid Body SDK: Fixed a crash bug related to deleting certain joints or bodies
Rigid Body SDK: Completely rewritten solver
Foundation SDK: changed memory allocation in foundation, + other misc stuff so other SDKs don't have to link with foundation

1.8 - 2003.06.01
=================
Rigid Body SDK: gravity applied if group is not sleeping
Rigid Body SDK: normal forces have different magnitudes, not real normal forces, just an estimate (this is a problem)
Rigid Body SDK: frict scaling params removed.
Rigid Body SDK: frict coeffs changed, new ranges
Rigid Body SDK: FAST linear time contact solver has good friction model!
Rigid Body SDK: FAST linear time contact solver!
Rigid Body SDK: add API method to purge limit planes.
Rigid Body SDK: applyImpulses () should checks f[i], and early outs if it is zero.
Collision SDK: sweep and prune broad phase, new NxBroadPhase
Collision SDK: caching of near phase results when there was no movement.
Collision SDK: redone exact mesh-box
Collision SDK: redone exact mesh-sphere
Collision SDK: fixed iterators in scene and shapeSet so that calling getNext () after hasMore() returns zero doesn't result in access violation. Actually, now hasMore () is redundant.
Viewer: changed default friction and restitution coeffs in viewer.
Viewer: don't pose change notify unless neccesary
Viewer: punching of bodies
Viewer: better mesh visualization

1.6 - 2003.02.21
=================
Viewer: delete bodies in viewer demos by right-dragging a body and then pressing delete.
Viewer: monster truck can now be driven even if some wheels have been deleted.
Viewer: tweaked monster truck car controller for torque based driving.
Viewer: Granny support for articulated characters ('ragdolls') (only available for Rad Game Tools Granny licensees)
Viewer: inertia tensor can be specified explicitly in the body block of an ods file
Viewer: Made a real collision veto joint in viewer
Collision SDK: fixed bug in mesh-box colldet (thanks to Jason Zisk of nFusion)
Collision SDK: mesh data structure can be visualized by appropriate setting SDK param.
Collision SDK: removed STL from hashGridSpace + optimized it a bit
Collision SDK: new contact groups methods, removed corresp. group methods from hashGridSpace.
Collision SDK: new pairwise contact disabling methods
Rigid Body SDK: hugely improved performance of hinge and prismatic joints, see the monster truck demo for an example.
Rigid Body SDK: NxBody::createClone()
Rigid Body SDK: customizeable damping in NxJoint, works only for chains of hinge and prismatic joints.
Rigid Body SDK: fixed defect in joint limit plane iteration.
Rigid Body SDK: fixed implementation bug of bool Scene::hasMoreJoints().
Rigid Body SDK: joint and body scene removal / addition / deletion error checking.
Rigid Body SDK: setVelocity / momentum only wakes bodies if the set vel is high.
More orderly shortcuts in startmenu.
More demos.
New licensing scheme (registry stuff goes to HKEY_CURRENT_USER, we don't mail reg files anymore.)
No more double precision libs shipped in personal edition (ask if you still want them)
updated docs

1.51 - 2003.01.09
=================
Fixed vsync slowdown problem in viewer
Frame rate limited to physics rate (usually 50 Hz)
single precision floating point DLLs for collision SDK and RB SDK(F32 suffix)
doc bug fixes

1.5
=================
Substance SDK
userErrorStream has new reportError member
Foundation SDK as DLL
substance SDK support in viewer
breaking joints was broken in 1.45, fixed.
mesh-box collision detection implemented
matrix ops of the form Mx::op(A,B) first write to a temp object in case A.op(A,B) is called.
also same for vector cross product.
fixed bug regarding edge-edge colldet penetration depth compute.
improved mesh-sphere
added fracturable vase and road blocks to monster truck demo

1.45 - 2002.12.02
=================
updated simple demos
added colldet block and sim params block to demo scripts.
obstacle support removed
mass = 0 bodies can have material properties
getBodies method in NxJoint
fixed hashspace problem
solver params settable from scripts
fixed box-box bug
stuff stuck in air now wake up
thin rod spin limiting by max angular velocity
joint support improved for Juice

1.44 - 2002.10.30
=================
mesh-mesh collision detection added
mesh-sphere collision detection added
mesh-line collision detection added
mesh-plane collision detection added
internal parameters exposed
doc bugs fixed
full screen mode put back
box-sphere collision penetration depth fix
isAttachedByJoint typo
NxSphere, etc. can have release() called on it directly.

1.431
=================
mass adaptive drag force strength in viewer

1.43 - 2002.10.15
=================
additions and fixes in viewer and rigid body documentation (thanks to Nate and Pierre)
memory leak fix in viewer (thanks to Mete)
domino demo failure
included Pierre's new toboggan demo

1.42 - 2002.10.08
=================
fixed installer problem (DLL placement)

1.41 - 2002.10.03
=================
memory manager issues
readme for max exporter
shortcuts to viewer doc and projects
readme file correction

1.4 - 2002.08.25
================
first public SDK release


==EOF==
+

+
Copyright © 2006 AGEIA Technologies Inc, Suite 118, 82 Pioneer Way, +Mountain View, CA 94041 U.S.A. All rights reserved. www.ageia.com + +