Проблемы с Raycasting, это работает только в некотором направлении [закрыто]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы с Raycasting, это работает только в некотором направлении [закрыто]

Сообщение Anonymous »

Я работаю над созданием системы Raycast для моей игры Voxel (например, Minecraft). Я пытался внедрить систему из OwgameEngine (https://github.com/cornflakes-code/owga ... /owray.cpp), но я столкнулся с некоторыми проблемами. Raycast регистрирует движение только в определенных областях, поэтому я попытался более точной настройки. Однако по какой -то странной причине он обнаруживает только коллайдеры на карте в диапазоне: < /p>
x: ~ -8 до 8
y: ~ 0 до 4
Z: ~ -24 до -12 < /p>
Реализация кода: < /p>
glm::vec3 Raycast::findNormal(float distance, float t1, float t2, float t3, float t4, float t5, float t6) {
if (glm::epsilonEqual(distance, t1, epsilon))
return glm::vec3(1, 0, 0);

else if (glm::epsilonEqual(distance, t2, epsilon))
return glm::vec3(-1, 0, 0);

else if (glm::epsilonEqual(distance, t3, epsilon))
return glm::vec3(0, 1, 0);

else if (glm::epsilonEqual(distance, t4, epsilon))
return glm::vec3(0, -1, 0);

else if (glm::epsilonEqual(distance, t5, epsilon))
return glm::vec3(0, 0, -1);

else if (glm::epsilonEqual(distance, t6, epsilon))
return glm::vec3(0, 0, 1);

else
return glm::vec3(0, 0, 0);
}

bool Raycast::internalIntersects(const Colliders::Collider& collider, glm::vec3& normal, float& distance) const {
glm::vec3 minPoint = collider.box.minPoint();
glm::vec3 maxPoint = collider.box.maxPoint();

if (origin.x >= minPoint.x && origin.x = minPoint.y && origin.y = minPoint.z && origin.z tmax)
return false;

distance = tmin;
normal = findNormal(distance, t1, t2, t3, t4, t5, t6);
return true;
}

bool Raycast::intersects(const Colliders::Collider& collider, glm::vec3& normal, float& distance, const float& maxRayDistance) const {
if (internalIntersects(collider, normal, distance))
return true;

else if (externalIntersects(collider, normal, distance))
return true;

return false;
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... -direction
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проблемы с Raycasting, это работает только в каком -то направлении
    Anonymous » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Мои виджеты kivy тесно связаны, и мне нужно, чтобы они находились на некотором расстоянии
    Anonymous » » в форуме Python
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Как добавить субмод, который нуждается в некотором классе (оптимизированный Jlink) в пользовательское изображение
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Raycasting периодически сбоят HP Prime Calculator [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с Raycasting FishEye
    Anonymous » » в форуме C++
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»