Обертывание/деформирование CALayer/UIView (или OpenGL) в 3D (iPhone)

У меня есть UIView (и таким образом CALayer), который я пытаюсь деформировать или изогнуть немного в 3D пространстве. Таким образом, предположите, что мой UIView является плоской маркировкой, которая я хочу частично перенести пивную бутылку (не 360 градусов вокруг, только на одной "стороне").

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

Как я могу достигнуть этого?

7
задан genpfault 26 May 2011 в 15:50
поделиться

3 ответа

Взгляните на пример кода Apple PVRTextureLoader Это проект OpenGL, который демонстрирует, как отобразить текстуру (вашу метку) на поверхности (на цилиндре в вашем случае).

Джефф ЛаМарш опубликовал хороший учебник, чтобы начать работу с Open GL.

2
ответ дан 7 December 2019 в 10:00
поделиться

Лучшее, что вы можете сделать с Core Animation, - это выполнить кусочно-линейную аппроксимацию.

Например, вы можете разделить свой «цилиндр» на восемь сегментов и расположить их так:

  _
 / \
|   |

Вы можете дать им одно и то же изображение, но изменить перевод так, чтобы они выровнялись по краям. Затем дайте каждому преобразование (либо простое горизонтальное сжатие, либо своего рода «трапецеидальный камень», если вы хотите получить перспективный вид).

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

Эта CSS-анимация может вдохновить вас.

3
ответ дан 7 December 2019 в 10:00
поделиться

На этой странице есть несколько примеров "искажения": http://www.sgi.com/products/software/opengl/examples/more_samples/

Я (честно) не знаю, как сделайте это, но у меня есть эта страница в закладках в течение некоторого времени, чтобы попытаться деформировать / преобразовать UIView с сеткой / сеткой.

Удачи.

^. ^

1
ответ дан 7 December 2019 в 10:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: