Вращающийся глобус в Opengl-es - PullRequest
       2

Вращающийся глобус в Opengl-es

2 голосов
/ 22 сентября 2010

Мне нужно нарисовать вращающийся глобус, используя opengles в Android. Я думаю, что нам нужно нарисовать сферу, а затем наложить на нее текстурную карту. Если я прав, мы не можем использовать служебную библиотеку glu в Opengl ES для рисования сферы. Я нашел какой-то код в цели C, но тогда мне пришлось бы заставить его работать на Android.

http://www.iphone4gnew.com/procedural-spheres-in-opengl-es.html

Есть ли другой способ сделать это? Я не уверен, как подойти к этой проблеме. Не могли бы вы дать мне некоторые материалы, которые бы заставили меня смотреть в правильном направлении.

Спасибо

Ответы [ 2 ]

8 голосов
/ 22 сентября 2010

Вы можете создать свою собственную функцию рендеринга сферы.

Тесселированная сфера - это не более стека из n сегментов конуса, каждый из которых аппроксимирован m срезами.

Это изображение (courtsey of dglwiki.de) иллюстрирует это: gluSphere construction

(текст на немецком языке переводится как «Если разрешение слишком низкое, сфера вырождается в другие симметричные тела)

Чтобы построить сферу, вам нужно указать центральную точку, радиус, количество стеков и количество срезов на стек.

Первым полюсом вашей сферы может быть любая точка на расстоянии радиуса от центральной точки. Вектор от этой точки до центральной точки определяет ось вращения вашей сферы (и, следовательно, положение второго полюса)

Далее, вам нужно будет приблизить несколько эквидистантных кругов широты на вашей сфере вокруг оси вращения. Количество кругов должно быть числом стеков -1. У каждого из этих кругов должно быть столько вершин, сколько нужно желаемого количества срезов.

Рассчитав их, у вас будет достаточно информации о геометрии для построения граней ваших сфер.

Начните с веерного треугольника, начинающегося на одном из полюсов, используя вершины первого круга. Затем постройте треугольные полосы для каждой пары соседних окружностей широты. Последний шаг - построить еще один треугольный веер от второго полюса до последнего из ваших кругов широты.

Используя этот подход, вы можете генерировать произвольные сферы произвольной гладкости

2 голосов
/ 14 октября 2010

В дополнение к тому, что говорит sum1, ссылка, которую вы предоставляете на код obj-C, в основном представляет собой просто C, что весьма неплохо транслируется на Java / android. Предоставленная техника очень похожа на ту, которую предлагает sum1, хотя автор использует только один веер сверху, а затем рисует весь остаток сферы одной треугольной полосой. Кроме того, его земной шар «лежит на боку» с веером на «восточном полюсе», а другой - на «западном полюсе».

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...