понедельник, 2 ноября 2009 г.

Согласование потоков данных

Согласование данных
Согласование данных - это проблема, не имеющая однозначного решения. Она возникает, когда компонент получает исходные данные с нескольких источников разного размера. Представим себе компонент, который создает линейные сегменты между точками. Ммы имеем два входных параметра, которые содержат координаты точек (Stream A и Stream B). Потоки, из которых компонент берет точки, не связаны между собой и компонент не «видит» ни чего за пределами своих входных и выходных параметров:



Как вы видите, существует несколько путей соединения показанных точек, линиями. ГХ в настоящее время поддерживает три алгоритма согласования данных, но в будущем, возможно, их будет больше. Простейший путь состоит в том, чтобы соединить точки обоих потоков попарно, начиная с первой. Этот способ называется алгоритмом «кратчайшего списка»:



Алгоритм «длиннейшего списка» соединяет элементы одного списка с элементами другого сначала попарно, а если списки разной длины, то последний элемент более короткого списка соединяется со всеми оставшимися элементами другого списка. Данный метод является методом по умолчанию для компонентов:



И наконец, метод «Перекрестных ссылок» делает все возможные соединения::



Это несет в себе потенциальную опасность, поскольку число возможных сочетаний может быть огромно. Проблема становится более сложной с увеличением количества участвующих входных параметров и когда переменные данные начинают умножать данные, но по логике они должны оставаться теми же самыми (?).

Представьте, что мы имеем компонент “Point” (точка), который получает значения x, y и z из внешних параметров, содержащих следующие данные:

Координата X: {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0}

Координата Y: {0.0, 1.0, 2.0, 3.0, 4.0}

Координата Z: {0.0, 1.0}



Если мы объединим эти данные по алгоритму «кратчайшего списка», то получим только две точки, т.к. координата Z содержит только два значения. Решение в данном случае выглядит следующим образом:



Алгоритм «длиннейшего списка» создает десять точек, повторяя последние значения потоков Y и Z:



Метод «перекрестных ссылок» соединяет все значения X со всеми значениями Y и Z, таким образом, результат 10x5x2 = 100 точек:



Каждый компонент может быть настроен на выполнение любого из этих способов (через контекстное меню компонента).

Однако есть одно исключение из этого правила. Некоторым компонентам ТРЕБУЕТСЯ на входе список данных в одном или нескольких входных полях. Например, компонент «polyline» (полилиния) создает кривую, состоящую из набора отрезков, проходящих через массив исходных точек. Увеличение числа исходных точек, увеличивает длину полилинии, но не количество полилиний. Входные параметры, требующие более одного значения, называются списочными параметрами и они игнорируются при согласовании данных.

четверг, 29 октября 2009 г.

Наследование переменных данных



Наследование данных
Данные сохраняются в параметрах (в переменной или постоянной форме) и используются компонентами. Если данные не сохранены в наборе постоянных записей параметра, то они должны быть получены откуда-то извне. Каждый параметр (за исключением выходных) определяет, где он берет свои данные и для большинства параметров не принципиально. Вы можете присоединить к параметру типа double (двойной точности) целочисленный источник, и он будет правильно конвертирован в тип double. ГХ поддерживает множество схем конвертации, но если процедура трансляции не определена, то параметр на принимающем конце может генерировать ошибку конвертации. Например, если вы подключите вместо точки поверхность, к параметру с типом данных Point, то он выдаст сообщение об ошибке (доступ к нему можно получить через контекстное меню параметра) и окрасится красным цветом. Если параметр принадлежит компоненту, то его ошибочное значение может вызвать ошибки ниже по иерархии дефинишена, и другие компоненты тоже могут окраситься в красный цвет, хотя сами по себе и не содержат ошибок.

