LINUX.ORG.RU

Изменение перспективы изображения


0

1

Подскажите каким способом проще решить такую задачу. Есть некоторые изображения. Допустим их несколько штук и на них изображён куб в разных положениях. Он может быть не всегда в одной части изображения, а где угодно и повернут случайно, а так же разного размера. Нам требуется наложить на грани этого куба изображения.. Причем изображений около тысячи и надо чтобы на выходе получилась тысяча изображений куба, с разными картинками наложенными на него. Раньше, необходимо было накладывать изображение только на грань которая «смотрит на нас». Соответственно я сделал такой редактор: мы как фон в него загружаем картинку с кубом. Потом указываем область равной той грани где надо наклеить сверху изображение. Т.е. после указания этой области мы знаем x,y, ширину и высоту грани. Эти данные для данной картинки куба сохраняются в базу. Когда нам надо создать много картинок с этим кубом, запускается скрипт который смотрит в базе координаты, подгоняет до них изображения которые нужно наложить и с помощью стандартных php функций для работы с изображениями происходит наложение и сохранение. Теперь же мне надо попытаться сделать, чтобы изображения можно было накладывать на другие грани. Для этого нужно изменять перспективу накладываемых картинок. Например я укажу 4 координаты для боковой грани куба, и затем нужно опираясь на них изменить перспективу накладываемого изображения чтобы оно наложилось на эту грань.. Реализуема ли данная задача?



Последнее исправление: Max4d (всего исправлений: 1)

Ответ на: комментарий от Jaberwock

А то что я наделал с изображением в css(разные фильтры, трансформации) можно потом сохранить как измененную картинку?

Max4d
() автор топика
Ответ на: комментарий от Max4d

Я когда то в детстве пробовал на opengl писать.. появилась идея создать плоскость, на нее натянуть текстуру куба. Поверх создать маленькую плоскость повернутую как надо в пространстве, на которую наложится текстура макета.. соответственно берем картинки кубов указываем для каждой плоскость в нужном месте и данные сохраняем в БД. Затем накладываем картинки когда надо.. Это, наверное, можно сделать на яваскрипт с помощью сторонних библиотек.. или я вообще не в ту степь пошел и надо как то иначе делать.. может через flash с его actionscript..

Max4d
() автор топика
Ответ на: комментарий от Max4d

Смог добиться с помощью плагина jquery который меняет свойства css нужного эффекта. Можно ли как то сохранить полученное изображение?

Max4d
() автор топика
Ответ на: комментарий от Max4d

А может инструмент не тот? Это точно надо делать в браузере?

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

Если сохранить, то тебе наверно канвас нужен. Там вертеть сложнее ибо 2д, сохранить можно через дата:УРЛ. ВебГЛ - в общем-то тот же канвас, тоже должно быть можно сохранить, а вертеть там просто.

ниасилил что тебе надо, отвечаю на два первых коментария

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

В понедельник на работе буду пробоватЬ!

Max4d
() автор топика
Ответ на: комментарий от Kalashnikov

ниасилил что тебе надо, отвечаю на два первых коментария

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

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

Max4d
() автор топика
Ответ на: комментарий от Max4d

Я всё равно не понял, что за куб и почему он картинка.

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

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

Вот, наложил транзистор на грань куба:) Самого куба может и не быть.. Это для примера. Чтобы понятнее было про куб писал.. Просто нужно менять перспективу картинки по заданным, например, 4 точкам. Делать это надо из под админки сайта. Генерация проводится редко. Просто указываем картинки которые будут «подложкой», для каждой картинки-подложки сохранены координаты где на нее наложить:) Скрипт автоматически берет одну из накладываемых картинок, смотрит координаты куда наложить, подгоняет до них, сохраняет изображение, берет другую картинку для наложения и по новой..

Max4d
() автор топика
Ответ на: комментарий от Max4d

Напиши простенький софт-рендер: отрисовку текстуры с учётом заданных видовой и перспективной матриц, не забывая о коррекции перспективы. Спецификация OpenGL тебе в помощь, там основные формулы есть.

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