Форум: "Прочее";
Текущий архив: 2009.02.08;
Скачать: [xml.tar.bz2];
ВнизПосоветуйте программу для визуальных эффектов Найти похожие ветки
← →
Григорьев Антон © (2008-12-11 17:14) [0]Нужно в программу вставить анимацию. Анимация очень простая - например, схлопывание картинки в точку. Программная реализация уже готова, теперь надо просто красиво нарисовать спрайты, изображающие различные фазы схлопывания. Если пытаться тупо уменьшать картинку через StretchDraw или в Paint"е, получается не очень красиво, нарушается симметрия деталей. Не знает ли кто программу, которая заточена под такие задачи? Что-то типа того, что на входе - картинка и желаемый способ исчезания, на выходе - серия картинок, показывающих последовательно фазы исчезания? Очень уж не хочется вручную каждую фазу править. У рисунков исходный размер 48х48, если это имеет значение.
← →
tesseract © (2008-12-11 17:23) [1]Sony Vegas, Boris Effects, Adobe Flash action script и другие.
И есть такой спецкомпонент для Delphi как ImageEN :-)
← →
Servy © (2008-12-11 23:55) [2]> Анимация очень простая - например, схлопывание картинки
> в точку.
> У рисунков исходный размер 48х48, если это имеет значение.
Я бы для такой задачи использовал фотошоп и макросы. Произвели нужные превращения для одного рисунка и записали, потом проиграли для остальных.
А вообще, наверное, графику стоит предоставить дизайнерам, а то была тут недавно цитата про сапожника, пироги, и результаты их совмещения в одном предложении. :)
← →
DVM © (2008-12-12 00:01) [3]Фотошоп + скрипт (не макросы).
Вот пример скрипта для фотошопа, который делает уменьшение картинки за несколько шагов. Его несложно переделать в то что требуется.
Файл сохранить с расширением .js
var docRef = app.activeDocument;
var strtRulerUnits = app.preferences.rulerUnits;
app.preferences.rulerUnits = Units.PIXELS;
var docHeight = docRef.height;
var docWidth = docRef.width;
var docResolution = 400.0;
var MaxWidth = 2362;
var MaxHeight = 1581;
var coeffH = parseInt(docWidth) / parseInt(docHeight);
var coeffW = parseInt(docHeight) / parseInt(docWidth);
function makeFrame (BackgroundColor, ForegroundColor, Size) {
var docHeight = docRef.height;
var docWidth = docRef.width;
var oldFgColor = app.foregroundColor;
var oldBgColor = app.backgroundColor;
var fgColor = new SolidColor();
var bgColor = new SolidColor();
fgColor.rgb.hexValue = ForegroundColor;
bgColor.rgb.hexValue = BackgroundColor;
var i = 0;
while (typeof Size[i] != "undefined"){
app.foregroundColor = (i % 2) ? bgColor : fgColor;
app.backgroundColor = (i % 2) ? fgColor : bgColor;
docWidth += Size[i] * 2.0;
docHeight += Size[i++] * 2.0;
docRef.resizeCanvas(docWidth, docHeight, AnchorPosition.MIDDLECENTER);
}
app.foregroundColor = oldFgColor;
app.backgroundColor = oldBgColor;
}
function SaveAsJPEG (Destination, TailName, Quality, Limit) {
var FileName = docRef.name;
var OutputFileName = Destination + FileName;
var regex = /(.*)\.(.*)/;
var CorrectedName = regex.exec(OutputFileName);
OutputFileName = CorrectedName[1];
FullOutputFileName = OutputFileName + TailName + ".jpg";
docRef.flatten();
docRef.changeMode(ChangeMode.RGB);
docRef.bitsPerChannel = BitsPerChannelType.EIGHT;
jpegFile = new File(FullOutputFileName);
jpegSaveOptions = new JPEGSaveOptions();
jpegSaveOptions.embedColorProfile = false;
jpegSaveOptions.quality = Quality;
docRef.saveAs(jpegFile, jpegSaveOptions, true, Extension.LOWERCASE);
jpegFile = null;
if (typeof Limit == "undefined"){
// alert("Undefined Limit");
} else
{
jFile = new File(FullOutputFileName);
CurrentLength = jFile.length;
jFile = null;
while (CurrentLength > (Limit + 19000)){
Quality = Quality - 1;
jpegSaveOptions.quality = Quality;
docRef.saveAs(jpegFile, jpegSaveOptions, true, Extension.LOWERCASE);
jFile = new File(FullOutputFileName);
CurrentLength = jFile.length;
jFile = null;
}
}
}
function ResizeStepByStep (MaxWidth, MaxHeight, Method) {
if ((docWidth > MaxWidth) || (docHeight > MaxHeight))
{
var Ratio = MaxWidth / MaxHeight;
if (coeffH > Ratio)
{
var stepWidth = parseInt(docWidth) * 0.1;
var tmpWidth = parseInt(docWidth) - stepWidth;
while (tmpWidth > (MaxWidth + 1))
{
docHeight = coeffW * tmpWidth;
docWidth = tmpWidth;
docRef.resizeImage(docWidth, docHeight, docResolution, Method);
tmpWidth = tmpWidth - stepWidth;
}
docHeight = coeffW * MaxWidth;
docWidth = MaxWidth;
}
if (coeffH <= Ratio)
{
var stepHeight = parseInt(docHeight) * 0.1;
var tmpHeight = parseInt(docHeight) - stepHeight;
while (tmpHeight > (MaxHeight + 1))
{
docWidth = coeffH * tmpHeight;
docHeight = tmpHeight;
docRef.resizeImage(docWidth, docHeight, docResolution, Method);
tmpHeight = tmpHeight - stepHeight;
}
docWidth = coeffH * MaxHeight;
docHeight = MaxHeight;
}
docRef.resizeImage(docWidth, docHeight, docResolution, Method);
}
}
savedState = docRef.activeHistoryState;
ResizeStepByStep(2362, 1581, ResampleMethod.BICUBICSHARPER);
//makeFrame ("FFFFFF", "010101", [1, 1, 40]);
SaveAsJPEG("c:/tmp/", "_PRINT", 12, 5000000);
docRef.activeHistoryState = savedState;
docRef.close(SaveOptions.DONOTSAVECHANGES);
app.preferences.rulerUnits = strtRulerUnits;
docRef = null;
← →
DVM © (2008-12-12 00:02) [4]Правда в нем много лишнего (я им фотки для печати готовлю), но все довольно просто.
← →
Григорьев Антон © (2008-12-14 15:33) [5]Спасибо за советы, но они в итоге не пригодились. Тех монстров, которые вы тут уопомянули, слишком долго осваивать. Я надеялся, а вдруг кто-нибудь знает простенькую утилиту, заточенную под решение нескольких частных задач. В конце концов обошёлся Paint"ом, потеря симметрии на отдельных картинках оказалась совсем незаметной из-за того, что они меняются быстро, глаз не успевает заметить.
Что касается дизайнера, то это, конечно, хорошо, да только где его взять, когда речь идёт о программе, которую я пишу в одиночку для своего удовольствия. Эта программа будет выложена со всеми кодами в спободный доступ, может, тогда и найдётся умеющий рисовать энтузиаст, который сделает картинки получше :)
← →
tesseract © (2008-12-14 19:40) [6]
> может, тогда и найдётся умеющий рисовать энтузиаст, который
> сделает картинки получше :)
В сети есть набор иконок и другого под BSD или Creative Commons. Или лучше поддержку скинов сделай - так нарисуют.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.02.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c