LDD-to-PovRay: Краткое руководство

Форум о создании моделей в программах LEGO Digital Designer, LDraw и других программах виртуального моделирования.

Модератор: GeorgeVB

Автор
Сообщение
Грешник
Аватара пользователя
Сообщения: 793
Награды: 1

Ветеран SLC

LDD-to-PovRay: Краткое руководство

#1 Сообщение Грешник » Ср авг 15, 2012 6:11 pm

Итак, не так давно вышла архиполезнейшая утилита LDD-to-PovRay(http://www.eurobricks.com/forum/index.p ... 654&st=210). Её задача конвертировать файлы виртуальных моделей, сделанных в LDD для трассировщика POV-Ray. Это даёт возможность очень реалистичные изображения виртуальных моделей. Судите сами:

Изображение

Изображение







[center]Настройки/функции конвертера[/center]

Что же для этого нужно? Собственно LDD, POV-Ray v3.7 и конвертер LDD-to-PovRay. Но далеко не всё просто. Необходимо найти файл PovRay.ini, который хранится в папке POV-Ray (создаётся в "Моих документах") в подпапке Ini. В этот файл нужно в конце добавить строку Library_Path=\\.\LDDIncludes . Открываем LDD-to-PovRay...

Изображение

Выбираем нужный файл модели в строке Input file. Стоит заметить, что какой ракурс был LDD при сохранении, такой ракурс и получится в итоге на обработанном изображении. В принципе можно сразу жать Convert, но давайте разберёмся с некоторыми с настройками. Параметр Level of detail отвечает собственно за детализацию (шероховатости на скосах, надписи на штырьках). Ставить его на максимум не всегда следует, так как прилично замедляет скорость рендеринга.

Изображение

Здесь задаются параметры освещения. 3 источника, свет от камеры (camera light) и фоновое освещение (ambient light), можно менять их яркость, тени, отключать... Подробнее об освещении будет ниже. Но стоит сразу сказать, что не нужно сразу включать все три источника. Они создаются какого-то монструозного размера и плотности, что очень сильно замедляют рендеринг.

Изображение

А вот это очень любопытная функция. Она позволяет подменять стандартные декали кастомными в формате .png . Тыкаем галочку Use custom decorations и появляется список всех декалей в модели, щёлкнув по правому пустому полю выбираем декаль, на которую будет заменена стандартная.

Изображение

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






[center]Рендер[/center]

Итак по настройкам пробежались, тыкаем Convert. В идеале Pov-Ray должен открыться сам, но не всегда это срабатывает. LDD-to-PovRay нельзя закрывать во время рендеринга. Открываем Pov-Ray, открываем полученный файл формата .pov и... видим кучу кода и никаких изображений. Да-да, никакого вам предварительного просмотра, все изменения делаются "вслепую".

Изображение

В левом верхнем углу видим список доступных разрешений изображения, которое будет получено. Здесь всё просто. Тыкаем Run и ждём... от пары минут до... лучше не знать. В среднем на среднего размера модели уходит около часа. Но ведь кому-то станет любопытно, а что ещё можно тут сделать? Много чего! Но я разобрался пока что совсем с немногим. Итак, уже говорил об источниках света. Сверху пункт меню Insert -> light sources. Добаваляет источник света. Вставлять этот кусок кода нужно ДО объявления модели(#declare ldd_model = union ). Желательно рядом с другими источниками просто для удобства. На выбор представлены несколько видов источников. Остановлюсь подробнее на трёх.






[center]Источники света[/center]

Point light. Точечный источник. Быстрая обработка, но низкое качество.

light_source
{
<15.248719215393066,2.1646552085876465,-0.05597960576415062>
color rgb <0.2,0.2,0.2>
}
Первая тройка чисел - координаты источника. Вторая - интенсивность/цвет в формате RGB. Одинаковые числа дают белый свет.

Изображение

Area light. Распределённый источник света. По сути, много точечных. Работает медленно, но качество куда лучше. Именно эти источники по умолчанию создаёт конвертер.

light_source
{
<-100,100,400>
color 40/100*ldd_light_color
area_light 5, 5, 5, 5
adaptive 1
jitter
circular
orient
transform { ldd_camera_transformation }
}
С координатами и цветом всё понятно. area_light: именно это и делает источник распределённым. Первые два числа отвечают за его "объём", два других за "плотность". По умолчанию эти параметры ставятся слишком большими, рекомендую устанавливать на 4-5. jitter включает смягчение теней. transform { ldd_camera_transformation } связывает координаты с камерой.

Изображение


spotlight "Прожектор"

// create a point "spotlight" (conical directed) light source
light_source {
<0,0,0> // light's position (translated below)
color rgb <1,1,1> // light's color
spotlight // this kind of light source
point_at <0, 0, 0> // direction of spotlight
radius 5 // hotspot (inner, in degrees)
tightness 50 // tightness of falloff (1...100) lower is softer, higher is tighter
falloff 8 // intensity falloff radius (outer, in degrees)
}

point_at координаты, на которые направлен источник. radius радиус "основного" диска, интенсивность от центра постоянная. falloff радиус диска переменной интенсивности. tightness скорость спада интенсивности.

Изображение
falloff > radius

Изображение
falloff < radius






[center]Помещение источника внутрь детали[/center]

Итак, допустим мы хотим сделать так, чтобы источник света находился внутри определённой детали. Для этого запоминаем её индекс в LDD (допустим 30106). Индекс отображается внизу экрана, когда деталь выделена. Ищем объявление детали с таким индексом в Pov-Ray (поиск текста в коде Ctrl+F). Выглядеть это будет таким образом:

ldd_30106(array[1]{44},array[1]{0},array[1][12]{{1,0,0,0,1,0,0,0,1,-6,2.8819348812103271,8.3999996185302734}})

Последние 3 числа и есть координаты детали. Далее вставляем эти координаты в источник света. Иногда приходится несколько приподнять источник (вторая координата), так как он имеет тенденцию проваливаться в штырёк нижней детали.

light_source
{
<-6,3.8819348812103271, 8.3999996185302734 >
color rgb <1,1,1>
}

Изображение






В заключение хочу сказать, что все рекомендации являются ИМXО и были выведены опытным путём, а за полную чистоту этих опытов я не ручаюсь. Так что идеальные настройки должен найти для себя каждый своими экспериментами. Это лишь малая часть того, что нужно сказать. Статья будет дополняться, естественно.
Изображение

Altair
Редактор
Аватара пользователя
Сообщения: 4417
Награды: 5

За неоценимую помощь За 1 место в конкурсе За 2 место в конкурсе Лучший игрок в Мафию
Лучшая партия Мафии

Re: LDD-to-PovRay: Краткое руководство

#2 Сообщение Altair » Ср авг 15, 2012 10:34 pm

По умолчанию эти параметры ставятся слишком большими, рекомендую устанавливать на 4-5. jitter включает смягчение теней. transform { ldd_camera_transformation } связывает координаты с камерой.

Изображение
Очень интересно!
Большой размер источника как раз и делает тени мягкими и незаметными - сравним фотки "под лампой" и фотки с большими студийными "софт-светильниками".
На этой картинке как раз 4-5? А сколько предлагается по умолчанию?

И какой физический смысл плотности источника? Мощность на единицу размера?
Альтаир

GeorgeVB
Модератор
Аватара пользователя
Сообщения: 861

Re: LDD-to-PovRay: Краткое руководство

#3 Сообщение GeorgeVB » Чт авг 16, 2012 12:14 am

Грешник писал(а):[center]Помещение источника внутрь детали[/center]
Последние 3 числа и есть координаты детали. Далее вставляем эти координаты в источник света. Иногда приходится несколько приподнять источник (вторая координата), так как он имеет тенденцию проваливаться в штырёк нижней детали.
2 вопроса. Если деталей сотни, как выбрать деталь указанного типа ещё и заданного цвета?
Поднять источник. На пол кубика - это сколько?

Грешник
Аватара пользователя
Сообщения: 793
Награды: 1

Ветеран SLC

Re: LDD-to-PovRay: Краткое руководство

#4 Сообщение Грешник » Чт авг 16, 2012 7:35 am

По умолчанию источник создаётся с какими-то рандомными размерами от 10ти до 40ка. "Плотность" влияет не на мощность, а на приближённость модели к реальному источнику: на количество точечных источников на еденицу площади (или объёма, так и не понял) распределённного источника.

Да, если деталей много, то процесс будет очень муторным. Ищем по номеру детали, потом по цвету. Можно для удобства перед найденными строками поставить комментарий, чтобы не потерять и знать откуда продолжать поиск.
ldd_30106(array[1]{44},array[1]{0},array[1][12]{{1,0,0,0,1,0,0,0,1,-6,2.8819348812103271,8.3999996185302734}})
Жирным цвет выделил, его номер совпадает с номером цвета в LDD.

Пока ещё не разобрался с координатами, всё делается опытним путём. В примере поднял на еденицу, для еденичного кругляшка хватило 0.2
Изображение

RenWinner
Аватара пользователя
Сообщения: 274

Re: LDD-to-PovRay: Краткое руководство

#5 Сообщение RenWinner » Чт авг 16, 2012 7:55 am

Полезная статья, очень помогла! У меня наконец-то заработало! :mrgreen:
SPARTAN(RenWinner)
Изображение

GeorgeVB
Модератор
Аватара пользователя
Сообщения: 861

Re: LDD-to-PovRay: Краткое руководство

#6 Сообщение GeorgeVB » Пт авг 17, 2012 9:30 pm

что-то я упёрся в какую-то стену с освещением. 2 проблемы:

1 - освещение "внутри".
Врубаю свет от камеры 100, сверху 80, а "внутри помещения" всё равно мрак.
Как сделать видимым наполнение помещения?

2 - серый фон
Опять же, врубаю свет от камеры 100, сверху 80, а сзади всё равно фон серый.
Как сделать белый фон?

Изображение

Altair
Редактор
Аватара пользователя
Сообщения: 4417
Награды: 5

За неоценимую помощь За 1 место в конкурсе За 2 место в конкурсе Лучший игрок в Мафию
Лучшая партия Мафии

Re: LDD-to-PovRay: Краткое руководство

#7 Сообщение Altair » Пт авг 17, 2012 9:44 pm

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

Например, поместить его прямо над моделью и немного повернуть к заднему фону, чтобы саму модель не пересветил.
Или чуть сзади-сверху. У виртуального света есть направление/ограничение, чтобы светил только в одну сторону?

--
А чтобы было светлее внутри, добавить источник "от зрителя" и поместить на середине высоты домика. Наверное.
Хотя можно и протяженный по вертикали. Если нет отражателей (ни специальных, ни естественных), то придется добавлять источники.

Апд.
Хотя... если фон плоский-бесконечный, фиг его подсветишь так до белого - никакого света не хватит.
Альтаир

RenWinner
Аватара пользователя
Сообщения: 274

Re: LDD-to-PovRay: Краткое руководство

#8 Сообщение RenWinner » Сб авг 18, 2012 8:40 am

Ну у меня все нормально:
Изображение
Последний раз редактировалось RenWinner Сб авг 18, 2012 9:08 am, всего редактировалось 1 раз.
SPARTAN(RenWinner)
Изображение

Altair
Редактор
Аватара пользователя
Сообщения: 4417
Награды: 5

За неоценимую помощь За 1 место в конкурсе За 2 место в конкурсе Лучший игрок в Мафию
Лучшая партия Мафии

Re: LDD-to-PovRay: Краткое руководство

#9 Сообщение Altair » Сб авг 18, 2012 8:51 am

Фотки обрезать надо, а то страницу растягивают пустые поля.

Так вкусно у вас все выходит, надо тоже себе такую штуку поставить.
Альтаир

ArsKvsh
Дизайнер
Аватара пользователя
Сообщения: 3130
Награды: 4

За неоценимую помощь Помощь в фестивале DoubleBrick Участник Фестиваля DoubleBrick

Re: LDD-to-PovRay: Краткое руководство

#10 Сообщение ArsKvsh » Сб авг 18, 2012 11:27 am

RenWinner писал(а):Ну у меня все нормально:
Изображение
А анти-алиасинг не судьба было поставить?

GeorgeVB
Модератор
Аватара пользователя
Сообщения: 861

Re: LDD-to-PovRay: Краткое руководство

#11 Сообщение GeorgeVB » Сб авг 18, 2012 5:56 pm

Altair писал(а):А чтобы было светлее внутри, добавить источник "от зрителя" и поместить на середине высоты домика. Наверное.
Хотя можно и протяженный по вертикали. Если нет отражателей (ни специальных, ни естественных), то придется добавлять источники.
Стоит свет от камеры 100%. Не хватает.
RenWinner писал(а):Ну у меня все нормально:
На маленькой модели на максимальных установках у меня тоже нормально. А вот на большой модели не очень.
что получается, если выставить следующий уровень качества.
Изображение
И время рендеренга - 8 часов.

кстати, модель в полтора раза больше деталей рендерится всего лишь на 10 минут дольше :)
Изображение

UPDATE
Попробовал параметр фонового освещения. Результат совершенно неожиданный (установлен на 100)
Изображение

UPDATE
Параметр ambient light, как ни странно, существенно решает проблему освещения внутри помещения
Изображение

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

Altair
Редактор
Аватара пользователя
Сообщения: 4417
Награды: 5

За неоценимую помощь За 1 место в конкурсе За 2 место в конкурсе Лучший игрок в Мафию
Лучшая партия Мафии

Re: LDD-to-PovRay: Краткое руководство

#12 Сообщение Altair » Сб авг 18, 2012 11:03 pm

Я имела в виду доп. источник ниже уровня камеры (для внутренней подсветки помещений).
Но и так хорошо получилось, детализация только пониже.
Альтаир

GeorgeVB
Модератор
Аватара пользователя
Сообщения: 861

Re: LDD-to-PovRay: Краткое руководство

#13 Сообщение GeorgeVB » Пт авг 24, 2012 6:32 pm

Кто-нибудь знает, как ограничить количество ядер, которое использует pov-ray?
А то выжирает вообще все ресурсы :(

Hor
Основатель
Аватара пользователя
Сообщения: 10106
Награды: 1
Контактная информация:

Амбассадор

Re: LDD-to-PovRay: Краткое руководство

#14 Сообщение Hor » Сб авг 25, 2012 9:37 am

GeorgeVB писал(а):кстати, модель в полтора раза больше деталей рендерится всего лишь на 10 минут дольше :)
Так ведь POV - это же raytracer. Т.е., грубо говоря, он для каждой точки изображения вычисляет, что в ней видно. Поэтому количество деталей вовсе не главный фактор, если они ещё и удачно отсекаются по тестам невидимости.
Подпись

A-W
Аватара пользователя
Сообщения: 5311

Re: LDD-to-PovRay: Краткое руководство

#15 Сообщение A-W » Сб авг 25, 2012 12:32 pm

GeorgeVB писал(а):Кто-нибудь знает, как ограничить количество ядер, которое использует pov-ray?
А то выжирает вообще все ресурсы :(
Ну раз выжирает, значит возможности видеокарты не использует, обычный программный конвертор.
Можно приоритет сделать низким... :|

Ответить

Вернуться в «LDD и виртуальное моделирование»