forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Ищу сэмлы PhysX для Blitz3d или Xors3D (http://forum.boolean.name/showthread.php?t=12779)

BlackOut 30.06.2010 18:36

Ответ: Ищу сэмлы PhysX для Blitz3d или Xors3D
 

http://ru.xors3d.com/viewtopic.php?f=10&t=195

2-й уже не столь оригинальный для тебя пост все объяснил мне, гугл курит

strayhnd 30.06.2010 18:37

Ответ: Ищу сэмлы PhysX для Blitz3d или Xors3D
 
раз уж офтопим :)
расскажи чуток о новой физике ксорса...
Посностью своя или сторонний движок адаптируется?
На какой стадии разработки примерно :)?
Отличия от physx если есть какие существенные?

Knightmare 30.06.2010 18:40

Ответ: Ищу сэмлы PhysX для Blitz3d или Xors3D
 
Цитата:

Сообщение от strayhnd (Сообщение 152295)
раз уж зашел разговор:
расскажи чуток о новой физике ксорса...
Посностью своя или сторонний движок адаптируется?
На какой стадии разработки примерно :)?
Отличия от physx если есть какие существенные?

http://area.xors3d.com/devblog/built...irst-test.html + joints

BlackOut 30.06.2010 18:41

Ответ: Ищу сэмлы PhysX для Blitz3d или Xors3D
 
Цитата:

раз уж офтопим
расскажи чуток о новой физике ксорса...
Посностью своя или сторонний движок адаптируется?
На какой стадии разработки примерно ?
Отличия от physx если есть какие существенные?
ей занимается сам Knightmare, что тут не понятно? Все будет круто и без мата! а Рендер лол со своим врапером! то та!

strayhnd 30.06.2010 18:46

Ответ: Ищу сэмлы PhysX для Blitz3d или Xors3D
 
:)
но в релизе нет физики, только в апдейтах на Hot Area, правильно понимаю?

Knightmare 30.06.2010 18:54

Ответ: Ищу сэмлы PhysX для Blitz3d или Xors3D
 
Цитата:

Сообщение от BlackOut (Сообщение 152298)
ей занимается сам Knightmare, что тут не понятно? Все будет круто и без мата! а Рендер лол со своим врапером! то та!

Код:

BBDECL float BBCALL pxWheelSetEntity(float *entity, NxWheelShape* wheel, int step)
{
    NxWheelContactData contactData;
    NxShape* whShape = wheel->getContact(contactData);
    WheelData* data = (WheelData*)wheel->userData;

            NxReal rollAngle = data->rollAngle; 
            rollAngle += wheel->getAxleSpeed()/gDeltaTime;
            while (rollAngle > NxTwoPi)    //normally just 1x
                rollAngle -= NxTwoPi;
            while (rollAngle < -NxTwoPi)
                rollAngle += NxTwoPi;

            data->rollAngle = rollAngle;
            //memcpy(&(wheel->userData),&rollAngle,4);

            NxMat34 pose;
            pose = wheel->getGlobalPose();

            NxReal r = wheel->getRadius();
            NxReal st = wheel->getSuspensionTravel();
            NxReal steerAngle = wheel->getSteerAngle();
            NxVec3 speed = data->actor->getLinearVelocity();

            NxVec3 p0;
            NxVec3 dir;
            p0 = pose.t;
            pose.M.getColumn(1, dir);
            dir = -dir;    //cast along -Y.

            NxMat33 rot, axisRot;
            rot.rotY(steerAngle);
            axisRot.rotY(0);

            NxMat33 rollRot;
            rollRot.rotX(rollAngle);

            pose.M = pose.M * axisRot*rot * rollRot;

            if (whShape)
            {
                if (step==1) pose.t = contactData.contactPoint + speed/60;
                else pose.t = contactData.contactPoint;
                pose.t -= dir * r;    //go from contact pos to center pos.
            }
            else
            {
                if (!data->actor->isSleeping()) pose.t = p0 + dir * st;
            }

    if (entity)
    {
        NxQuat q;
        pose.M.toQuat(q);

        entity[13] = q.x;
        entity[14] = q.y;
        entity[15] = q.z;
        entity[12] = -q.w;
        entity[16] = pose.t.x;
        entity[17] = pose.t.y;
        entity[18] = pose.t.z;
        int moved = 3;
        entity[11] = *((float*)(&moved));
    }else
    {
        data->posMat = pose;
    }
        return gDeltaTime;

}

