|
|
|
Тяпничное кручение земного шарика
|
|||
|---|---|---|---|
|
#18+
Привет человеки. Много лет назад я писал для себя demo-приложение на OpenGL. Рисует земной шарик. Его надо было крутить мышкой. Подсвечивать страны. И точками подсвечивать столицы стран и points of interests. И хотя-бы границы государств. Тоесть ткнул мышкой в GB и подсветил London. И там вспомогательная инфа. Население там... и все такое. Сорцов у меня не осталось. Это был Visual C++ / OpenGl (gl.h). Ну и бох с ними. Не особо печально. Я использовал полярные координаты Фи, Пси (наклон оси и поворот от 0 меридиана). Тоесть drag по X вызывал инкремент-декремент Пси. Д. Циклический от -180 до 180. Тоесть при переполнении величина "переворачивалась". drag по Y вызывал инкремент-декремент Фи с ограничением о т -90 до 90 градусов. Артефакты или дефекты: 1) Шарик не провоарачивался через полюса. Можно было наклонить северный полюс на себя на дальше - нет. 2) Если делать drag влевл-вправо - шарик крутися от 0 до 360 с вободно. Но при наклоне полюса на себя шарик крутился в другой плоскости что для юзера как-то непривычно и не комфортно. А при наклоне южного полюса на себя - шарик как-бе крутился в другую сторону что также неюзабельно. 3) При углах наклона оси около 45 градусов абсолютная скорость кручения точки просмотра не соответствовала ожидаемой. Тоесть когда смотришь на экватор - ожидаешь одну скорость а на средних широтах - такую-же что также неюзабельно. А теперь главный вопрос: Как уйти от этих дефектов? И сделать кручение естественным будто-бы мышка - это ваша рука а шарих это мячик который не имеет ограничений свободы. Шарик планирую задавать центром и двумя ортогональными векторами. Один - смотрит от центра к координате (0,0) , второй смотрит от центра в северный полюс (0,90) Вобщем... жду советов. И сорцов. Скрина все равно нет - но я приаттачиваю для проформы чужой скрин похожий на мой. P.S. OpenGL и С++ не нужен особо. Но нужен принцип и смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 12:58 |
|
||
|
Тяпничное кручение земного шарика
|
|||
|---|---|---|---|
|
#18+
Видеоурок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 13:27 |
|
||
|
Тяпничное кручение земного шарика
|
|||
|---|---|---|---|
|
#18+
Не то. Уважаю Blender - он сверх избыточен. Мне пока нужен принцип Document-Model для моего частного случая. И реакция на MouseMove/MouseButtonDown. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 13:45 |
|
||
|
Тяпничное кручение земного шарика
|
|||
|---|---|---|---|
|
#18+
Вот как было: Вот как хочу сделать: и действующее ограничение. Угол в 90 градусов между U,V. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 15:06 |
|
||
|
Тяпничное кручение земного шарика
|
|||
|---|---|---|---|
|
#18+
maytonВот как было: Вот как хочу сделать: и действующее ограничение. Угол в 90 градусов между U,V. так разницы то никакой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2016, 22:29 |
|
||
|
Тяпничное кручение земного шарика
|
|||
|---|---|---|---|
|
#18+
Крутить-та как? Как крутить та? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2016, 11:12 |
|
||
|
Тяпничное кручение земного шарика
|
|||
|---|---|---|---|
|
#18+
mayton, Ну, во-первых у мячика нужно зафиксировать центр (сферы), как-будто он лежит в круглой чаше и может только вращаться вокруг центра. Далее, человек мышкой на экране придавливает некоторую точку (гМоскву) и тащит ее мышкой по экрану (гМосква все время остается под курсором), а шарик при этом должен поворачиваться так, чтобы это обеспечить. Если такой подход юзабилен - подскажу как пересчитывать точку наблюдения, чтобы данная точка шарика следовала за мышкой (мне проще считать, что вращается не шарик, а точка наблюдения вращается вокруг него). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2016, 09:04 |
|
||
|
Тяпничное кручение земного шарика
|
|||
|---|---|---|---|
|
#18+
Нет. Пока забудьте про Москву. Это прикладное. Главное - катать шарик. С линейной скоростью качения без "прыжков" и ограничителей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2016, 09:43 |
|
||
|
Тяпничное кручение земного шарика
|
|||
|---|---|---|---|
|
#18+
mayton, как же, по вашему, должно выглядеть вращение шарика мышью? Вот ткнул человек в точку x0,y0 экрана, где нарисован шарик, потом переместил курсор в точку x1,y1 экрана, где сработало мышиное событие, что же должно произойти с изображением шарика на экране? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2016, 10:11 |
|
||
|
Тяпничное кручение земного шарика
|
|||
|---|---|---|---|
|
#18+
Я возможно не так выразился. Drag по View-port должен вызывать вращение шарика. Независимо от того попали вы в землю или нет. А событие click на какую-то часть гео-объектов мы обсудим чуть позже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2016, 10:13 |
|
||
|
Тяпничное кручение земного шарика
|
|||
|---|---|---|---|
|
#18+
mayton. Drag по View-port должен вызывать вращение шарика. Независимо от того попали вы в землю или нет. замечательно - угловая скорость вращения шарика пропорциональна линейной скорости мыша. ну как трэкбол ладошкой вращать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2016, 10:39 |
|
||
|
Тяпничное кручение земного шарика
|
|||
|---|---|---|---|
|
#18+
mayton, Дык, сами же писали: И сделать кручение естественным будто-бы мышка - это ваша рука а шарих это мячик который... и я с этом совершенно согласен - очень естественно крутить шарик КАСАЯСЬ его рукой, и проблем с тем как и куда вращать и с какой скоростью не возникает. Тем более люди давно привыкли к инструменту "лапа" для перемещения плоской карты, который за пределами карты отдыхает... Так что советую вам вернуться в лоно природы и не вращать шарик глазами :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2016, 10:41 |
|
||
|
Тяпничное кручение земного шарика
|
|||
|---|---|---|---|
|
#18+
Пожалуй - да. Трекбол - хорошая аналогия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2016, 10:42 |
|
||
|
Тяпничное кручение земного шарика
|
|||
|---|---|---|---|
|
#18+
maytonПожалуй - да. Трекбол - хорошая аналогия. Еще раз..... Эта аналогия работает только тогда когда ты вращаешь строго паралельно одной координате( вокруг одной из осей координат). в реальности то преобразования гораздо сложнее . На пальцах, перемещение мыши по экрану это проекция шара на плоскость, размер этой проекции линейно короче чем фактическое расстояние в пространстве изза разности длин трехмерном пространстве и проекции компьтерная графика генерирует артефакты трехметрого восприятия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2016, 09:54 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=29&tid=1340723]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 387ms |

| 0 / 0 |
