Войти
ФлеймФорумПроЭкты

3D редактор (8 стр)

Страницы: 17 8 9 1013 Следующая »
#105
15:22, 27 мар. 2020

programina
> Тебе придётся задействовать что-то ещё.

Максимум какой нибудь atan2 если это вращение


#106
15:27, 27 мар. 2020

3dhater
я про оси. Допустим, перемещение:
мышь_x -> объект_x
мышь_y -> объект_y
мышь_? -> объект_z

#107
(Правка: 28 мар. 2020, 14:45) 15:32, 27 мар. 2020

Для этого и нужно получить 3д координату от луча идущего от курсора. Но нужна функция чтобы найти точку просто на плоскости, а не на треугольнике. Эта функция должна быть проще.

Находим одну точку при клике, вторую при перемещении курсора, и разницу в координатах всякими вычислениями применяем к трансформации. Я так делал в первой попытке, но потом отключил.


Хотя, уже есть функция для получения луча. Точки будут в плоскости far plane
Значит можно будет получить корректный вектр в любом положении камеры


Чувствительность зависит от расстояния между камерой и опорной точкой

Столько мелочей нужно сделать, не счесть.
Уже после буду делать остальные оси.


Перемещение

Нужно поработать над перемещением опорной точки.

Уже после перейду на масштаб и вращение.


Нет. Чтобы изменять опорную точку нужно менять координаты вершин, а я этого делать пока не умею. Буду делать вращение и масштаб.


Моделька отзеркаливается когда значения масштаба становятся ниже нуля.
А у меня было как в Максе, модель сжимается, но не доходит до нуля. Я сделал это легко, но сейчас не могу представить как это делается.

#108
(Правка: 21:44) 17:18, 28 мар. 2020

Одна из неприятных вещей. При масштабировании, да и вообще редактировании, нормали остаются всё такими-же.

Изображение

Займусь решением этой проблемы.

Либо они (нормали) должны как-то выпрямляться, либо нужно вообще использовать какой-то другой способ затенения.


Чуть изменил шейдер. Нормаль умножается на видовую матрицу.

#109
5:00, 29 мар. 2020

3dhater
> Либо они (нормали) должны как-то выпрямляться
При неравномерном масштабировании нормали умножаются на транспонированную обратную матрицу.

#110
10:35, 29 мар. 2020

}:+()___ [Smile]
> При неравномерном масштабировании нормали умножаются на транспонированную
> обратную матрицу.

Спасибо.

Работает как надо.

#111
(Правка: 23:42) 21:48, 29 мар. 2020

Неправильная последовательность умножения матриц.

Грубо говоря, надо делать

основная матрица      = значение которое нужно добавить * матрица до изменений

m_matrix = S * m_matrixFixed;

и в масштабировании и во вращении.

Нужно доделать мелочи, и сделать глобальное и локальное вращение\масштабирование.
По умолчанию на кнопке слева это глобальные вращение\масштаб.
Локальное более специфичное, нужно будет включить через меню.


Я совсем забыл про то что для коллизии и для рендеринга можно использовать разные модели. Добавил отдельную модель для гизмо для перемещения. Области увеличины, и в общем кликать стало приятнее. Пока сделано только для перемещения.

#112
2:34, 30 мар. 2020

3dhater
Молодец, хороший прогресс.

#113
(Правка: 23:14) 20:14, 30 мар. 2020

Я посмотрел как работает вращение в максе, сделаю как там, просто двигать мышь либо влево вправо, либо вверх вниз, и никаких круговых движений (как в блендере). В прошлой версии у меня было всё так, но сейчас у меня голова работает хуже и я не дотянул до того уровня.

Изображение

Нужно просто делать линию определённой длинны, если например курсор доходил до центра, то линия от центра гизмо должна идти дальше. Сейчас у меня не так, просто линия от центра и до курсора.  По сути ерунда, просто нужно линию продолжить, работа с вектором. Код оставлю на потом, будет как опция, а пока переделаю на стиль 3Ds Max.

Может быть проще сделать поворот в стиле блендера используя 2Д координаты...не строить никакие 3Д линии от центра гизмо.

Так-же сделал поворот относительно плоскости экрана.


Когда делал первый раз, было интересно как это всё реализовано. Я так себе в математике, но когда делал первые шаги в поворотах объектов, понял как работают все эти преобразования, важна последовательность.

Изображение

Я просто чувствовал что можно взять матрицу одного объекта, и вычесть её из матрицы другого.
У камеры есть вспомогательный объект, который всегда смотрит на камеру, и крутиться только по Y (когда жмём на круг). Камера может крутиться по Х оси (вверх вниз), и объект тоже должен крутиться по Х оси (чтобы он смотрел в камеру).
Получается, вспомогательный объект имеет свою матрицу (поворот по У), + матрица родителя которая крутится по Х. И нужно избавиться от матрицы родителя, чтобы осталась та самая матрица поворота в плоскости экрана.

kkMatrix4 ViewportCamera::getObjectRotationMatrix()
{
    kkMatrix4 m1 = m_camera_parts[_Camera::ObjectRotation]->getWorldMatrix();
    auto m2 = m_camera_parts[_Camera::RotX_]->getWorldMatrix();
    m2.invert();
    return m1*m2;
}

кучу мелочей нужно сделать


Это только начало. Я думал вообще ничего не получится.


Да, в 2д делать проще.


Сделал полностью, работает как в блендере, только без декораций.

#114
(Правка: 23:10) 22:50, 31 мар. 2020

Вроде доделал вращение (была проблема с глобальным вращением нескольких объектов, но сделал transpose для матрицы и вроде всё стало нормально).

В общем объекты масштабируются и вращаются глобально, когда 2 и более объекта относительно центра ААББ в котором они находятся. Через меню можно включить локальный режим, объекты будут просто стоять на своих местах.

И сделал вращение по 5 градусов удерживая Shift

Было-бы хорошо показать на сколько градусов повернули объект, но это слишком нудная задача, её буду делать в самую последнюю очередь.

Не хочу останавливаться на мелочах, буду делать серьёзные и необходимые вещи.

Теперь я дошёл до взаимодействия с вершинами.
Нужно обновить создание полигональной модели, создать контрольные вершины и т.д.

Потом уже буду заниматься их трансформацией, удалением.


кстате я не понял почему модель на видео повернулась так, будто опорная точка не в центре а сзади и выше, когда крутил относительно экранной плоскости.


нашёл в чём проблема...исправляю...исправил

#115
17:07, 3 апр. 2020

> 2. Рендеринг вершин в хай-поли модели занимал время

Сделано.

コメント 2020-04-03 155441 | 3D редактор

На моём калкуляторе всё просто летает.

Контролирующие вершины созданы, сделаю вычисление нормалей и буду дальше заниматься вершинами.

...

Таки собрал программу со всеми оптимизациями. Вот демо v0.1.1

#116
18:44, 3 апр. 2020

а дальше то что ?

#117
18:50, 3 апр. 2020

Misanthrope
> а дальше то что ?
>

Дальше огого много чего!

#118
(Правка: 21:49) 21:47, 3 апр. 2020

3dhater
> сделаю вычисление нормалей

Изображение

Теперь для моделей без нормалей может генерироваться нормаль. Эта опция на совести создателя плагина.


Дальше делаю кнопки слева, для включения режима редактирования по вершинам.
Потом выделение вершин. Трансформация. И удаление.

#119
21:48, 3 апр. 2020

3dhater
XINPUT... dll не установлен на вашем компутере. штоэто?

Страницы: 17 8 9 1013 Следующая »
ФлеймФорумПроЭкты