искажение изображения кварца 2d / openGl / cocos2d в iphone при перемещении вершин в игре 2.5d для iphone - PullRequest
1 голос
/ 15 февраля 2011

Мы пытаемся добиться следующего в игре для iphone:

Используя 2d файлы png, создайте сцену, которая выглядит как 3d.Когда пользователь перемещает устройство, отдельные png-файлы будут деформироваться / искажаться соответственно, чтобы придать эффект глубины.

пример сцены: пустая комната, 5 стен и кресло в середине.= 6 файлов png со слоями.

Мы успешно выполнили это, используя встроенные функции, такие как перекос и масштабирование.Применяя преобразования к различным стенам и креслу, когда устройство наклоняется и перемещается, стены будут наклоняться / масштабироваться / перемещаться.Однако проблема в том, что мы используем 6 PNG-файлов, края не встречаются при перемещении устройства.Нам нужно новое решение, использующее реальный движок.

Вопрос:

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

Какова лучшая структура, чтобы сделать это в наименьшее количество времени?Мы пойдем по этому пути?

Ответы [ 2 ]

1 голос
/ 16 февраля 2011

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

Хороший пример построения сцены, такой какэто можно найти в примере, который Джон Блэкберн предоставляет здесь .Он показывает, как настроить слои для представления стен в лабиринте, применив к ним соответствующее вращение и сдвиг, а затем дает перспективу сцены, используя прием изменения компонента m34 в CATransform3D для сцены.

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

Изменение угла камеры так же просто, как поворот сцены в ответ на сдвиг в ориентацииустройство.

0 голосов
/ 16 февраля 2011

Если вы собираетесь деформировать текстуры так, как они будут деформированы в 3D-сцене, то почему бы не позволить графическому оборудованию выполнить тяжелую работу за вас, сопоставив текстуры с 3D-полигонами, затем изменив проекцию илиперемещение полигонов вокруг?

Я сомневаюсь, что вы могли бы сделать это быстрее, ограничившись двумерными преобразованиями - аппаратные средства приспособлены для умножения матриц 3x3 (ну, 4x4 однородных).

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