Управление соединениями
Когда для параметра заданы источники данных, вы можете получить доступ к этим настройкам через контекстное меню параметра. Создадим небольшой дефинишен, содержащий три компонента и два параметра:


 
На данном этапе объекты не соединены друг с другом и нам нужно их соединить. Не важно в каком порядке вы будете это делать. Мы начнем соединять слева на право. Если вы начнете перетаскивать указатель мыши вблизи маленькой окружности параметра (ее еще называют “grip” – захват, ручка), то за мышью потянется пунктирная соединительная нить:



Как только мышь (с нажатой левой кнопкой) окажется над потенциальной целевой точкой параметра, нить прилипает к целевой точке и становится сплошной. Но это соединение не постоянно, пока вы не отпустите кнопку мыши:


Мы повторим тоже самое для параметра “Y” компонента PtGrid и параметров "A" и "B" компонента Line : Захват + Перетаскивание + Отпускание...


 

Отметим, что мы можем сделать из одной точки несколько соединений сразу. Но будьте осторожны, по умолчанию новое соединение удаляет существующие для этой точки. Поскольку предполагается, что мы наиболее часто используем только одно соединение. Для задания нескольких соединений необходимо придерживаться некоторого порядка их создания. Если вы будете удерживать клавишу Shift, когда создаете соединение, то указатель мыши сменит вид (рядом с курсором появится знак «+»). Это свидетельствует, что указатель находится в режиме добавления:



Если курсор с «+» активен в момент отпускания кнопки мыши над исходным параметром, то параметр добавится в список исходных. Если вы задаете исходный параметр, который уже определен как исходный, то ничего не произойдет. Вы не можете получать данные из одного источника более чем один раз.

Аналогично, если удерживать Ctrl, то появляется знак «–» и целевой источник удаляется из списка источников. Если целевой объект ни к чему не подключен, то ни чего не произойдет.



Также можно разъединить источники (но не соединить) через контекстное меню параметра:



ГХ поддерживает передачу информации и без использования соединительных линий. Путем использования специального компонента Receiver, который можно найти в подразделе Special вкладки Params. Вы можете установить соединение с ресивером, так же как и с другими компонентами. Однако, как только вы убираете кнопку мыши, с ресивера, то соединительная линия исчезает. Это происходит потому, что настройки ресивера по умолчанию установлены на отображение соединительной линии, только когда ресивер выделен. Через контекстное меню ресивера вы можете выбрать отображение соединения «когда выбран», «всегда» или «никогда». Выход ресивера можно подключить к любому количеству необходимых компонентов.



Здесь, пунктирная соединительная линия показана, потому что компонент ресивер выделен.



Число 1 перед входом ресивера показывает, что к ресиверу подключено только одно соединение. Но т.к. ресивер не выделен, то соединительная линия не видна.


среда, 28 октября 2009 г.

Управление постоянными данными

Типы данных

Параметры используются только для хранения информации, однако большинство параметров может хранить данные двух различных видов: постоянные и переменные. Переменные данные передаются компоненту через один или несколько исходных параметров и удаляются или обновляются всякий раз, когда мы начинаем новое решение. Постоянные данные, это данные конкретно задаваемые пользователем. Когда к параметру подключен исходный объект, постоянные данные игнорируются, но не уничтожаются.
(Исключение составляют выходные параметры, которые не могут хранить постоянные данные. Выходные параметры находятся в полной зависимости от компонента, которому они принадлежат).
Постоянные данные назначаются через контекстное меню и в зависимости от вида параметра имеют различный способ ввода данных. Например, векторные параметры, позволяют задать один или несколько векторов через контекстное меню.
Вернемся на несколько шагов назад и посмотрим как ведет себя векторный параметр по умолчанию. Как только вы перетащите его из панели “Params” на рабочий лист, то увидите следующее:




Параметр оранжевый, что свидетельствует о предупреждении. Ни чего серьезного, предупреждение возникает просто потому, что параметр не содержит ни какой информации, он пуст (он не содержит постоянных данных и не получает ни откуда переменные данные) и поэтому не оказывает влияния на решение дефинишена. Контекстное меню параметра предоставляет два пути для задания постоянных данных: один или несколько значений:



