Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.08;
Скачать: CL | DM;

Вниз

Посоветуйте программу для визуальных эффектов   Найти похожие ветки 

 
Григорьев Антон ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
2-1229947755
LDV
2008-12-22 15:09
2009.02.08
Шрифты


15-1229286098
Nic
2008-12-14 23:21
2009.02.08
Сменить цвет счётчика LiveInternet


2-1230060832
neveGreen
2008-12-23 22:33
2009.02.08
Не убивается форма


2-1230543206
Pavel
2008-12-29 12:33
2009.02.08
Вывод в таблицу имен столбцов


1-1207425556
barakuda
2008-04-05 23:59
2009.02.08
MDI интерфейс