LINUX.ORG.RU

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

 , , ,


0

1

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

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

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

★★★★★

про общий подход как это можно сделать

Формализмы вращения в трех измерениях © + наложение текстуры с помощью метода UV-параметризации ©.

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

Матосновы машинной графики сразу, чо за полумеры :)

Для любителей вращательной конкретики – Quaternion_type#Java: © :)

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

Не, ну он же просил «общий подход» — матосновы куда уж общее :) Тут была шутка про запрет мата.

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

А по делу?

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

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

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

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

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

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

Хочется переложить это на какой-нить опенгл.

C#, OpenGL, OpenTK: построение, текстурирование и тонирование сферы ©.

P.S. Скорость зависит от Rendering Context.

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

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

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

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

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

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

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

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

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

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

ya-betmen ★★★★★
() автор топика

Со сферой все несколько сложно, можно попробовать провернуть эту задачу над цилиндром, разбить его на сегменты и ПЕРЕД вращением менять текстуры на невидимой части цилиндра

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

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

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

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

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

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

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

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

quickquest ★★★★★
()

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

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

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

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

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

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

ya-betmen ★★★★★
() автор топика

uv координаты двигаешь как тебе надо и всё, кури на предмет glsl это просто.

anonymous
()

Для отрисовки сферы вообще можно было бы шейдер написать без всей этой полигональщины.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.