Как только вы выберете один из этих элементов меню, окно ГХ сворачивается и вам нужно указать вектор в одном из вьюпортов Rhino:



После того как вы зададите все векторы, которые вам необходимы, нужно нажать Enter и выбранные элементы становятся частью записи постоянных данных параметра. Это означает, что параметр теперь не пустой и он меняет цвет с оранжевого на черный:



С данного момента вы можете использовать этот параметр в качестве источника объектов с идентичными векторами.

вторник, 27 октября 2009 г.

Объекты


Оъекты дефинишена
Дефинишен ГХ может состоять из множества различных видов объектов, однако для начального знакомства нужно представлять, что все они делятся на два вида:
• Параметры
• Компоненты
Параметры содержат данные, т.е. они являются хранилищем данных. Компоненты содержат действия, т.е. они задают, что нужно делать с данными параметров. Следующее изображение показывает некоторые возможные объекты, с которыми вы можете встретиться в дефинишенах ГХ:



A) Параметр, содержащий данные. Так как он не имеет подключения слева, то это означает что он не получает данные откуда-то извне. Параметр, который не содержит ошибок или предупреждений, отображается черным прямоугольником с горизонтально расположенным текстом.
B) Параметр, не содержащий данных. Любой объект, который имеет ошибочные или отсутствующие данные считается в ГХ подозрительным. Поэтому все параметры (которые только что добавлены в дефинишен) отображаются оранжевым, для индикации того, что они не содержат данных и, соответственно, не оказывают эффекта на решение дефинишена. Как только параметру задается значение или он наследует данные, он становится черным.
C) Выбранный компонент. Все выбранные объекты отображаются ярко зеленым цветом.
D) Компонент в нормальном (обычном) состоянии, без ошибок и предупреждений.
E) Компонент, содержащий предупреждения. Поскольку компонент, может содержать несколько входных и выходных параметров, то нельзя сразу сказать, просто взглянув на компонент, какой из объектов вызывает предупреждения. Может быть несколько источников, вызывающих предупреждения. Для отслеживания проблем вы можете использовать контекстное меню (см. ниже). Заметьте, что непременное устранение предупреждений не является обязательным. Их наличие является допустимым.
F) Компонент, содержащий ошибки. Подобно предупреждениям, не возможно сразу определить откуда берется ошибка, выдаваемая компонентом. Нужно использовать контекстное меню (см. ниже). Заметьте, что компонент, содержащий и предупреждения и ошибки, отображается красным, т.к. ошибки имеют более высокий приоритет, чем предупреждения
G) Соединение (коннектор). Соединения всегда присутствуют между входными и выходными параметрами. Ограничений, на количество соединений того или иного параметра нет, однако не разрешается создавать циклические/рекурсивные соединения.  Подобная рекурсия удаляется и все решение (дефинишен) оказывается коротко замкнутым, когда создается такая связь. В результате возникает ошибка в первом компоненте или параметре, который был определен как рекурсивный. Для более подробной информации о соединениях, смотрите главу о Наследовании данных.

Составные части компонентов
Компоненту, как правило, требуются данные для выполнения своих действий надлежащим образом, и обычно это приводит к какому- то результату. Поэтому большинство компонентов имеют группу параметров, обращающихся, соответственно к входным и выходным параметрам. Входные параметры располагаются с левой стороны, а выходные – с правой стороны компонента:



A) Три входных параметра компонента Division (разбиение кривой на сегменты). По умолчанию, имена параметров максимально короткие. Вы можете переименовать каждый параметр как хотите.
B) Область компонента Division (обычно содержит имя компонента).
C) Три выходных параметра компонента Division.
Если задержать указатель мыши над каким то из параметров или областью компонента, то появится всплывающее окно с указанием данных  выбранного (под) объекта и его типа:



