-
Content Count
95 -
Joined
-
Last visited
Posts posted by BufferOverflow
-
-
Поставил VC 2012. Заработало!
По логике, последующий (2013) должен содержать все от предыдущего (2012)?!
Нет, эти пакеты не ретроспективны
-
А есть ли смысл, если стоит 2013 и 2015?
Не попробуешь - не узнаешь. Проблема-то у тебя наверняка в том, что magick не может найти одну из своих зависимостей. А для деталей обращайся к журналу событий.
-
@ktulho, привет. Вот такую ошибку выдаёт при попытке сохранить иконки. Проверил сохранение атласа - всё работает нормально. Windows 7 SP1 x64, NET v 4.5.2. Клиент 9.16 с последними обновлениями (танки для Black Friday). Версия 117.
Thread: Main Exception: System.NullReferenceException Message: Ссылка на объект не указывает на экземпляр объекта. в TankIconMaker.Ut.ExpandIconPath(String path, WotContext context, Style style, String country, String class_, Boolean fragment) в UtMisc.cs:строка 391 в TankIconMaker.MainWindow.saveIcons(String pathTemplate) в MainWindow.xaml.cs:строка 1192 ... в TankIconMaker.App.Main(String[] args) в App.xaml.cs:строка 109
А на 8.1 всё ок.
Внизу окна есть кнопочка "...". Нажми на неё, увидишь окно с тремя параметрами. Для первого опять нажимаешь "..." и в появившемся окне вводишь "{IconsPath}" (без кавычек). Если поможет - сообщи, сделаю ПР разработчику
-
И TIM, и Magick.Net написаны под .Net Framework 4.0.
Visual C++ 2012 Redistributable установлен? Если нет, то советую.
-
Почему не на C++? Там ведь можно спокойно включить direct3d библиотеку, чем идти окольными путями в C#.
На C# это не так уж и проблематично. Есть механизм P/Invoke, с помощью которого можно описать реализуемые в библиотеке методы. Я даже не сказал бы, что это было сложнее, чем заголовки в том же C++.
Но, с другой стороны, еслиб писалось всё чисто на C++, то можно было бы расходовать меньше оперативной памяти,тк в Плюсах большая быстрота исполнения кода и расход памяти контролирует разработчик из Autodesk'a.
Насчёт оперативной памяти ты прав, C# в этом плане проигрывает C++, зато выигрывает в плане отсутствия утечек. А вот насчёт быстроты кода - не согласен. В C# очень многое сделано для оптимизации, и управляемый код уже не хуже неуправляемого, а в перспективе и эффективнее будет.
- 2
-
советуй дядя.
Какой вежливый человек. Даже сам просит себя послать. Вот как такому отказать, а?
- 1
-
Вроде версия последняя,а вот:(
Попробую из шапки поставить,хотя по билду то же самое.
П.С: да нет,абсолютно идентичны файлы.Может кеш удалить,он по моему еще бог знает какой,не охота были стили терять.
П.П.С:экспортировал стили,удалил старые файлы в апдате,все равно нет.Давно хотел фон убрать,он еле еле,но виден.
Правой кнопкой клик по слою - Добавить эффект - Прозрачность. А то на скриншоте эффект не применён - как диагностировать?)
Эти настройки в эффекте прозрачность, как у ktylho в скрине
К слову, это не единственный способ удалить тень. Ещё можно эффектом Уровни, если натравить его на альфа-канал.
-
Небольшой гайд по сложным эффектам. Большинство эффектов создателям иконок будут так или иначе знакомы по аналогам из фотошопа или будут просты в освоении (наложить, подёргать ползунки, полюбоваться эффектом). А если нет - то по крайней мере, интернет сможет вам в этом помочь. Но есть и те эффекты, в работе которых разобраться весьма непросто, или имеющие возможности, о которых пользователи даже не подозревают.
'1. Эффект прозрачность. Пример того, как удалить тень с 3D иконки.'
На первый взгляд ничего сложного, но при открытии параметров сразу возникает вопрос: а куда вводить проценты?
Метод прозрачности - это первый параметр. Значение непрозрачности - это второй, числовой настраиваемый параметр слоя.
В настройках эффекта имеется 4 режима:
'1. Авто'
Использует суммирующийся режим для уменьшения прозрачности и сдвиг крайней точки для увеличения. Тут всё просто.
'2. Сдвиг крайней точки. Задать процентную непрозрачность можно им.'
Если вас интересует вопрос, как просто сделать иконку, к примеру, полупрозрачной, то вам следует использовать сдвиг крайней точки. Крайняя точка - это 100% непрозрачность в случае, если непрозрачность уменьшается (в нижнее поле вводится отрицательное число) и 0% непрозрачность (в случае, если непрозрачность увеличивается) в поле значения вводится положительное число). В случае уменьшения этого числа для каждого пикселя непрозрачность уменьшается аналогично заданию % непрозрачности. Формулы перевода % непрозрачности в значение непрозрачности:
a = - (100% / a%) + 1
a% = 100% / (1 - a)
a - значение непрозрачности. a% - процентное значение непрозрачности. Теперь пояснения:
К примеру, у нас имеется обыкновенная картинка и мы хотим сделать её полупрозрачной (a% = 50%). Тогда, нам нужно ввести a = - ( 100% / 50% ) + 1. 100%/50% = 2 -> -2+1 = -1. Итого, для полупрозрачности нужно вводит -1. Соотношение числового и процентного значения непрозрачности:
-0.25 = 80%
-0.33 = 75%
-0.5 = 67%
-1 = 50%
-2 = 33%
-3 = 25%
-4 = 20%.
-9 = 10%
Если ввести числовое значение больше 0, то будет аналогичный эффект, только увеличиваться будет нижняя граница. Если мы зададим число 1, то пиксели с непрозрачностью 0% станут 50% (100% / (a + 1) = 100% / 2 = 50%), 50% станут 75%. Если зададим число 3, то 0% станет 75%, 50% станет 82.5%.
'3. Сдвиг средней точки. Полезен при удалении тени.'
По внешнему виду похоже на эффект гамма-коррекции для канала непрозрачности. Главный плюс в том, что действует он только на полупрозрачности. Возводит непрозрачности в степень 1-a в случае отрицательного числа и 1/(1+а) в случае положительного. Все помнят из курса математики, что 100% = 1? Так вот, если применить непрозрачность -1, то 0% останется 0%, 100% останется 100%, а вот 50% станет 25%. Ибо 0^(1-1) = 0^2 = 0, 1^2 = 1, а вот 0.5^2 = 0.25. С увеличением аналогично: 0.5^(1/2) = 0.71.
'4. Суммирующийся.'
Всё равно, что умножать текущее значение x на 1+a ( x = x*(1+a) )в случае увеличения и умножать ( x = 1 - (1 - x) * (1-a) ) в случае уменьшения. Т. е. при a = 1 пиксели с непрозрачностью 50% станут (50% * (1+1)) 100% непрозрачными. 25% станет 50%, а вот 75% станет 100% непрозрачным, ибо выше 100% нельзя. С отрицательными числами ситуация обратная: 75% станет 50%, 50% станет 0%, 25% станет 0.
'2. Эффект слой-маска.'
В целом подобные ему эффекты можно найти в интернете, да и в примере 2 он использовался, так что просто дополню неясные моменты.
Эффект позволяет задать прозрачность на основе другого слоя. Как именно задаётся прозрачность - ниже.
Это один из двух эффектов, использующих ссылки на другие слои. Второй - размер/положение. Для использования нужно заполнить у целевого слоя поле Индентификатор. Допустимы латинские символы, цифры и символ подчёркивания. Идентификатор не должен начинаться с цифры. Затем идентификатор слоя должен быть скопирован в поле "Id слоя-маски" в параметрах эффекта.Обратите внимание на несколько особенностей:
* Слой, используемый в качестве маски, может находиться и выше и ниже по порядку. Но в случае зацикливания (слой 2 сылается на слой 1, слой 1 ссылается на слой 2) TIM выдаст ошибку отрисовки.
* Слою, используемому в качестве маски, не обязательно быть видимым. Главное - чтобы параметр Идентификатор был заполнен.
* Несколько слоёв могут иметь одинаковый идентификатор. Это сделано, чтобы не мешать пользователю использовать функцию Копировать/вставить. Но не ждите, что ссылка на слой с таким идентификатором будет работать корректно.Непрозрачность при использовании слоя-маски может только уменьшаться. Это значит, что слой-маски никогда не проявит невидимые области, но может сделать видимые невидимыми. В классическом понимании слоя-маски маска должна быть чёрно-белой. Так как слои TIM мало того, что цветные, так ещё и имеют собственную прозрачность, реализовано 3 режим работы:
1) Прозрачность. Накладывает прозрачность слоя маски на прозрачность текущего слоя.
2) Оттенки серого. Классический режим - слой-маска обесцвечивается, затем используетсяд ля просчёта прозрачности. Белый цвет значит 100% непрозрачность, чёрный - 0%, серые оттенки означают полупрозрачности. Обратите внимание, что нежелательно использовать его для слоёв, имеющих прозрачность во избежание неожиданностей.
3) Комбинированный. По-умолчанию. Смешивание двух предыдущих - накладывает прозрачность и на основе оттенков серого, и на основе прозрачности.'3. Эффект Размер/положение. Выравнивание одного слоя относительно другого.'
С последними патчами и без того непростой эффект разросся в функционале и стал настоящим кладезем недокументированных возможностей. Это крайне гибкий инструмент для настройки размера/положения иконки.
Фильтр. Вдаваться в подробности фильтров не буду - всё в интернете, родимом. Скажу лишь, что в случае выбора фильтра "Авто" для увеличения картинки будет использоваться Mitchell, а для уменьшения - Lanczos. Советую вам придерживаться этого фильтра.Параметры X, Y, Ширина, Высота.
Все эти четыре параметра изначально задаются в пикселях. X, Y задают точку привязки, Ширина/Высота - без комментариев. Задавая разные значения, вы сможете сами разобраться в принципе работы (не забывайте так же параметр "Привязка"!), а если нет - вряд ли от моих объяснений станет понятнее. Расскажу лишь о возможностях, которые не описаны в документации за отсутствием таковой.
Все эти параметры в качестве значения принимают ссылки на другие слои. Для использования нужно заполнить у слоя, на который используется ссылка, поле Индентификатор. Допустимы латинские символы, цифры и символ подчёркивания. Идентификатор не должен начинаться с цифры.
К примеру, я задам у слоя 1 идентификатор "tank" и у слоя 2 использую эффект Размер/положение. После этого я в качестве параметра для X могу вписать не число пикселей, а "tank.left", а в параметр Y - "tank.top". И тогда у меня слой 2 всегда будет выровнен относительно слоя 1, и более того, при перемещении слоя 1 слой 2 тоже будет смещаться!'Доступные параметры (результат всегда в пикселях!):'
"width" - ширина.
"height" - высота.
"top" - координата самого верхнего пикселя по вертикали.
"left" - координата самого левого пикселя по горизонтали.
"right" - координата самого правого пикселя по горизонтали.
"bottom" - координата самого нижнего пикселя по вертикали.
"centerhorz" - координата среднего пикселя по горизонтали.
"centervert" - координата среднего пикселя по вертикали.
К примеру, я могу сделать так:
Как видите, размер флага на фоне всегда соответствует размеру контура танка. Заметьте, что эти параметры слоя регистронезависимы, т. е. я мог бы написать "tank.left", "tank.Left", "tank.LEFT" и всё бы сработало. Но вот если бы я написал "Tank.left" - то уже не сработало бы, ибо имя слоя регистро-зависимо. Возможно, в будущих версиях это изменится.Обратите внимание, что начиная с версии 050 доступен также идентификатор this, который всегда обозначает текущий слой.
Пара слов о том, как конкретно определяются эти параметры. Если картинка, представляемая слоем, абсолютно квардатна (как флаг на картинке) - определить его ширину несложно, но как определить ширину контурной иконки, если из-за тени её края размыты и границы нечёткие? TIM чётко отделяет, какие пиксели считать прозрачными, а какие нет, по параметру эффекта "Порог прозрачности". Допустимые значения 0-255. 255 аналогично 100% непрозрачности. Все пиксели, которые хот чуть прозрачнее этого порога - считаются прозрачными, менее - непрозрачными.
Но это - лишь вершина айсберга. В качестве значения для этих параметров принимаются _формулы_, поддерживающие константы (читай - числа), математические операции +-*/^% (плюс-минус-умножить-поделить-степень-деление по модулю), скобки, функции и переменные (tank.left - это переменная).
К примеру, я хочу задать флаг на фоне так, чтобы он был на два пикселя с каждой стороны уже и короче. Элементарно!
Можно задать формулу сложнее. К примеру, X = "(tank.left/2)^0.5". Или ширина = "max(tank.width, tank.height)".
'Полный список доступных функций:'
sqrt(x)
abs(x)
sign(x)
ceil(x)
floor(x)
round(x)
trunc(x)
sin(x)
cos(x)
tan(x)
sinh(x)
cosh(x)
tanh(x)
acos(x)
asin(x)
atan(x)
atan2(x, y)
deg(x)
exp(x)
log10(x)
log2(x)
ln(x)
log(x)
log(x, y)
min(x, y, ...)
max(x, y, ...)- 6
-
и второй.
Упс, да. Надо будет что-нибудь с этим придумать
-
, не понял.
, это есть
Посмотрите, что подправить. Название техники подогнал под ваши только для китайцев, французов, чехов и немцев. Остальных сами поправите, если вас устроят иконки. Посмотрите, что не так.
Атлас: atlas.rar
P.S. Выделить ботов в этом стиле не смог, но можно создать отдельный стиль для них.
Можно выделить отдельно. Все боты имеют первый уровень и статус "акционный". При этом других акционных танков первого уровня в игре нет. Так же можно выделить, создав WotBuiltin-2.csv.
Скорее всего не хватает чтоб он не резал иконки сверху и снизу и добавлять четкость.
Иконки обрезает эффект "Обрезка краёв". Если добавить слой 3D-иконки, и тут же применить на него эффект Размер/Положение и уменьшить до высоты 24 пикселя - иконка выйдет целиком.
Чёткость уже давно можно настраивать. Несколько фильтров на подбор. К слову, я эту возможность в TIM и добавил.
- 1
-
Ну так они ж уже сделаны!? Просто добавляю новые каждый патч. Если надо что то глобально поменять во всех иконках-существуют "автоматизация-пакетная обработка" в фотошопе. Создал задачу и фотошоп сам меняет во всех файлах.
Мне аж интересно сравнить. Буду ждать с нетерпением.
С помощью TIM можно импортировать уже существующий стиль и создать для него атлас. И он при этом такие ошибки выдавать не должен. Просто так, для справки )
Кстати, а каких фич в TIM сейчас не хватает? Наверное, связанные с "барабашками"? Выделить иконку отдельным цветом только для барабашек, и выделить только часть ника танка отдельным цветом. С помощью TIM можно добиться, но придётся дико исхитряться .
-
вот насчёт эффекта выравнивания и слоя-маски хотелось бы подробностей! Потому как делать гайд "по рисованию" для тех кто не отличит gimp2 от ps имхо лишняя трата времени: кому интересно, в "азах" и так разберутся, благо теоретическая основа одинакова. Нужны "секреты мастерства", а кому не интересно скачают готовое...
В том стиле, на который я сослался, как раз эти два эффекта и используются. Флаг в размерах использует формулу ширина = ширине контура танка, высота = высоте контура танка. И накладывается маска по контуру танка.
Если надо будет, распишу принцип работы обоих фич в подробностях для инструкции, но чуть позже.
Там ещё возникла проблема, что флаг некрасиво накладывался, так что разобраться в этом сложновато. Я вырезал у танков все мелкие детали вроде орудий при помощи размытия и хитрой прозрачности, чтобы не мешалось, это тоже надо не забыть расписать.
А вот насчёт азов ты зря. Некоторые вообще не понимают, как создать простейший стиль. Хотя это, как я тоже считаю, от нежелания разобраться
-
, здесь, ИМХО, он лишний, контуры и так покрашены в яркие цвета согласно классу техники.
Кстати, я делал пример танков с иконками. Там и стиль приложен
-
думаю не стоит делать сложный пример. Вместо значка класса техники добавлю флаг.
Значок техники в иконках популярен. Кмк, иконки с флагом будут актуальнее для второго примера
-
Вот такие нашел:
post-18805140-0-42431300-1411678572_thumb.png
Вроде никто не поддерживает, по крайней мере на оф.сайте.
Неплохой вариант. И заморочки с прозрачностью можно показать на примере контурной иконки. Шрифты - есть, иконки различных видов - тоже. Еще бы добавить эффект с формулой размера-положения, чтобы выравнивался по другому слою, да слой-маску.
Кстати, иконки необязательно должны быть теми, что в ушах. Ведь с TIM можно сделать и иконки для дерева исследований, и для ангара
-
Это black_spy, они на каждом углу.
На одном офсайте две темы по их поддержке, и одна из них, к слову, моя )
Наверное, проще будет создать новый стиль, по-максимуму заюзав различные не самые понятные слои и эффекты.Вот прозрачность одна чего стоит. Необязательно делать этот стиль популярным, да что там - лучше! Поддерживать не надо будет.
-
@Mr 13, даже не представляю что в шапке такой темы написать. Может знает? Или сделать клон с оф. сайта? @BufferOverflow, я так понимаю, не часто заходит на данный форум.
Не очень часто, ага.
По содержимому - действительно продублировать с оффорума. Что там ещё написать? Разве что инструкцию, вот её реально не хватает xD
-
что-то я не представляю, как это должно выглядеть.
Смотри, у нас есть парочка наборов иконок.
Для одной путь "стиль1\gui\maps\icons\vehicle\contour". Для этой нужно так же создавать, допустим, battleAtlas и vehicleAtlas.
Первый должен лежать по адресу "стиль1\gui\flash\atlasses\battleAtlas.png", второй "стиль1\gui\flash\atlasses\vehicleAtlas.png". Или можно просто оба пихать "стиль1\gui\flash\atlasses".
Второй стиль имеет путь "стиль2\mods\xvm\icons". Для него, к примеру, уже атласы не нужны. Их вообще быть не должно. Или наоборот, только атласы и нужны.
И всё это должно быть настраиваемо в стиле. Т. е. галочкой "сохранять обычные иконки", путь сохранения, "сохранять vehicleAtlas" опять же путь к нему и т. д.
Или можешь оставить и так отправлять пулреквест, я потом посмотрю, как это лучше обыграть.
- 3
-
Функцию "Массовое сохранение" разработал я и идеи в её основе лежали тоже мои. Куча стилей сохраняется не "в папку с игрой", а по тому адресу, который указывается в кнопке "..." рядом с "сохранить как". Для каждого стиля единожды указываешь адрес, и в будущем TIM сохраняет все стили в уже нужные тебе папочки, прямо рядом с "readme.txt" - два в папки stereo, по одному в папку mono. И не надо ничего никуда запихивать каждый раз - оно само уже где надо. "Массовое сохранение в папку" было создано позже уже Романом для тех, кому лень/не нужно разбираться с массовым сохранением.
По интеграции с массовым сохранением я уже говорил - его концепция это "Единожды настроил, и в будущем TIM всё делает сам".
По поводу поддержки массового сохранения надо подумать, потому что в идеале - нужно нажать массовое сохранение, выбрать в менюшке нужные стили, нажать ОК и всё должно сделаться само. Если для каждого стиля создавать отдельно ещё и атлас - будет нарушение самой концепции "разок настроил, и при каждом обновлении клац-клац и готово" ) Сейчас у каждого стиля прописывается путь сохранения для массового сохранения. При этом не всем стилям нужны атласы (стереостили для XVM). Не все сохранять стили в папках, содержащих в пути стиля адрес gui/maps/icons/ и т.д.. Я бы, наверное, сделал так - добавил галочку в настройки стиля "Генерировать атласы" и добавил поле "путь сохранения атласа". При этом в идеале путь алтаса должен ещё и автоматически просчитываться на основе "Пути стиля" для стандартных путей, а автор стиля если захочет - впишет что-то другое.- 1
-
Я находил иконки танков шведов в flagsLib.swf (есть по одному во flash и scaleform), но все они не такие и не подходят. Нужны маленькие и чёткие.
-
Ага, пока я пройду "цензуру", уже 0.9.16 наступит.))
Какое-то ограничение для новозареганных? Не помню про такое, мб я не застал.
Ладно, решаемо. Могу и я кнопочку ткнуть, если что.
-
вообще я надеялся, что-то кто-нибудь другой это сделает.Кто кодит, тот и делает реквест. Да и всего-то делов, что нажать кнопочку в меню битбакета.
я так понимаю, что для 0.9.15.1 правильнее сказать: Если для каждого стиля создавать отдельно ещё и иконки...Надеюсь, нет. Для того же XVM, да и сам клиент до сих пор их использует.
@BufferOverflow, Delphi юзает виндовое средство для работы с XML...
сахар...
Тогда непонятно, отчего так долго. Небольшая же xmlка.
Сахар, да.
-
Дело в том, что в Delphi тоже есть инструмент для работы с XML. Но сохранение с его помощью него происходит на два порядка медленнее.
А где брать флаги? Встроенные стили тоже надо редактировать? В остальном вроде везде поправил.
Я так понимаю, их рисовали. Один парень иконки в прошлом в теме TIM на форуме танков, помнится нарисовал иконку для чехов. Флаги, что есть в игре, не подходят
Неужели сохранить небольшую xml-ку - так долго в делфи? В C# я никогда не переживал по этому поводу.
-
В неравной борьбе я все таки победил TreeSource и BitBucket. Надо делать пул или достаточно моего репозитория?
С вложенными репозитариями всегда проблема )
Во-первых, посмотри ревизию 494 (1915da24b019) Added Czech tank support. Там Роман добавлял чехов, как видишь надо править КУДА больше файлов ). И то он ещё потом в 532-м дополнил.
Во-вторых, создавать xml как текстовый файл - моветон. В C# есть замечательный встроенный механизм по работе с XML. Даже два, в TIM используется XDocument, там же можно найти несколько примеров.
В-третих, лучше делай коммиты почаще. К примеру, шведов - отдельно, далее атлас - отдельно. Сейчас можно откатить изменения и разбить на несколько шагов, если планируешь делать пулреквест. Потому что Роман может ругаться, что всё в куче )
"var fileGuiPKG = context.Installation.Path + "\\res\\packages\\guy.pkg";"
1) gui.pkg
2) Для путей всегда используй Path
var fileGuiPKG = Path.Combine(context.Installation.Path, @"res\packages\gui.pkg");
Path.Combine сам проверяет правильность соединения через слэш, так что за результат можно не переживать на любой системе. Ну и собачья строка, в ней не действуют никакие спецсимволы кроме двойных кавычек "", означающих одну ".
В целом код особо привередливо не смотрел. Это за что глаз зацепился.
По поводу поддержки массового сохранения надо подумать, потому что в идеале - нужно нажать массовое сохранение, выбрать в менюшке нужные стили, нажать ОК и всё должно сделаться само. Если для каждого стиля создавать отдельно ещё и атлас - будет нарушение самой концепции "разок настроил, и при каждом обновлении клац-клац и готово" )
Сейчас у каждого стиля прописывается путь сохранения для массового сохранения. При этом не всем стилям нужны атласы (стереостили для XVM). Не все сохранять стили в папках, содержащих в пути стиля адрес gui/maps/icons/ и т.д.. Я бы, наверное, сделал так - добавил галочку в настройки стиля "Генерировать атласы" и добавил поле "путь сохранения атласа". При этом в идеале путь алтаса должен ещё и автоматически просчитываться на основе "Пути стиля" для стандартных путей, а автор стиля если захочет - впишет что-то другое.
TankIconMaker - программа для создания иконок танков.
in Mods and Software
Posted
Там трабла - не учлось изменение во вложенном репозитарии WotDataLib. Лично скомпилировал последнюю версию - и трабла пропала