Форматирование оригинала сохранено. Сравни:
Код:

void pxWorld::ProceedContacts(IBody * body)
{
    // for rigid bodies
    if(body->GetBodyType() == pxBODY_RIGID)
    {
        // cast pointer
        pxBody * rigidBody = (pxBody*)body;
        // if not received contacts from currect iteration
        if(rigidBody->GetLastIteration() != _lastIteration)
        {
            // aclear old contacts
            rigidBody->ClearContacts();
            // check all manifolds
            for(int i = 0; i < _world->getDispatcher()->getNumManifolds(); i++)
            {
                // getting manifold
                btPersistentManifold * contactManifold = _world->getDispatcher()->getManifoldByIndexInternal(i);
                // getting bodies
                btCollisionObject    * body1 = static_cast<btCollisionObject*>(contactManifold->getBody0());
                btCollisionObject    * body2 = static_cast<btCollisionObject*>(contactManifold->getBody1());
                // if checked body used in manifold
                if(body1 == rigidBody->GetBody() || body2 == rigidBody->GetBody())
                {
                    // add all contact points into body
                    for(int j = 0; j < contactManifold->getNumContacts(); j++)
                    {
                        // getting contact point
                        btManifoldPoint & contactPoint = contactManifold->getContactPoint(j);
                        // add contact
                        btVector3 point  = contactPoint.getPositionWorldOnB();
                        btVector3 normal = contactPoint.m_normalWorldOnB;
                        rigidBody->AddContact(body1 == rigidBody->GetBody() ? body2 : body1,
                                              point.x(), point.y(), point.z(),
                                              normal.x(), normal.y(), normal.z(),
                                              contactPoint.getDistance());
                    }
                }
            }
            // reset iteration number
            rigidBody->SetLastIteration(_lastIteration);
        }
    }
}

Цитата:

но в релизе нет физики, только в апдейтах на Hot Area, правильно понимаю?
Если ты будешь ждать версии 1.16 то у меня для тебя плохие новости. На http://hot.xors3d.com выкладываются также стабильные сборки.

.Squid 30.06.2010 19:34

Ответ: Ищу сэмлы PhysX для Blitz3d или Xors3D
 
Вот тема про сорцы физикса.
http://area.xors3d.com/forums/viewtopic.php?f=26&t=338

strayhnd 04.07.2010 04:40

Ответ: Ищу сэмлы PhysX для Blitz3d или Xors3D
 
кстати, у кого-нибудь есть рабочие заголовочные файлы + либы врапера для C++?
очень хочется попробовать Xors3D+PhysX+C++,
а то с булетом глюки какие-то, хотя код намного проще...

Randomize 04.07.2010 05:04

Ответ: Ищу сэмлы PhysX для Blitz3d или Xors3D
 
Цитата:

Сообщение от strayhnd (Сообщение 152810)
кстати, у кого-нибудь есть рабочие заголовочные файлы + либы врапера для C++?
очень хочется попробовать Xors3D+PhysX+C++,
а то с булетом глюки какие-то, хотя код намного проще...

Ты лучше прямо тут про все глюки напиши!
Авторы тут. Опиши глюки максимально подробно, напиши чего тебе не хватает или что считаешь лишним и тебе сразу помогут.

strayhnd 04.07.2010 05:52

Ответ: Ищу сэмлы PhysX для Blitz3d или Xors3D
 
Уже написал, только на ксорсовском форуме (тут)

Все вопросы решены. Глюки появились в результате моей ошибки. Теперь можно попрощаться с physx wrapper-ом, и изучать буллет :)


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

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