Использование контекстного меню
Каждый объект на листе имеет свое  собственное контекстное меню, содержащее большинство из функций, доступных для данного объекта. Компоненты достаточно сложны, однако они раскрывают  (в каскадном стиле) все меню подобъектов, которые входят в их состав. Например, если компонент отображается оранжевым, это означает, что он или какой то из параметров, присоединенных к компоненту, вызывает предупреждение. Для отыскания неполадки, вам нужно использовать контекстное меню:




Здесь показано главное меню компонента, с каскадным меню для входного параметра “R”. Меню обычно начинается с редактируемого текстового поля, содержащего имя объекта. Вы можете изменить это имя на что-то более понятное, но по умолчанию все имена максимально короткие, для уменьшения места, занимаемого на экране. Второй элемент меню – это флаг предварительного просмотра (Preview flag), показывающий  будет или нет геометрия, задаваемая компонентом, видимой во вьюпортах Rhino. Отключение просмотра компонентов, не содержащих жизненно важной информации, позволяет увеличить скорость прорисовки во вьюпортах и скорость просчета дефинишена (в случае использования  Mesh-объектов). Если просмотр компонента отключен, то он отображается на листе заштрихованным. Не все параметры/компоненты отображаются во вьюпортах (например, числа). Для таких компонентов элемент Prewiev обычно отсутсвует.
Контекстное меню входного параметра “R” содержит оранжевый предупреждающий значок. Когда он включен, то содержит список (в нашем случае 1 предупреждение) всех предупреждений, генерируемых этим параметром.

понедельник, 26 октября 2009 г.

Интерфейс


Вольный перевод "The Grasshopper Primer, Second Edition".


Главное окно

Для запуска плагина набираем "Grasshopper" в командной строке Rhino, жмем Enter и видим главное окно Grasshopper (далее ГХ):



Интерфейс окна содержит элементы, большинство из которых знакомы пользователям Rhino.

A. Главное меню
Данное меню подобно обычному для Windows-приложений меню, за исключением дополнительного элемента управления, расположенного справа (B). Он позволяет быстро переключаться между открытыми файлами, выбирая их из выпадающего списка. Нужно быть внимательным при использовании сочетаний клавиш. Так как нажатые клавиши обрабатываются активным окном, то им может оказаться окно самого Rhino, окно ГХ или любое другое окно в Rhino. Поскольку  команда undo не доступна, то нужно быть внимательным с нажатием сочетаний клавиш Ctrl-X, Ctrl-S и Del.

B. Элемент управления "Выбор файлов"
Как описано выше, данное выпадающее меню можно использовать для переключения между открытыми файлами ГХ.

C. Панели компонентов
Эта область содержит все категории доступных в ГХ компонентов. Каждый компонент относится к определенной категории (например:  панель "Params" содержит примитивы различных видов, "Curves" -содержит компоненты, относящиеся к работе с кривыми) и все категории доступны на отдельных панелях инструментов. Каждая панель содержит все компоненты, относящиеся к данной категории. Поскольку компонентов очень много, то на панели отображаются только N наиболее часто используемых элементов. Для доступа к остальным компонентам достаточно нажать на полоску с названием панели.



При этом появляется выпадающая панель со всеми компонентами данной категории. Для добавления компонента на рабочий лист нужно нажать кнопку компонетна и затем щелкнуть в нужном месте листа, либо, выбрав элемент, перетащить его на лист, не отпуская кнопку мыши. Просто щелчек на элементе не добавляет его на лист! Вы должны его перетащить на лист:



Элементы также можно выбирать по имени, для этого достаточно дважды щелкнуть мышью в любом месте листа. Появится всплывающее окно поиска компонента. Вводим название компонета и в списке видим те компоненты, название которых совпадает с введенными символами.



