0 Members and 4 Guests are viewing this topic.
Можно сделать так чтобы кадры располагались вертикально?Делаю скин, в котором анимация длинная и узкая, состоящая из 300 кадров, но фотошоп не может сохранить ее в пнг (
... оказывается, с фотошопом поставляется прекрасное руководство .
Уж не это: photoshop-cc-javascript-ref.pdf, photoshop-cc-scripting-guide.pdf ?
У меня было какое-то руководство к CS5 (photoshop_cs5_help.pdf)
photoshop-cc-javascript-ref.pdf, photoshop-cc-scripting-guide.pdf ?
Меня интересует инфа именно по скриптам, а не по ФШ вцелом.
Photoshop CC 2015.1.2 не пашет раскодровка.
Всё работает, не будут же адобовцы до такой степени изменять JavaScript Reference, чтобы нарушилась совместимость со старыми скриптами.Только в СС баг при вращении векторных фигур, так они его и не исправили ещё с 2014 - вблизи начального угла трансформации фигура заметно деформируется, хорошо видно, если нарисовать небольшой круг (50-100 пикс.) и покрутить вручную (Ctrl+T). Только из-за этого я им и не пользуюсь.
Вот так работает:
Прочитайте внимательно пост https://www.aimp.ru/forum/index.php?topic=30668.msg276908#msg276908Про выделение трансформируемой области не надо забывать - она определяет размеры кадра. Сообщение о том и говорит, что не заданы границы.
Black_AVP, спасибо тебе огромное. +1000
А есть ли плагин или скрипт который скручивал бы таким образом:
Если надо просто скрутить полоску, то можно попробовать нарисовать прямоугольник, добавить попарно на горизонтальных сторонах точки и просто мышкой поменять их местами.К примеру, для одной пары точек:
... Мне именно нужна автоматизация потому, что оборотов нужно и мало, и много.
Врядли это можно автоматизировать, если только писать скрипт конкретно для такой узкой задачи, и плагинов, чтоб что-то подобное делали не припомню.Проще, наверное, нарисовать один элемент, сделать из него шейп или паттерн и повторять нужное число раз, используя трансформацию.
Нашёл, наконец, решение, как надёжно обработать исключительную ситуацию, возникающую при отсутствии выделенной обласи, скрипт перезалил.PSD-файлик для примера (CS6) во вложении. Перед запуском скпипта нужно сделать активной группу Slider и с зажатым Ctrl кликнуть по иконке слоя Selection.
Доброго здоровья! Не работает скрипт по анимации у меня почему то. Посмотрите скрины. После применения скрипта выделение ( как я понял) становится маленьким и убегает в верхний левый угол, поэтому пишет, что выделенная область пуста. Хотя бобину проворачивает как положено,но в раскадровку попадает пустота с верхнего левого угла. Анимацию делал с включенным фоном, чтоб было видно, что происходит. С файлом Var.psd, который дан для примера к скрипту происходит тоже самое. Использовал разные версии фотошоп. Не помогло. Да и опробовал все виды аниматоров в скрипте.
С файлом var. я делал все точно как написано в посте.
На последнем скрине видите выделение в 4 пикселя? Это то что попадёт в раскадровку. Т.е. ничего.
Только в СС баг при вращении векторных фигур, так они его и не исправили ещё с 2014 - вблизи начального угла трансформации фигура заметно деформируется, хорошо видно, если нарисовать небольшой круг (50-100 пикс.) и покрутить вручную (Ctrl+T). Только из-за этого я им и не пользуюсь.
Попробовал в CC2017 - не заметил деформации, впрочем, я и в CC2015 их не замечал, - может не там смотрю
Уже опробовал в ХР в CS4 . Та же картина.
Интересно... А не ты ли этот эффект первым заметил, когда ещё крутили рулоны?В СС2015 хорошо видно деформацию векторного контура круга при углах поворота +/- 0,5..1 гр. и кратным 90.
Кстати, мистика какая-то, но я пробовал скрипт (который с графической оболочкой) и у меня случилась такая же трабла: сообщение о пустом выделении. Попробовал обычный скрипт - всё работает... И после этого проблему не удаётся повторить: "графический" скрипт тоже no problem Но и в первый раз я же всё делал правильно
Заработал после первого включения старого скрипта. Теперь с граф. оболочкой тоже работает.
Здравствуйте, не могли бы вы сделать аналог AIMPSE_Animator2, только что бы он склеивал не отдельные изображения, а кадры анимации сделанные в самом фотошопе.
Так преобразуй их из TimeLine в слои, а потом тем же скриптом и собери.
Здравствуйте, не могли бы вы сделать плагин-панель для позиционирования выделенных точек в векторных объектов, с поддержкой чисел с запятой, очень не хватает. Или если такой уже есть, показать мне. Спасибо.
А чем стандартные средства не устраивают? Выделил точку, нажал Ctrl+T и вводи значения X и Y.
Хм. Я попробую, спасибо.
Кто-нибудь сталкивался с подобной проблемой при работе со скриптами в фотошопе?
function WaitForRedraw(){var eventWait = charIDToTypeID("Wait")var enumRedrawComplete = charIDToTypeID("RdCm")var typeState = charIDToTypeID("Stte")var keyState = charIDToTypeID("Stte")var desc = new ActionDescriptor()desc.putEnumerated(keyState, typeState, enumRedrawComplete)executeAction(eventWait, desc, DialogModes.NO)}
Ага! Наступил на те же грабли. Это возникает при трансформации больших текстур., для 4К особенно актуально.Тогда я нашёл вот такую функцию, теперь что-то в инете найти не могу:Read more...Code: [Select]function WaitForRedraw(){var eventWait = charIDToTypeID("Wait")var enumRedrawComplete = charIDToTypeID("RdCm")var typeState = charIDToTypeID("Stte")var keyState = charIDToTypeID("Stte")var desc = new ActionDescriptor()desc.putEnumerated(keyState, typeState, enumRedrawComplete)executeAction(eventWait, desc, DialogModes.NO)}Мне в ней мало что понятно, но она действительно работает. Вызывать её надо после трансформации до копирования растра.Скрипт я так и не офрмил, но тонарм раскадрироваь только так и получилось, хотя скрипт работает оооочень медленно...
Вызывать её надо после трансформации до копирования растра.
Все функции обычно помещаются в начало скрипта, а
// Копируемая область изображения должна быть выделена в документе!// Устанавливаем значенияvar Angle = 360; // Угол полного поворота в градусахvar Frames = 5; // Количество кадровvar CW = "-"; // "-" минус, если поворот против часовой стрелки, "" в противном случаеif (app.documents.length > 0) { app.preferences.rulerUnits = Units.PIXELS; var srcDoc = app.activeDocument; var B = srcDoc.selection.bounds; // Определяем размеры текущего выделения var W = B[2] - B[0]; var H = B[3] - B[1]; // Создаем новый документ нужных размеров var pasteDoc = app.documents.add(W, H, srcDoc.resolution, "Frames", NewDocumentMode.RGB, DocumentFill.TRANSPARENT); // Собственно цикл for ( var i = 0; i < Frames; i++ ) { app.activeDocument = srcDoc; srcDoc.selection.select(Array (Array(B[0], B[1]), Array(B[2], B[1]), Array(B[2], B[3]), Array(B[0], B[3])), SelectionType.REPLACE, 0, true); srcDoc.selection.copy(1); // Копируем выделенное srcDoc.activeLayer.rotate(CW + Angle/Frames); app.activeDocument = pasteDoc; pasteDoc.selection.select(Array (Array(W, 0), Array(W, 0), Array(W, H), Array(W, H)), SelectionType.REPLACE, 0, false); function WaitForRedraw(){var eventWait = charIDToTypeID("Wait")var enumRedrawComplete = charIDToTypeID("RdCm")var typeState = charIDToTypeID("Stte")var keyState = charIDToTypeID("Stte")var desc = new ActionDescriptor()desc.putEnumerated(keyState, typeState, enumRedrawComplete)executeAction(eventWait, desc, DialogModes.NO)} pasteDoc.paste(); // Вставляем изображение из буфера // Повторяем операцию нужное количество раз }}
В том месте должен быть вызов этой функции WaitForRedraw(), а само её тело в начале скрипта.
function WaitForRedraw(){var eventWait = charIDToTypeID("Wait")var enumRedrawComplete = charIDToTypeID("RdCm")var typeState = charIDToTypeID("Stte")var keyState = charIDToTypeID("Stte")var desc = new ActionDescriptor()desc.putEnumerated(keyState, typeState, enumRedrawComplete)executeAction(eventWait, desc, DialogModes.NO)}var Angle = 360; // Угол полного поворота в градусахvar Frames = 5; // Количество кадровvar CW = "-"; // "-" минус, если поворот против часовой стрелки, "" в противном случаеif (app.documents.length > 0) { app.preferences.rulerUnits = Units.PIXELS; var srcDoc = app.activeDocument; var B = srcDoc.selection.bounds; var W = B[2] - B[0]; var H = B[3] - B[1]; var pasteDoc = app.documents.add(W, H, srcDoc.resolution, "Frames", NewDocumentMode.RGB, DocumentFill.TRANSPARENT); for ( var i = 0; i < Frames; i++ ) { app.activeDocument = srcDoc; srcDoc.selection.select(Array (Array(B[0], B[1]), Array(B[2], B[1]), Array(B[2], B[3]), Array(B[0], B[3])), SelectionType.REPLACE, 0, true); srcDoc.selection.copy(1); srcDoc.activeLayer.rotate(CW + Angle/Frames); app.activeDocument = pasteDoc; pasteDoc.selection.select(Array (Array(W, 0), Array(W, 0), Array(W, H), Array(W, H)), SelectionType.REPLACE, 0, false); WaitForRedraw() pasteDoc.paste(); }}
// Копируемая область изображения должна быть выделена в документе!// Устанавливаем значенияfunction WaitForRedraw(){var eventWait = charIDToTypeID("Wait")var enumRedrawComplete = charIDToTypeID("RdCm")var typeState = charIDToTypeID("Stte")var keyState = charIDToTypeID("Stte")var desc = new ActionDescriptor()desc.putEnumerated(keyState, typeState, enumRedrawComplete)executeAction(eventWait, desc, DialogModes.NO)}var Angle = 360; // Угол полного поворота в градусахvar Frames = 5; // Количество кадровvar CW = "-"; // "-" минус, если поворот против часовой стрелки, "" в противном случаеif (app.documents.length > 0) { app.preferences.rulerUnits = Units.PIXELS; var srcDoc = app.activeDocument; var B = srcDoc.selection.bounds; // Определяем размеры текущего выделения var W = B[2] - B[0]; var H = B[3] - B[1]; // Создаем новый документ нужных размеров var pasteDoc = app.documents.add(W, H, srcDoc.resolution, "Frames", NewDocumentMode.RGB, DocumentFill.TRANSPARENT); // Собственно цикл for ( var i = 0; i < Frames; i++ ) { app.activeDocument = srcDoc; srcDoc.selection.select(Array (Array(B[0], B[1]), Array(B[2], B[1]), Array(B[2], B[3]), Array(B[0], B[3])), SelectionType.REPLACE, 0, true); srcDoc.selection.copy(1); // Копируем выделенное srcDoc.activeLayer.rotate(CW + Angle/Frames); WaitForRedraw(); app.activeDocument = pasteDoc; pasteDoc.selection.select(Array (Array(W, 0), Array(W, 0), Array(W, H), Array(W, H)), SelectionType.REPLACE, 0, false); // Повторяем операцию нужное количество раз }}
Всё-таки логичнее после деформации, чтоб процесс полностью завершился