Как мне сгенерировать изометрическое изображение скина Minecraft в PHP?

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

По сути, мне нужно взять сеть, подобную этой (вот схема, показывающая, на что сопоставляется каждая часть) и сделайте из нее 3D-голову. Мне также нужно включить части «аксессуаров для головы», которые должны быть немного больше/смещены от фактической головы.

Кто-нибудь знает, как мне это сделать?


person HellaMad    schedule 11.07.2012    source источник
comment
я не думаю, что вам повезет с внутренними графическими функциями php.   -  person    schedule 11.07.2012
comment
@Dragon, вот о чем я думал ... Знаете ли вы какие-нибудь библиотеки с лучшей поддержкой? Я новичок в обработке изображений в PHP.   -  person HellaMad    schedule 11.07.2012
comment
Если вы работаете ТОЛЬКО с головами из майнкрафта, вы могли бы написать свой собственный код для его обработки и использования внутренних графических функций. Сама модель довольно проста, насколько я понимаю (хотя на самом деле не играл в нее), и математические функции не будут слишком сложными. Единственное, чего мне очень не хватает, так это возможности захватить треугольный участок изображения и перенести его на другой треугольный участок изображения. Остальное можно было бы довольно легко сделать, работая от задней части изображения к передней, что обеспечило бы правильную видимость.   -  person Fluffeh    schedule 11.07.2012
comment
Или используйте WebGL и визуализируйте его в 3D.   -  person Petah    schedule 11.07.2012
comment
@Petah Я хочу вывести только PNG..   -  person HellaMad    schedule 11.07.2012
comment
@DC_ ну теоретически вы можете использовать wkhtmltoimage оттуда, чтобы преобразовать его в PNG.   -  person Petah    schedule 11.07.2012


Ответы (1)


Ну, во-первых, это будет сложная работа, на мой взгляд.

http://www.minecraftwiki.net/images/0/01/Skinzones.png плоский, но вам нужно преобразовать его в ISOMETRIC 3D, поэтому вам нужно исказить изображения.

Например, посмотрите на изображения ниже

3D BoxЛицевая сторона коробки Левая сторона коробки

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

К сожалению, библиотека GD, которая поставляется в комплекте с PHP, недостаточно продвинута, чтобы позволить вам делать такие вещи.

Вы должны использовать другую библиотеку, такую ​​как Image Magic, и эта ссылка является учебным пособием по использованию функций искажения http://www.imagemagick.org/Usage/distorts/

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

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

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

посмотрите и эту ссылку

http://www.fmwconcepts.com/imagemagick/index.php

person Aamir Mahmood    schedule 13.07.2012