Программа-просмотрщик объектов: требуется помощь программистов!

Автор Zontik, 21 июля 2017 10:16:53

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Force

Функциональный прототип готов... почти... Это значит что список моделей можно прокручивать, файлы из списка можно выбирать, загружать разные модельки, саму модельку можно вращать, приближать-отдалять, память не захламляется... Да вот только в каждом из этих пунктов еще есть изъяны. Это помимо поддержки разных форматов текстур и моделей персонажей. Работы еще очень много. Когда использование прототипа не будет вызывать эргономическую боль, я выпущу тестовую версию.

P. S. Я, конечно, ожидал, что вращение модели сделать будет не просто, но то что это НАСТОЛЬКО непросто, я не ожидал. Буду переделывать, в итоге.

Zontik

Дайте глазам отдохнуть! Тёмное место

HellRaiser

Цитата: Force от 29 сентября 2017 15:30:11
Я, конечно, ожидал, что вращение модели сделать будет не просто, но то что это НАСТОЛЬКО непросто, я не ожидал.
А как у тебя на данный момент это реализовано? Я себе представляю это примерно так:
1) хватаем нажатую ПКМ/стрелочку на клаве.
2) Двигаем модель в нужную сторону относительно выбранной оси координат (а точнее - вымеряем дельту между текущим положением и новым).
3) в зависимости от реализации: двигаем модель/изменяем положение камеры/втыкаем модель с новыми координатами
4) [опционально:] команда "фас" драйверу.
В институтских лабораторках, ЕМНИП, модель сама по себе только двигалась по осям, а вращение достигалось камерой и никакой дополнительной команды драйверу не требовалось слать, но с тех пор утекло много воды, поэтому я в данный момент не в роли советчика, а в роли любопыста  :embarassed:

Если многабукафф, то можно в личку.

nemyax

HellRaiser
Я так понимаю, трудности возникли с конструированием правильной modelview-матрицы.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Force

#274
Да, nemyax почти угадал. Трудности возникли с конвертацией координат мыши в ориентацию объекта. Из ориентации матрица сама строится, этот момент как раз уже схвачен. Пробовал и через углы Эйлера и через кватернионы... Во всех случаях есть косяки - неочевидное вращение объекта. Узнал о такой теме как arcball, буду ее пробовать.

HellRaiser, тут сложность в том, что мы не положение камеры меняем, а ориентацию модели (!). А так да, алгоритм примерно такой же :).

nemyax

#275
Force
Дельта мыши по горизонтали соответствует азимуту. По вертикали — высоте. Чтобы матрица не расползлась, задаём шаг в полградуса и каждый раз пересчитываем матрицу по новому значению, а не трансформируем старую. То есть обычный arc rotate. Не?
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Maxim

Не понимаю. Неужто так важно крутить в смотровике модель? Мы хотели хотя бы какой-то функционал, а теперь вон изыски пошли. Которые Force, межу прочим, весьма стопорят, как выясняется. Потому что реализация сложна.
Still they talk anyway
When there's nothing to say
There's so much said in empty words...

nemyax

Цитата: Maxim от 29 сентября 2017 16:21:50
Неужто так важно крутить в смотровике модель?
Конечно. Кому нужен просмотрщик триде-моделек без базовой навигации?
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Zontik

Maxim, бывает. Вот выдаст тебе плоский прямоугольник в профиль, и гадай, что там у него на фасаде.
Дайте глазам отдохнуть! Тёмное место

Force

#279
nemyax, да. Вот только при конвертации направления в сферические координаты и обратно происходит сброс приращения... радианы живут своей жизнью. В результате, модель внезапно начинает вращаться в сторону противоположную движению мыши. Мне не удалось победить это полностью, да и характер вращения мне не нравится, поэтому попробую аркбол.

Цитата: nemyax от 29 сентября 2017 16:19:24
То есть обычный arc rotate. Не?
Вполне возможно, мы говорим об одном и том же :).

Maxim, как оказалось, просмотр модели с одного ракурса, порой, не дает ровным счетом ничего. Поэтому вращение модели - это базовая фича. То есть, она обязана быть :).

nemyax

Цитата: Force от 29 сентября 2017 16:31:39при конвертации направления в сферические координаты и обратно происходит сброс приращения... радианы живут своей жизнью
Ну а если хранить трансформацию не в сферических, а тупо в градусах для осей X и Y? Азимуту при обновлении делать az = (az + az_delta) % 360, а высоту упирать в 90 и -90.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Maxim

Понятно, спасибо.
А как насчёт требований программы к системе? Какая она будет - лёгкая, али тяжёлая?
В процессе работы я люблю параллельно держать открытыми и редактор dromed и фото-редактор, браузер с кучей вкладок и т.п. Но если что, то готов пожертвовать удобствами параллельных процессов. Просто спрашиваю.
Still they talk anyway
When there's nothing to say
There's so much said in empty words...

Force

nemyax, по результатам отчитаюсь, но, если что, совет приму к сведению, спасибо ;).

Maxim, в простое ничего не жрет, в отличие от дромеда, сжирающего ядро целиком :).

Force

Сделал через arcball и да, это самый приятный вариант. :yes: Надо будет еще доработать напильником. :biggrin:

Force

Комитет оценки вращения объектов поставил "зачет" за реализацию вращения объекта в просмотрщике! ВУХУ! :yay: