Size: a a a

pro.graphon (and gamedev)

2020 April 16

L

Lain-dono in pro.graphon (and gamedev)
Braveel Eff
хранить компактнее, девять флоутов - против четырёх
Или вообще 16 флоатов
источник

L

Lain-dono in pro.graphon (and gamedev)
Kirill
Откуда 9? 3 же
Матрица 3x3 или 4x4
источник

BE

Braveel Eff in pro.graphon (and gamedev)
ну если с транслетом то да, все 16
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
Braveel Eff
ну если с транслетом то да, все 16
12
источник

K

Kirill in pro.graphon (and gamedev)
Ну в итоге то всё равно матрицу 4x4 хранить
А сами углы занимают по одному флоату
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
Можно и в кватернион перегонять) Не считать же 3 sincos для каждой вершины, или сколько там надо, и делать кучу умножений
источник

L

Lain-dono in pro.graphon (and gamedev)
Braveel Eff
ну если с транслетом то да, все 16
Туда не только транслятор можно запилить, но и вообще 99% возможных штук. Но в некоторых контекстах есть минусы
источник

L

Lain-dono in pro.graphon (and gamedev)
Lain-dono
Кстати помимо кватернионов есть ещё роторы, которые очень похожи , но имеют свои бонусы
Вот примерное сравнение кватернионы vs роторы: https://marctenbosch.com/quaternions/code.htm
источник

Р🍌

Роман 🍌 in pro.graphon (and gamedev)
Всех приветствую
Кто-нибудь может подсказать ресурс с реализацией примитивного передвижения камеры на wasd?
Теорию, код, что угодно
Если код, то на дх желательно
источник

L

Lain-dono in pro.graphon (and gamedev)
Роман 🍌
Всех приветствую
Кто-нибудь может подсказать ресурс с реализацией примитивного передвижения камеры на wasd?
Теорию, код, что угодно
Если код, то на дх желательно
Вручную (в коде) камеру уже умеешь двигать?

Суть такова:
1) Собираешь из WASD векторы движения влево/вправо + вперёд/назад.
2) Преобразуешь это в пространство камеры.
3) Добавляешь это преобразование к состоянию камеры.

Ну это общий принцип
источник

K

Kirill in pro.graphon (and gamedev)
Роман 🍌
Всех приветствую
Кто-нибудь может подсказать ресурс с реализацией примитивного передвижения камеры на wasd?
Теорию, код, что угодно
Если код, то на дх желательно
Каждый кадр получаешь дельту координат мышки и делаешь поворот (dY, dX, 0)
На W делаешь транслейт (0, 0, 1)
На A делаешь транслейт (1, 0, 0)
На S и D то же самое, но с минусом
источник

K

Kirill in pro.graphon (and gamedev)
Kirill
Каждый кадр получаешь дельту координат мышки и делаешь поворот (dY, dX, 0)
На W делаешь транслейт (0, 0, 1)
На A делаешь транслейт (1, 0, 0)
На S и D то же самое, но с минусом
Это если у тебя пространство настроено так, что X смотрит вправо, Y вверх а Z вперёд
источник

Р🍌

Роман 🍌 in pro.graphon (and gamedev)
Lain-dono
Вручную (в коде) камеру уже умеешь двигать?

Суть такова:
1) Собираешь из WASD векторы движения влево/вправо + вперёд/назад.
2) Преобразуешь это в пространство камеры.
3) Добавляешь это преобразование к состоянию камеры.

Ну это общий принцип
Я сделал банальное передвижение при нажатии клавиш, соответствующих  координатам (X,Y,Z)
Просто увеличивал значения xyz камеры при нажатии соответств клавиш и обратно, если при этом зажат shift
источник

Пу

Плодово ягодное вино улучшенного качества in pro.graphon (and gamedev)
Assertion failed on expression: 'task.rasterData.vertexBuffer == NULL'
Баг после обновления Unity. Кто как решил? Я нашёл в интернетах решение и применил, но не понимаю его
источник

Р🍌

Роман 🍌 in pro.graphon (and gamedev)
Вектор камеры lookAt был направлен на (0,0,0) по мировым, и усё. Потом строил видовую с помощью
XMMatrixLookAtLH(Pos, LookAt, Up);


Интересует именно внутренняя реализация, с нужными преобразованиями,  нашел в коде Луны момент, но  ни капли  не объясненный и не врубился, почему именно так:
 void Camera::Walk(float d)
{
XMVECTOR s = XMVectorReplicate(d);
XMVECTOR l = XMLoadFloat3(&mLook);
XMVECTOR p = XMLoadFloat3(&mPosition);
XMStoreFloat3(&mPosition,  XMVectorMultiplyAdd(s, l, p));
}


Вообще, обычно смещение камеры относительно вектора "направления взгляда" так реализуется или иначе?
источник

Р🍌

Роман 🍌 in pro.graphon (and gamedev)
Kirill
Каждый кадр получаешь дельту координат мышки и делаешь поворот (dY, dX, 0)
На W делаешь транслейт (0, 0, 1)
На A делаешь транслейт (1, 0, 0)
На S и D то же самое, но с минусом
Это то очевидные вещи, меня волнует то, что должно быть внутри этих транслейтов
источник

K

Kirill in pro.graphon (and gamedev)
Роман 🍌
Это то очевидные вещи, меня волнует то, что должно быть внутри этих транслейтов
Возьми готовую либу, например glm
источник

Р🍌

Роман 🍌 in pro.graphon (and gamedev)
Я бы с радостью взял готовую либу!
Но меня крайне сильно интересует собственноручное написание данного момента
источник

K

Kirill in pro.graphon (and gamedev)
Роман 🍌
Я бы с радостью взял готовую либу!
Но меня крайне сильно интересует собственноручное написание данного момента
Ну посмотри её исходники
источник

K

Kirill in pro.graphon (and gamedev)
Там всё достаточно понятно
источник