LINUX.ORG.RU

Нарисовать сферу с динамической текстурой в андроиде

 , , ,


0

1

Вопрос не про код а про общий подход как это можно сделать. Особенно интересно как это можно сделать для мобильников. Если какой-то движок позволяет такое делать с минимальными трудозатратами то это плюс.

Хочу нарисовать сферу, текстура на которой больше чем сама сфера и для того чтобы вернуться в исходную точку сферу нужно повернуть не на 360 градусов а на 720, или даже на 500 например.

Опционально если текстуру можно было бы рандомить на лету до бесконечности.

★★★★★

Ответ на: комментарий от ya-betmen

А по делу?

Давным-давно я пользовался самописными кватернионами ©
на «нинужном паскале». Сейчас их проще найти в библиотеке нужного тебе языка.

По текстурам возможны варианты:

  1. заполнение сферы кусочными текстурами.
  2. генерация 1 плоской динамической текстуры и конформное отображение её на сферу, например, стереографической проекцией.
quickquest ★★★★★ ()
Ответ на: комментарий от quickquest

Вопрос не в том, что я не могу ручками положить точки на сферу. А в том, что если я буду делать это руками, то это будет немного долго. Хочется переложить это на какой-нить опенгл.

Мой опыт с опенглом говорит, что в момент текстурирования сферы у меня уже должна бы текстура. Но как заменять куски текстуры налету я не понимаю.

ya-betmen ★★★★★ ()
Ответ на: комментарий от ya-betmen

Я правильно понял, что идея в том чтобы разбить сферу на полигоны и накладывать текстуру на каждый отдельно?

Да, если это не критично для статистических характеристик текстуры на границах разбиения.
В противном случае выгоднее натягивать «сову на глобус» заранее текстурированную плоскость на сферу.

quickquest ★★★★★ ()
Ответ на: комментарий от quickquest

если это не критично для статистических характеристик текстуры на границах разбиения

Это я только после экспериментов смогу понять

выгоднее натягивать заранее текстурированную плоскость на сферу

А как менять куски такой текстуры на лету?

ya-betmen ★★★★★ ()
Ответ на: комментарий от zaz

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

ya-betmen ★★★★★ ()
Ответ на: комментарий от ya-betmen

На сфере мне кажется это все не получится. Так как в сфере есть «полюса» где сходятся в одну точку все меридианы, и вот если пользователь видит эту точку и ее окресности то как на нее отмапить 720 градусов в декартовой системе ?

zaz ★★★★ ()
Ответ на: комментарий от ya-betmen

А как менять куски такой текстуры на лету?

Можно поискать в потрохах OpenGL Sphere © «отложенный фрагментный шейдер» для рисования сферы, позволяющий менять куски текстуры до их отображения, что ускоряет рендеринг.

P.S. А ещё можно спросить 3D-игроделов, это часть их работы.

quickquest ★★★★★ ()

сли какой-то движок позволяет такое делать с минимальными трудозатратами то это плюс.

Unity, там проще всего, апк сразу сделаешь. Координаты текстуры вешаешь на отдельный объект, который вращается медленнее.
Хотя, задача не очень понятна - как ты узнаешь на какой угол ты повернул сферу, не глядя на текстуру. Ну сам разберешься.

sid350 ★★★★★ ()
Ответ на: комментарий от sid350

как ты узнаешь на какой угол ты повернул сферу, не глядя на текстуру

А при чем тут текстура и поворот?

Скажем так в юнити можно определить текстуру а потом динамически менять её куски чтобы это отображалось на объекте на который она натянута?

ya-betmen ★★★★★ ()