Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.006 c
15-1228978388
Slider007
2008-12-11 09:53
2009.02.08
С днем рождения ! 11 декабря 2008 четверг


15-1228922168
Нидхелп
2008-12-10 18:16
2009.02.08
Срочно нужна математическая помощь.


15-1229013971
Илья_
2008-12-11 19:46
2009.02.08
По теме начальных классов, "переход через десяток"


15-1229203553
Riply
2008-12-14 00:25
2009.02.08
Хочу сказать спасибо :)


2-1230528308
charoey_mag
2008-12-29 08:25
2009.02.08
Доступ к AD через ADO





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский