Урок 174. OpenGL. Модель
Урок 174. OpenGL. Модель
В этом уроке:
- перемещаем отдельный объект
Click here to read this article!
- перемещаем отдельный объект
Click here to read this article!
Последний раз редактировалось damager82 06 июн 2017, 23:10, всего редактировалось 6 раз.
Re: Урок 174. OpenGL. Модель
Спасибо большое! Радует, что статьи появляются как раз по мере моего освоения openGL =)
Re: Урок 174. OpenGL. Модель
Отличный урок, вот этого материала как раз не хватает. Когда сам разбирался пришлось долго методом тыка осваивать.
-
- Сообщения: 42
- Зарегистрирован: 25 янв 2015, 18:57
Re: Урок 174. OpenGL. Модель
Спасибо за отличный урок!
Re: Урок 174. OpenGL. Модель
Здравствуйте, как перемещать одну из вершин объекта, а не объект полностью?
Re: Урок 174. OpenGL. Модель
так стараются не делать, потому что это достаточно дорогостоящая операция.potykion писал(а):Здравствуйте, как перемещать одну из вершин объекта, а не объект полностью?
Вам придется по новой сформировать буферы вершин.
А обычно трансформации делают над всем объектом.
Можно конечно выкрутиться на на уровне шейдера еще попоробовать сделать.
С помощью дополнительного массива данных для каждой вершины.
Например у нас есть 4 вершины квадрата,
для каждой вершины мы задаем дополнительный массив
из 0 или 1 для каждой вершины, в зависимости от того хотим мы ее трансформировать или нет.
attribute float aNeedTransform;
vec4 displacement= vec4(1.0,1.0,1.0,1.0);
и в вершинном шейдере сместить нужные вершины. (при умножении на 1 - будет смещение, при умножении на 0 соостветственно не будет)
gl_Position = mvp * (aPosition+aNeedTransform*displacement);
Re: Урок 174. OpenGL. Модель
А во всяких 3D-редакторах модели разве не так делаются?Draz1w писал(а): так стараются не делать, потому что это достаточно дорогостоящая операция.
Re: Урок 174. OpenGL. Модель
в 3d редакторе делаешь модель как тебе нужно потом ее экспортируешь всю.potykion писал(а):А во всяких 3D-редакторах модели разве не так делаются?Draz1w писал(а): так стараются не делать, потому что это достаточно дорогостоящая операция.
Вот какую сделал, такая и будет у тебя в движке. Потом над ней трансформации делаешь, scale, rotate, translate.
отдельно повершинно не трансформируют.
А анимацию персонажей например делают двумя способами:
1 - покадровая ( как спрайты, но только моделями). Т.е. делают 10 разных моделей для разных положений персонажа и просто ее меняют. Минус способа - затраты памяти (нужно 10 моделей вместо одной хранить).
2 - скелетная. В 3Д редакторе делают у модели так называемые кости - скелет и выгружают в свой движок, и используют специальный шейдер вершинный, которые трансформирует модель в шейдере в соостветствии с параметрами костей. Минус способа - очень затратные вычисления.
Обычно в мобильных играх используют покадровую анимацию, потому что в мобилках памяти достаточно много, а вычислительные ресурсы ограничены.
Re: Урок 174. OpenGL. Модель
зачем каждый раз делать процессором multiplyMM трех матриц?
Как можно передать все матрицы (projection view model) отдельно (без multiplyMM) в шейдер что бы там их складывать?
Как можно передать все матрицы (projection view model) отдельно (без multiplyMM) в шейдер что бы там их складывать?
Re: Урок 174. OpenGL. Модель
Добырй день,сомневаюсь.что кто то ответи,но попытка не пытка. Опираясь на код представленный в курсе,как можно используя функцию public void setModelMatrix() {Matrix.translateM(mModelMatrix, 0, x, y, 0);} перемещать объекты,после их создания. То есть я создал объект,и хочу при нажатии его переместить,как я это могу делать,причем нужно именно ,чтобы перерисовывался сам объект,а не удалялся.а затем создавался новый с новми координатами.