Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.06.2011, 00:55
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 1  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
По умолчанию Как состыковать фрагменты картинки?

Сабж. Нарезаю, а затем складываю картинку из фрагментов, появляются вот, такие вот, просветы. Как это утрясти? Координаты типа Number. Если ставлю int то, естественно, потом не хватает снизу и/или сбоку.
Изображения
 

Старый 01.06.2011, 01:14
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 2  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Нарезать нужно на целые координаты. То есть не нужно делить 110 на 3 части. Тогда всё встанет отлично.

Старый 01.06.2011, 11:12
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Даже если 110 на 3 - округлить 110 до близжайшего кратного трем, запомнить разницу, близжайшее кратное поделить, а потом из результата вконце вычесть разницу.
Т.е. например:
близжайшее кратное для 110 будет 111, находим следующим образом: Math.ceil(110 / 3).
разница: 1 (Находим: 111 - 110).
нарезаем: первый "кусок": (111 / 3) * 1 = (0..37). Второй "кусок" (111 / 3) * 2 - "первый кусок" = (37..74). "Последний кусок": (111 / 3) * 3 - ("второй кусок" + разница) = (74..110).
__________________
Hell is the possibility of sanity

Старый 01.06.2011, 11:35
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 4  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Блин! А, ведь, действительно!
Спасибо, wvxvw! Я знал, что в беде не оставишь! Огромное спасибо!

Спасибо, Тигра. Но, проблема была ещё и в том, что я, на самом деле, незнаю: какая будет картинка и насколько
частей будет делиться. Знаю, только, что кол-во "столбцов" будет равно кол-ву "строк".


Последний раз редактировалось fish_r; 01.06.2011 в 11:38.
Старый 02.08.2012, 19:28
Gantenbain вне форума Посмотреть профиль Отправить личное сообщение для Gantenbain Найти все сообщения от Gantenbain
  № 5  
Ответить с цитированием
Gantenbain

Регистрация: Jul 2011
Сообщений: 32
В развитие сабжа.
Сегменты строю через shape.graphics.drawPath, задавать ли lineStyle(1, color, 1, true/false), или не задавать вовсе толщину линии - не заметил существенной разницы. К фигуре применяю фильтр, после чего отрисовываю ее в отображаемой Bitmap'e, общей для всех сегментов, через BitmapData.draw(..).
Объект анимирован. Если btm.stage.quality = StageQuality.LOW, то промежутки м/у сегментами исчезнут, естественно, заодно с антиалиазингом, который не был лишним.
Алиазинг, положим, не проблема, - его могу "размазать" фильтром,- но места стыков сегментов выглядят все равно не важно: при определенных углах становятся заметными "тени" - нормали пикселей не стыкуются, как должны.
Возможно, кто-то сталкивался с такой проблемой - как лучше поступить в этом случае: может быть проще смешать цвет граничного пиксела и его соседей в уже отрендеренном соседнем сегменте? Хорошо бы "подмешать" соседей из обрабатываемого сегмента, но тут я не вполне понимаю (а найти указаний на этот счет не удалось) механику обработки шейдером входного изображения - может ли шейдер обратится к уже обработанному пикселу (т.е. может ли оказаться таким samplenearest(outCoord().x+1, outCoord().y+1)?), или входное изображение кешируется на время работы шейдера (тогда "подмес" соседей по сегменту неуместен)?
Шейдеры пишу не в Pixel Bender, a посредством PBJ Assembler, и вследствие муторности этого приема, не хочется экспериментировать лишнего. Да и любой фильтр - тормоз, а здесь, хоть и по граничным только точкам, но опрашивать 9 соседей в отрендеренном сегменте и 8 в своем - это не есть хорошо.
Идеальный случай был бы - состыковать точно фрагменты, но не дается.

Буду признателен за любые идеи.
Изображения
 


Последний раз редактировалось Gantenbain; 03.08.2012 в 09:03.
Старый 02.08.2012, 19:41
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 6  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Я такую штуку делал внахлест на один пиксель. тогда ок. Если полотно совсем уж большое, то можно и больше, но одного как правило достаточно.

Добавлено через 2 минуты
Прикол в том что если встык - то при анимировании будет расползаться из-за нецелых координат, даже если порежешь красивенько встык. Нахлест спасает визуально. Если это будет нечто статичное тогда без проблем можно и как wvxvw советует.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 02.08.2012, 20:18
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 7  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
ещё советую прочитать вот это http://habrahabr.ru/post/147165/
__________________
:)

Старый 02.08.2012, 20:44
Gantenbain вне форума Посмотреть профиль Отправить личное сообщение для Gantenbain Найти все сообщения от Gantenbain
  № 8  
Ответить с цитированием
Gantenbain

Регистрация: Jul 2011
Сообщений: 32
Рисунок, который я помещал в пост, испарился... , я его удалил из приаттаченных, посчитав, что раз ссылка на его размещение есть в посте, то он никуда не денется. Завтра исправлю - сейчас не за компом.
to Dukobpa3:
Я пробовал стиль линии в разные пиксели. Проблема в том, что нормали должны быть точно просчитаны в месте смыканий, иначе заметна граница.

to Aquahawk:
И с прозрачностью я уже экспериментировал. Неделя убита на тесты.

Старый 03.08.2012, 00:26
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 9  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Через drawTriangles нормально у меня всё стыковывалось. Там есть параметр smothing.
Ну а вообще надо целочисленные и copypixels в битмапу.
__________________
Отряд Котовскага

Старый 03.08.2012, 09:53
Gantenbain вне форума Посмотреть профиль Отправить личное сообщение для Gantenbain Найти все сообщения от Gantenbain
  № 10  
Ответить с цитированием
Gantenbain

Регистрация: Jul 2011
Сообщений: 32
Цитата:
Сообщение от Котяра Посмотреть сообщение
Через drawTriangles нормально у меня всё стыковывалось. Там есть параметр smothing.
Если произвести триангуляцию сегментов, то, при малых значениях площадей этих самых треугольников, после усреднения нормалей на границах стыков, наверное и будет "нормально все стыковаться". Могу и я "смузить" фильтром границы (хотя сделать это хорошо, или хотя бы "нормально" весьма непросто). Но у меня нет треугольников (и свойство smoothing (?) я вижу лишь в BitmapData для ситуаций масштабирования, но я и не масштабирую ничего ни в процессе анимации, ни в каком другом случае). Целочисленными координатами воспользоваться не представляю как! Возможно, что в этом что-то есть, но посмотрите на рисунок: положение сегмента при визуализации определяет его Rec.topLeft, верхняя левая точка ограничивающего прямоугольника, для примыкающего к этому сегменту сегмента, может лежать внутри него, и может иметь вполне себе целочисленные значения координат, между тем, что первый сегмент (условно) 'сдвинется' после округления координат его topLeft.
Миниатюры
Нажмите на изображение для увеличения
Название: cube03.PNG
Просмотров: 68
Размер:	135.5 Кб
ID:	28280  

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:19.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:19.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.