D. Строка заголовка окна 
Строка заголовка окна редактора имеет отличия в поведении от других диалоговых окон Windows. Если окно находится не в максимальном или минимальном состоянии, то двойной щелчок на строке заголовка сворачивает или разворачивает окно. Это быстрый способ переключения между ГХ и  Rhino, т.к. окно редактора сворачивается без перемещения вниз экрана. Заметьте, что при закрытии окна редактора, геометрия ГХ в окнах проекций не отображается, но в действительности файл ГХ не закрывается и если запустить ГХ повторно, то оно вернется в прежнее состояние с теми же самыми открытыми файлами.

E. Панель инструментов листа


Панель инструментов листа предоставляет быстрый доступ к часто используемым инструментам листа.
Все инструменты доступны также через меню, поэтому вы можете скрыть эту панель инструементов. (Она может быть повторно открыта через меню "View")



Панель инструментов листа содержит (слева на право):

1. Инструмент рисования:
Он работает подобно инструменту карандаш в Photoshop или Paint.
Можно настраивать ширину штриха, тип линии и цвет. Однако  имеются трудности с изображением прямых линий и фигур. Для решения данной проблемы, нарисуйте любой эскиз на листе. Нажмите на нем правой кнопкой. Выберите из контекстного меню "Load from Rhino" и укажите любую заранее нарисованную в Rhino фигуру. (Это может быть любая 2d фигура, например прямоугольник, окружность, звезда и т.д). После того как вы выбрали фигуру, нажмите  Enter, и ваш эскиз будет заменен на выбранную фигуру.
2. Масштаб отображения
3. Показать все (выполняет подгонку содержимого листа под размер окна) и 4 кнопки фокусировки на соответсвующих углах вашего дефинишена (схемы).
4. Карта навигации открывает маленькое плавающее окно, схематично показывающее содержимое вашего листа и позволяет вам быстро перемещаться по листу без использования масштабирования и панорамирования. Данный инструмент похож на окно навигатора в Photoshop.
5. Список именованных видов (отображает меню, где можно сохранять и вызывать сохраненные виды)
6. Кнопки выравнивания компонентов
7. Разрешить просмотр выбранных компонентов (отображает геомерию создаваемую компонентом)
8. Запретить просмотр выбранных компонентов
9. Перестроить дефинишен (выполняет полный пересчет всех построений)
10. Разрешить / запретить решатель (дефинишен не будет расчитываться)
11. Инструмент запекания (превращает результаты построения всех выбранных компонентов в реальные геометрические объекты Rhino)
12. Настройки предпросмотра геометрии (По умолчанию геометрия в ГХ отображается. Однако для повышения скорости прорисовки некоторых сцен, содержащих кривые или триммленые поверхности можно отключить предпросмотр или выбрать каркасный режим просмотра.)
14. Кнопка "Hide". Эта кнопка прячет панель инструментов. Вы можете отобразить ее обратно через меню View.

F: Рабочий лист
На рабочем листе вы создается и редактируете ваш дефинишен. Лист содержит все компоненты, входящие в дефинишен и некоторые виджеты (G).
Объекты на листе кодируются цветом, для обеспечения обратной связи об их состоянии:



A) Параметр. Параметр имеющий предупреждение, отображается оранжевым прямоугольником. Большинство параметров становятся оранжевыми, сразу же как только вы помещаете их на лист т.к. для них не заданы входные объекты или значения, что и вызывает предупреждение.
B) Параметр. Параметр, который не содержит предупреждений или ошибок.
C) Компонент. Компонент это всегда более сложный объект (чем параметр), поскольку он содержит входные и выходные параметры. Этот конкретный элемент имеет по крайней мере одно предупреждение, связанное с ним. Вы можете получить более подробную информацию о предупреждениях и ошибках через контекстное меню объекта.
D) Компонент. Компонент, не имеющий предупреждений и ошибок.
E) Component. Компонент, содержащий минимум 1 ошибку. Ошибка может быть заключена как в самом компоненте, так и во входных параметрах. Более подробно о структурах компонентов в следующих главах.
Все выбранные объекты отображаются зеленым цветом (на рис. не показано)

