Autor Wątek: PhysX - Nie działające raycasty / scene queries?  (Przeczytany 1428 razy)

Offline komorra

  • Użytkownik
    • Blog naszego teamu (o grze Voxelfield)

# Październik 02, 2014, 20:04:48
Witam, szukam wszędzie, patrze w samplach, ale nie mogę znaleźć odpowiedzi na pytanie: co musi być zainicjowane, jakie warunki spełnione żeby działały raycasty lub ogólnie scene queries.

Tak inicjuje fizykę: (PhysX 3.3.1):

physXData* data = new physXData;

data->gDefaultAllocatorCallback = new PxDefaultAllocator();
data->foundation = PxCreateFoundation(PX_PHYSICS_VERSION, *data->gDefaultAllocatorCallback, *data->gDefaultErrorCallback);
data->physics = PxCreatePhysics(PX_PHYSICS_VERSION, *data->foundation, PxTolerancesScale(), true, 0);

PxSceneDesc sceneDesc(data->physics->getTolerancesScale());
sceneDesc.gravity = PxVec3(0.0f, -9.91f, 0.0f);
int threads = VF_CPU_PHYSX_THREADS;
if (!sceneDesc.cpuDispatcher)
{
auto mCpuDispatcher = PxDefaultCpuDispatcherCreate(threads);
sceneDesc.cpuDispatcher = mCpuDispatcher;
}
if (!sceneDesc.filterShader)
sceneDesc.filterShader = &PxDefaultSimulationFilterShader;

data->scene = data->physics->createScene(sceneDesc);

data->defaultMaterial = data->physics->createMaterial(0.01f, 0.01f, 0.01f);

return data;

A tak robię raycasta:

hitinfo hiti;
hiti.isHit = false;

PxQueryFilterData filterData(PxQueryFlag::eSTATIC | PxQueryFlag::eDYNAMIC);

PxRaycastBuffer hit;
bool status = data->scene->raycast(origin, dir, 100000, hit, PxHitFlag::eDEFAULT, filterData);
if (status)
{
hiti.isHit = true;
hiti.actor = hit.block.actor;
hiti.point = hit.block.position;
}
return hiti;

Niestety mimo sceny wypełnionej po full "rzeczami" raycast nie zwraca że w coś natrafił, status jest false.
Czy o czymś nie wiem co koniecznie musi być ustawione?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline yarpen

  • Użytkownik

# Październik 03, 2014, 00:19:52
Odpal sobie Visual Debugger.

Offline komorra

  • Użytkownik
    • Blog naszego teamu (o grze Voxelfield)

# Październik 03, 2014, 08:00:11
A visual debugger pokaże mi Raycasty i odpowie mi na to pytanie czemu one nie trafiają?

Offline komorra

  • Użytkownik
    • Blog naszego teamu (o grze Voxelfield)

# Październik 04, 2014, 07:41:06
Faktycznie pokazuje, dzięki yarpen :)