IES — это просто



Понадобился мне для одного проекта специфический источник IES.
В одной из библиотек нашелся ИС, приблизительно похожий на то, что мне было нужно, но не совсем точно соответствующий. Покрутил его в Карбовском (Karba) генераторе иесок, но эта утилита на выходе выдает только симметричные иески, а мне нужна была несимметричная. Я решил разобраться, что же представляет собой этот формат — IES, и если все будет доступно, то вручную подредактировать выбраный файлик. Забегая вперед (еще даже в заголовке) скажу, все оказалось действительно совсем просто (:

Выписав данные в экселевскую таблицу я поправил нужные цифирки, сохранил результаты в новый файл и дрожащими лапками скормил это детище Франкенштейна 3D MAX'у. Результат меня просто поразил, на мониторе было не то, что я рассчитывал увидеть, а очень красивый, но ошибочный свет! Оказалось, что я неверно интерпретировал описание спецификаций IES...
Вдоволь налюбовавшись своей байстрючной картинкой я скоренько осознал свои ошибки и сделал все правильно. Этот эпизод натолкнул меня на идейку одного скрипта (который я опишу ниже).

Как устроен IES

Про это написана спецификация (на русском).

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




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


Угол θ называется полярным,
угол φ — азимутальным.

Измеренные значения представляют собой двумерную таблицу.
В данном конкретном случае всего 90° по азимуту потому, что это симметричный в четверти источник света.




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

Сам IES является обычным текстовым файлом. В начале в заголовке прописывается различная информация, описывающая параметры светильника и некоторые особенности файла(заинтересованным все же придется заглянуть в документацию).
Далее идет список значений полярных углов в град. в нарастающем порядке.
Затем список значений азимутальных углов в град. в нарастающем порядке.
Далее указываются списки значений сил света по всем полярным углам для каждого азимутального угла.

Выглядит такая запись примерно так:
0 15 30 45 60 75 90 105 120 135 150 165 180
0 30 60 90
5 200 280 360 440 520 600 684 768 852 936 1020 1145
5 214 423 632 841 1050 1259 1240 1221 1202 1183 1164 1145
5 258 511 764 1017 1270 1523 1484 1445 1406 1367 1328 1145
5 312 619 926 1233 1540 1847 1724 1601 1478 1355 1232 1145

Т.е. вначале указывается на сколько частей мы поделим арбузную дольку, потом указываем, сколько будет арбузных долек. На этом аналогия с арбузом заканчивается.




Теперь про возникшую идею скрипта.
Можно написать код, который на основе геометрии будет генерировать файлы IES.
Например, я ваяю любую произвольную оболочку, устанавливаю ей центр отсчета (pivot), запускаю скрипт, указываю в нем параметры (углы, симметрию при необходимости, единицы измерения итд.) и скрипт, замеряя по указанным углам расстояние от пивота до оболочки, генерит мне иеску.

Например, такая форма должна дать о-о-чень интересное освещение.




Другой пример: можно создать единственный IES файл, который близко к реальному будет имитировать освещение от целого плафона дневных ламп, используемых в потолках системы «Армстронг».

На текущий момент я не смог найти утилиту со схожим функционалом.

Подкину-ка идейку гуру-скриптописателям (:

5 комментариев:

  1. Привет. Идея интересная, может стоит узнать сколько гуру-скриптописатели захотят наличных за такой скрипт?)
    Возможно поучаствовал бы финансово в разработке)

    ОтветитьУдалить
  2. Честно говоря не знаю...
    Сейчас отозвался один человек, мы с ним немного пообщались на предмет функционала. Если будут какие-то результаты — отпишусь.

    ОтветитьУдалить
  3. заинтересовало. накидал за пару часиков через стандартный рейкаст, интерфейс - pickbutton для выбора обьекта, 2 спиннера для указания углов. вывожу в консоль, в файл свалить не проблема (в массив собираю, потом также проехаться по нему). думаю что делать если 360 не делится нацело на заданный угол, есть идеи? (долек в штуках не целое число) если вы не против обсудить, то обозначте в комментарии это и я с вами свяжусь.

    ОтветитьУдалить
  4. Дискотечный зеркальный шар не является светильником.

    ОтветитьУдалить

Всегда рад приятному общению…