Render.ru

ошибки округления тонких обводок

denis 16936

Активный участник
Рейтинг
12
#1
Русую буквочку 4-5 pt и окривляю. Если к ней сделать тонкую обводку (0,05 мм) -- на экране нормально, а после Outline Stroke -- фигня. Таже фигня и при Offset Path. Неужели это ошибки округления?
 
#2
представь, какая должна быть точность расчетов для преобразования кривой безье в 5 сотых мм - в объект. разница значений для некоторых узлов и углов кривых должна получиться 0,00...1 мм (цифра - с потолка). это больно круто для илла. он работает с точностью до нескольких знаков после запятой - остальное округляет.

попробуй "скривить" более крупный текст, потом уменьшишь результат.

или (с канадским приветом!) попробуй в кореле. у него вроде точность выше.
 

denis 16936

Активный участник
Рейтинг
12
#3
Мда... понятно. Не люблю всякие обводки в чужих макетах, раньше либо прибивал, либо переводил в заливку, но такого не замечал.

Интерестно, а РИП обводку по другим алгоритмам считает -- минуя кривые Безье, сразу в своём растре?
 
#4
>> Русую буквочку 4-5 pt и окривляю
У меня даже на кегле 1 pt все нормально. Единственно, что шрифт T1 — в TTF не Безье-кривая используется, а кубический (или квадратичный?) сплайн.
Хотя на кеглях ок. 1pt тоже начинаю появляться артефакты
 

denis 16936

Активный участник
Рейтинг
12
#5
да не то. Окривляем простую букву -- всё нормально. Но вот если после окривления добавить тонкую обводку (~0.05 мм) и Outline Stroke сделать,
или Offset Path к окривленной но необведенной букве сделать,
или или у буквы до окривления эта тонкая обводка была --
вот тогда вся фигня и вылезает, причем во всех трёх случаях она [фигня] одинаковая .
 
#7
Да, наблюдается. Взял букву «а» из Helios (Type1), кегль 1pt, обводка 0,25mm. Косяки заметны только на «хвостике» в нижней части справа.

Оно, конечно, печально, но возникает законный вопрос — а она нужна, такая точность?

Затолкал я эту буковку в RIP и отрастриовал на 175lpi/3000dpi — буковка с трудом умещается между соседними точками 1-процентного растра.
 
#10
Да что ты говоришь! Не может быть! Может ты просто плохо понимаешь, о чем он говорит этот Kir?

with best regards
 
#11
Но и тут мимо — Expand только отделяет (разрывает связь) динамический объект от предка и делает его статическим. А на ошибки округления и, следовательно, форму — не влияет
 
#12
Ну надо же, наверно stroke так и остается stroke? Тогда это действительно глюк. Глюк в мозгах…
 
#13
«Глюк» побеждён, однако. :)

Проводил эксперимет с той же буквой «а» из Helios (Type1), кегль 1pt, обводка 0,1pt (что на 0,04pt тоньше, чем объявленные в первоначальном условии задачи 0,05мм).

Тект в кривые можно переводить, можно оставить как есть. Результат будет один и тот же — в кривых.

Итак.
В Document Setup выставляем Output Resolution не 800 (по умолчанию), а 2400.
Если объект (текст) имеет и заливку и обводку, лучше предварительно выполнить Expand — будет легче разбираться с кучей объектов, которая может получиться на следующем шаге.
Выделить только объект с контуром.
Flatten Transparancy (регулятор Vector/Raster — вправо до упора). И не важно, была ли у объекта прозрачность или не было её — результат великолепен.

Enjoy.

P.S.
Опыт был повторён с обводкой (Stroke) толщиной в 0,01pt (0,0035мм) при Output Resolution 9600dpi (максимально возможное значение) — результат без нареканий.

P.P.S.
Всё равно не понимаю, зачем такая точность может понадобиться.

2 Kir
> Глюк в мозгах…

В мозгах, конечно, где же ещё. :)
 

denis 16936

Активный участник
Рейтинг
12
#14
проверил на своём примере:
1. Object>Expand работает лучше, чем Object>Path>Outline Stroke
2. Всё-таки метод arhip'а получше будет: в 10 раз увеличил этот кусок текста, Expand или Outline Stroke, потом вернул размеры

P.S. А понадобилось вот для чего: макет просто такой пришел, было бы меньше времени, так не заметил бы может быть

P.P.S. Похоже я уже запутался -- отмечали на работе одно событие :)))
 
#15
1. Object>Expand работает лучше, чем Object>Path>Outline Stroke

Expand лишь отделяет контуры от заливок — был один объект с контуром и заливкой, стало два — один с контуром, другой с заливкой.
Outline Stroke преобразует контур в объект с заливкой.
Так что сравнивать тут нечего — это совершенно разные вещи.

> в 10 раз увеличил этот кусок текста, Expand или Outline Stroke, потом вернул размеры

А когда ты объект уменьшаешь, ты думаешь о том, какое расстояние может оказаться между некоторыми узлами на кривой, если и в исходном объекте они были, мягко говоря, не очень далеко друг от друга?
И прочие математические параметры кривой какие значения приобретают?
Таким образом очень легко получить кривую, которая может подвесить RIP. Я так думаю (Arkady меня поправит :))
 
#16
> В мозгах, конечно, где же ещё. :)

если и в мозгах, то у программеров, у которых разные модули используют для расчетов разные алгоритмы (походу, "разные" -- это мягко говоря)
 
#17
А на вопрос, зачем нужна такая точность, кто-нибудь попытается ответить?

И попутно, чем вообще контуры не угодили, что их непременно надо в объекты преобразовывать?
 
#18
Да! Как это я забыл?!

Специально для некотрых (они догадаются, для кого).

Не в AI, а сами_знаете_где, тем же самым Helios-ом (правда, сами_знаете_кто почему-то из 33 начертаний Helios-а увидел только «италики», потому пришлось использовать Helios Italic), кеглем 1pt набрал всё ту же букву «а». Назначил контур 0,01pt, Convert Outline to Objects.

Знаете, в AI не так уж и плохо, в сравнении с ЭТИМ.

А при толщине контура 0,1pt, вдесятеро большей и, казалось бы, менее проблемной, я увидел такое!… Попробуйте сами, зрелище достойно того,чтобы на него поглядеть.

При толщине контура из первоначального условия задачи — 0,05mm = 0,14pt — картина такая же изумительная.

P.S.
Нет идеального софта, но всё познаётся в сравнении. :)
 

denis 16936

Активный участник
Рейтинг
12
#19
> зачем нужна такая точность
Точность никогда не бывает лишней (c) :))))

>чем вообще контуры не угодили, что их непременно надо в объекты преобразовывать
раньше всегда так делал -- теперь, наверное, не буду
 
Сверху