G: Виджеты пользовательского интерфейса (UI)

В настоящее время доступен тольк один виджет - Компас, отображаемый в правом нижнем углу листа. Компас представляет собой инструмент навигации на листе. Он графически показывает где расположено текущее окно просмотра по отношению ко всему дефинишену. Виджеты включаются/выключаются в меню View.

H: Строка статуса
Строка статуса обеспечивает обратную связь и показывает важные события, происходящие в ГХ. Здесь отображается информация о том имеются или нет в дефинишене ошибки или предупреждения. Квадратная оранжевая иконка в левом нижнем углу строки состояния это значек для чтения RSS новостей на форуме ГХ. Нажав на эту кнопку вы попадете на форум ГХ. Вы можете посетить сайт ГХ по ссылке http://www.grasshopper3d.com/

Панель удаленного управления:
Поскольку окно ГХ довольно большое, вы можете захотеть чтобы оно не отображалось постоянно на экране. Вы конечно можете свернуть его или уменьшить в размерах, но тогда вы не сможете изменять значения параметров. Для обеспечения минимального интерфейса с текущим дефинишеном служит окно удаленного управления. Это стыкующееся окно содержит все слайдеры и булевы переключатели (и возможно другие значения в последующих релизах программы):



Панель удаленного управления также обеспечивает переключение режимов предпросмора, и файлов дефинишенов. Включить/выключить панель можно через менюView главного окна, или через команду Rhino _GrasshopperPanel.

Обратная связь с окном просмотра:



A) Голубым цветом отображается геометрия, выбранная вами с помощью мыши.
B) Зеленым цветомотображается геометрия выбранных компонентов.
C) Красным цветом отображается геометрия невыбранных компонентов.
D) Точки отображаются в виде крестиков, чтобы их удобнее было отличать от точек Rhino.




пятница, 23 октября 2009 г.

Processing



Язык программирования с открытым исходным кодом, а так же среда для разработки программ. Предназначен для людей занимающихся цифровым исскуством, обработкой и созданием изображений, анимацией, созданием мультимедийных приложений. Представляем собой графическое расширение языка Java, упрощающее создание графики. Приложения в processing называются скетчами ("sketch") и представляют собой экземпляры Java-класса PApplet и при компиляции преобразуются в Java-код.
Официальный сайт: http://processing.org/
Функциональность языка расширяется за счет большого количества подключаемых бибилотек. В комплекте идут библиотеки интерфейса: Apple QuickTime, работы с сетями, с последовательным портом, OpenGL, экспорта данных в PDF и DXF.
Кроме того доступен ряд дополнительных модулей (для работы с 3D, анимацией, звуком, БД, устройствами ввода, физической симуляции и др.)

вторник, 6 октября 2009 г.

Grasshopper

Плагин параметрического моделирования к Rhinoceros.  Позволяет создавать сложные формы, используя генерирующие алгоритмы. Фактически представляет собой графический редактор алгоритмов интегрированный в Rhino. Моделирование ведется по нодовому принципу. В отличие от встроенного языка RhinoScript, Grasshopper практически не требует от дизайнера знаний программирования, но знание геометрии естественно не помешает ;).


Скачать можно здесь:
http://download.rhino3d.com/download_rel.asp?rel=400
Уроки: http://en.wiki.mcneel.com/default.aspx/McNeel/ExplicitHistoryPluginMainPage.html
Англо-язычный сайт: http://www.grasshopper3d.com/
Русское сообщество Grasshopper: http://www.grasshopper3d.ru/

вторник, 15 сентября 2009 г.

Белладжио




Ресторанчик вот такой скоро открывается у нас

понедельник, 14 сентября 2009 г.

Сбербанк



Картинки из проекта который все ни как не закончится..

Начало

На поддержку сайта времени как всегда не хватает, надеюсь хоть здесь буду свои работы выкладывать. А может и мысли какие.))

Интересные линки