Spark
Архвиз изнутри. Часть четвёртая. Работа с большими экстерьерными сценами.
Spark 9596

Ссылка на предыдующую часть: https://3ddd.ru/blog/post/arkhviz_iznutri_chast_tretia_modelirovanie_arkhitektury

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

В работе над таким проектом важно организовать сцены так, чтобы не упереться в предел мощностей компьютера и комфортно работать со сценой. Два самых важных инструмента для этого – это XRef и Proxy.

XRef Scene позволяет разбивать геометрию по разным файлам для удобства работы и распределения ресурсов. Обычно в отдельный файл (или в несколько файлов) выносятся дома. Можно в отдельный файл выносить и ландшафт, а потом собирать всё в пустой сцене, где только настраивать камеры и свет, но я предпочитаю иксрефить дома прямо в сцену с ландшафтом. Так проще изменять элементы ландшафта под конкретные ракурсы.

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

Для перемещения и поворота иксрефнутой геометрии нужно использовать функцию Bind. С её помощью происходит привязка к выбранному объекту (я обычно использую обычный Dummy), двигая и поворачивая который вы можете двигать привязанную к нему геометрию из XRef-файла.

Функция Bind также полезна, если у вас в сцене есть несколько повторяющихся домов. Для их размещения достаточно сделать в отдельном файле модель одного дома, а затем просто иксрефить его несколько раз, привязывая к разным хэлперам и двигая в нужные места генплана.

Все объекты в XRef-файлах должны быть помещены в слои, отдельные от слоёв основного файла.

Очень полезная и при этом очень редко используемая в широких кругах функция 3dsmax – это XRef Material. Если вам необходимо менять материалы сразу в нескольких файлах, например, одновременно менять материал фасада на разных домах, то XRef Material – это именно то, что нужно. Для этого создаётся отдельный файл с материалами, откуда потом эти материалы забираются в другие файлы по аналогии с XRef’ом файлов.

К примеру, нам нужно сделать несколько вариантов кирпича на жилом комплексе, который состоит из кучи домов, смоделированных в разных файлах и затем подгруженных в общую сцену как XRef’ы. И вместо того, чтобы каждый раз открывать файлы с домами и в каждом из них менять материал, можно сделать отдельный файл с общими материалами. Назовём его Materials.max, в нём будут любые объекты, к примеру, просто обычные Box’ы, с наложенными материалами. Желательно для удобства сразу назвать эти объекты в соответствии с материалом. Наложенные на них материалы далее будут забираться в другие сцены.

В сценах с домами вместо обычного материала на все фасады накладываем XRef Material. Его настройки максимально просты – выбирается только файл и объект, с которого берётся материал. И теперь для того, чтобы сразу на всех домах поменять материал фасада, достаточно просто поменять материал на объекте Brick в файле Materials.max.

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

Далее по моделированию ландшафта.

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

Если же ландшафт с рельефом, то его надо моделировать уже в соответствии с высотными отметками. Но для начала надо понять, нужен ли вам вообще рельеф, будет ли он заметен на каких-либо ракурсах и имеет ли какое-то важное значение. Потому что на видах масштабных территорий с воздуха рельеф даже с большими перепадами будет практически не виден.

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

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

Поэтому я предпочитаю моделировать ландшафт сплайнами по-максимуму. Причём, если при моделировании архитектуры желательно всё моделировать с нуля, а чертежи использовать только для привязок, то с ландшафтами всё наоборот. Практически всегда чертежи ландшафта пригодны для того, чтобы можно было использовать линии из автокадовского чертежа, только важно обязательно делать им Reset XForm. При этом, используя модификаторы на сплайнах (например, Sweep), можно пользоваться автоматической генерацией маппинга по сплайну. Вот примерно то же самое место, которое на скринах выше, перемоделенное сплайнами.

Для видов с воздуха не надо для травы использовать дисплейсмент и тем более скаттеры травинок. Отличного результата можно добиться просто хорошей текстурой без явного тайла, и это сохранит кучу лишней оперативки и сократит время рендера. Если же вам всё же необходимо где-то использовать дисплейсмент, то помните, что он очень тормозно рендерится на больших по площади полигонах. И поэтому желательно накладывать на них модификатор Subdivide с не очень большим шагом, обычно достаточно 3-5 метров.

Теперь о Proxy.

Proxy – это ссылка на геометрию объекта в другом файле, которая подгружается только во время рендера. В рабочем файле геометрия никак не присутствует и не занимает никаких ресурсов, только самый минимум на отображение превью объекта. Это позволяет рендерить намного большее количество геометрии, чем 3dsmax может переварить в виде обычных Poly-объектов. На Proxy-объекты нельзя накладывать никаких модификаторов, они будут просто игнорироваться.

При работе с экстерьерными  сценами в прокси нужно переводить все высокополигональные объекты сцены, повторяющиеся многократно, такие, как деревья и иная растительность, люди, машины, различные МАФы. Перед переводом в прокси нужно объединить разные элементы объекта в один объект для удобства.

Если у вас в сцене большое количество однотипных домов, как, например, на картинке ниже, то тут уже XRef’ами обойтись не получится. Надо переводить домики также в Proxy.

Отдельные слова насчёт растительности.

Сейчас появилось множество сборников с качественной растительностью. Но, как правило, в таких сборниках наложены излишне сложные материалы. Однако, на рендере вида с воздуха вы вряд ли увидите разницу между деревом, на листья которого наложен сложный 2-sided материал с Translucency, и деревом, в материале которого только базовые карты Diffuse и Reflect/Glossiness. Но при этом первое будет рендериться в пять раз дольше, чем второе. Поэтому перед переводом в прокси обязательно оптимизируйте материалы объектов.

Вся растительность рассаживается с помощью различных скаттеров. Сейчас наиболее распространены MultiScatter, CoronaScatter и ForestPack. По настройкам особо расписывать не буду, по ним есть уже много информации в интернете, сложностей там нет.

Людей также можно расставлять скаттерами. Но имейте в виду, что людей не надо расставлять по площади просто с одинаковой плотностью, как солдат на параде. Они должны располагаться группами, концентрироваться в местах притяжения на улицах и т.д. Также в 3dsmax включён модуль Populate, предназначенный для расстановки людей в сценах, но как-то у меня с ним не сложилось, он жутко тормозной, работает с не всегда понятной логикой, плюс довольно странно ведёт себя с текстурами.

С окружающей застройкой есть три варианта - полный моделинг, текстуры на боксах и просто боксы. Первый я практически не использую, т.к. практически никогда в этом нет нужды, и не стоит на это тратить время. Разве что для совсем близких ракурсов, если рядом стоят. Для общих видов либо второй вариант, либо третий. Зависит от того, что вы хотите показать. Если вам надо выделить здание из окружения, то лучше годятся просто бело-серые болванки. Если наоборот, показать, что здание вписывается в окружающую застройку и теряется в ней, то можно нарезать текстуры с фоток или панорам Google/Yandex/Bing.

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

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

Также отпишитесь, если вы с какими-то моментами несогласны или ваш пайплайн как-то отличается от описанного выше. Всё написанное в статье не является какими-то строгими правилами и основано только на моём опыте, и я всегда рад выслушать другие точки зрения и что-то в своей работе улучшить и оптимизировать.

Ссылка на пятую часть: https://3ddd.ru/blog/post/arkhviz_iznutri_chast_piataia_fotomontazh

Комментарии (44)

+6
grdesigner
grdesigner
"Всё написанное в статье не является какими-то строгими правилами и основано только на моём опыте, и я всегда рад выслушать другие точки зрения и что-то в своей работе улучшить и оптимизировать."

А в компьютерной графике все так, у каждого свой пайплайн, свои заморочки. Поэтому интересно и полезно читать, как работают именно практики, а не теоретики с курсов.

За статью спасибо, полезно.
+6
danro
danro
Леша, отличные статьи, очень много полезной инфы, которой нигде не найдешь и узнать ее можно только перебрав не один проект. Продолжай!
По поводу Bind и XRef Material не знал, буду пользоваться, спасибо!
0
Skap
Skap
В принципе всё по делу, нужно только уточнить "На Proxy-объекты нельзя накладывать никаких модификаторов, они будут просто игнорироваться." - будет игнорироваться то, что объект прокси, а не то, что модификаторы будут игнорироваться.
0
///ARTVIZLAB
///ARTVIZLAB
Спасибо, интересная инфа
0
sla3d
sla3d
спасибо
+10
Zava
Zava
Спасибо!
Я когда использую Xref делаю Bind к упрощенной модели дома - коробке подогнанной по форме и высоте со всеми выпирающими элементами вроде балконов, а так же выходов на кровлю. (балконы конечно не каждый по отдельности, а просто всем стояком). Коробка отправляется на отдельный слой для таких коробок и выключается из рендера. Изготовить такую коробочку много времени не занимает. Зато позволяет в большой сцене снять галочку Visible для всех Xref, при этом видеть не Dummy, а полногабаритный макет дома, и иметь возможность выставлять ракурсы и точно знать, что и как попадает в кадр и при этом иметь существенный прирост в производительности вьюпортов.
Когда типовых домов много - т.е. больше двух - имеет смысл делать Proxy. Но тут надо помнить о таких вещах как CoronaMultiMap и т.п. К сожалению Ондра уже третий раз переносит Random by Element в неопределенноё будущее. А это значит, что если вы применяете такой материал, (я, например, за окнами ставлю самосветящийся plane - для вечерних видов и занавески вешаю), то такой материал не сможет работать с Proxy, ввиду того, что вам скорее всего придется зааттачить всю модель в один Mesh/Poly. А значит нужно заранее подумать об этом и поприменять модификатор Random by Element, что уже не так удобно.
+1
Spark
Spark
Хорошая идея с болванкой, приму к сведению.
0
weaselbbq
weaselbbq
Простите, а как же вы 15 лет проработали в архвизе не делая так? Это же первое что приходит в голову, когда знакомишься с данным классом. Как иначе позиционировать объекты по чертежам? Нет габаритной болванки - нет и привязки к чертежу...
+1
Zava
Zava
Да в принципе легко =)
Иногда бывает что жизнь просто не подталкивает к некоторым решениям. Если бы мне хватало ресурсов, я бы тоже вполне возможно не замарачивался. Воткнул Xref, привязал к дамми, поставил в нужное место с привязкой к самому дому. Потом еще с пяток домиков. Если вьюпорт крутится без проблем - то нет и повода изобретать велосипеды. Так, что то что кому-то очевидно, не всегда очевидно другому - потому что и без этого работает. А когда еще домов навалится в эту же сцену, можно отключить отображение или отобразить боксом. И тоже часть проблем решится. В общем иногда простые вещи не всегда очевидны. Поэтому полезно всегда смотреть тьюториалы даже по темам на которых вы собаку съели - бывают сюрпризы. Ну или читать уроки вроде этих. Я 10 лет занимаюсь тем же чем Spark, чем-то мой процесс похож на его. Вплоть до мелочей. Но вот про некоторые вещи я не знал (вроде плагина Clone - он мне даже на глаза не попадался). Бывает.
0
Spark
Spark
А какая связь болванки и привязок? Вы видимо о чём-то другом говорите, отличном от обсуждаемого.
+1
apx_56
apx_56
спасибо за статью, оч полезно, качественной инфы на эту тему в интернете не так уж много, однозначно в закладки
0
johnrol2
johnrol2
как привязать xref к дамми если его нельзя выделить.
+2
Spark
Spark
В меню XRef Scenes кнопкой Bind, нужная зона выделена на скрине в статье красным цветом
+1
Zava
Zava
Если вы, захотите делать по предложенной мной схеме - с болванками - то алгоритм предлагаю такой:
1. Моделите дом.
2. Прямо поверх него отстраиваете болванку с удобной вам детализацией.
3. Плагином CopyPasteObjects (или обычным Merge) переносите болванку в основную сцену. И не двигаете ее, она будет стоять в тех же координатах, в которые потом случится Xref. Но сразу можно убрать на нужный слой, и выключить из рендера, что бы потом не забыть. Я обычно и слой выключаю и объект, на всякий случай.
4. Удаляете или скрываете болванку из Xref-сцены, она нам не нужна. Сохраняете сцену!
5. Собственно теперь делаете Xref сцены с домом. Как я писал выше - он окажется в тех же координатах, что и болванка.
6. Жмете Bind и кликаете по болванке.
7. Снимаете галку Visible в этом же меню Xref. Что бы скрыть тяжелую модель.
8. Теперь можно двигать/вращать болваку - Xref уже привязан к ней.
0
Spark
Spark
Так проще же иксрефнуть файл и сразу по нему же намоделить болванку, чтоб туда-сюда не переносить её
0
Zava
Zava
Да, можно и так. Но штука в том что Xref не изолировать же... Что бы его обстроить и не крутиться в тяжелой сцене - придется вместо изоляции, выключать все ненужные в данный момент слои. А если у вас уже кучка Xref натыкано - это может стать весьма рутинным делом. Мне не то, что бы проще, как то логичнее, наверное, сделать болванку в той же сцене, что и сама модель. А потом закопипастить - по времени это не будет дольше. Да, есть риск забыть удалить/спрятать болвань. И потом после того, как на тестовом рендере увидите косяк, придется открывать эту Xref-сцену и подчищать. И апдейтить Xref... ну фиг знает, что лучше =)
+1
Spark
Spark
Сделать бокс, изолейтить его, потом цеплять иксреф. Потом из бокса лепить болванку
0
Zava
Zava
Да, так должно сработать. Согласен. Если вам так видится удобнее и проще - вполне себе вариант. Почему нет.
+2
johnrol2
johnrol2
работаете ли вы с программой SASPlanet?
0
Spark
Spark
Нет, первый раз слышу о такой
+1
Valentin_K
Valentin_K
Откуда же Вы берете в таком случае текстуры окружающего ландшафта на больших площадях? Не склеиваете же скрины с гугл и яндекс карт.
0
Zava
Zava
Только не смейтесь, я SketchUP использую для таких целей, хотя мне это не часто нужно. Да ограничен только картами Google. Но SAS уж больно хромая программа, то видит карты, то не видит, вместо того, что бы работу работать - сиди ищи в инете чего ей надо, что бы просто карт накачать под проект :(
А SketchUP еще худо-бедно дает рельеф, который можно на фон пихнуть (строить по нему конечно нельзя - точность не та)
0
danro
danro
Тут был урок как раз по настройке SAS Planet, сделал все по нему и уже два года работает без проблем, правда только с картами Яндекс
0
bruceofsev
bruceofsev
Я в уроке кажется упомянул что нужно сделать для работы с гугл-картами, если вы имели ввиду мой урок.
0
danro
danro
Я делал, все работало, потом в какой-то момент перестало, Я уже не стал разбираться в причинах
+2
Spark
Spark
Именно так и клею, скриншоты плюс фотошоп
Да, я динозавр
+1
Prog
Prog
Только хардкор, только боль )))
+1
nkv3d
nkv3d
Жесть, шел 2018 год...
+2
AlexRicco
AlexRicco
Владельцы платных архвиз курсов негодуют)))
5+
+1
Prog
Prog
Куприяненко плавно улетает в трубу )))
0
Vladiwirovich
Vladiwirovich
Почему?) Информация полезная, но ее будет недостаточно, чтобы начать что то делать, человеку который в этом мало разбирается. Это скорее для людей которые уже работают в этой сфере и хотят улучшить свои навыки
0
AlexRicco
AlexRicco
Потому что ничего похожего на тему медицины или юриспруденции не существует и не может существовать.)))
+2
nkv3d
nkv3d
Советую вместо Xref использовать относительно новые контейнеры(не помню с какой версии).
Там есть возможность подгрузки лодов и редактирования непосредственно из сцены (при открытии контейнера).
Xref старая система и достаточно кривая.
При последнем опыте коллективной работы над крупным проектом, где использовался сетевой репозиторий для хранения основной сцены, а объекты моделились на локальных компах Xref крашился и не хотел работать с привязками к сетевым путям. Пришлось перейти на контейнеры, с ними полет нормальный ;)
PS
Странно, что автор не упомянул о наличаи контейнеров вовсе.
0
Zava
Zava
Спасибо за наводку - надо изучить этот вопрос.
0
Spark
Spark
Для архвиза контейнеры не дают ничего большего, чем XRef, но добавляют излишнюю сложность в организации файлов и сцен. Плодятся лишние файлы. Не очень удобная схема редактирования содержимого контейнера. Сохранение не через привычный Ctrl+S, а через кнопки в панели. Контейнеры не работают с XRef Material. Ну и много чего ещё.

Плюс лишняя сложность вредит при работе в команде. Один человек забыл закрыть контейнер, второй что-то добавил к модели, но забыл добавить это в контейнер, третий случайно что-то сдвинул, четвёртый удалил lock-файл, пятый вообще не умеет работать с контейнерами и переведёт всё в привычный XRef.

Я не говорю, что контейнеры не годятся совсем, но, как я писал в статье про работу в команде, чем проще всё сделано, тем проще другим работать со сценами и тем быстрее идёт общий рабочий процесс. Контейнеры этому не очень способствуют.

С XRef'ами за много лет проблем никаких не было ни в работе, ни в сетевом рендере. Максимум - это несовпадение сисемных единиц в разных файлах, из-за чего в некоторых параметрических модификаторах сбивается масштаб параметров. Но это же актуально и для контейнеров.
0
nkv3d
nkv3d
"С XRef'ами за много лет проблем никаких не было ни в работе, ни в сетевом рендере"
Кажется вы невнимательно прочитали мое сообщение. Еще раз, у нашей команды были проблемы при сетевой работе с XRef, поэтому конкретно мы выбрали другой путь. Я не собираюсь с вами спорить и что-то доказывать, просто у нас был неудачный опыт, и мы сделали выводы, если у вас все нормально с XRef то пользуйтесь... Для нас этот вариант был не рабочим и выбора у нас не было...
Вариант с прокси нас не устраивал, по причине необходимости рендера итоговой модели в разных движках, под разные задачи, которые множились по мере создания модели). Могу только констатировать, что работая с контейнерами нам это удалось.
0
fotina0403
fotina0403
С большим удовольствием почитала, спасибо автору и оппонентам)
0
xpp_nd_ruphus
xpp_nd_ruphus
а мне к сожалению в большинстве случаев приходится моделить дома в окружении и самая засада - вымоделивать дорожную сеть и высматривать в тенях домов очертания дворовых проездов
от иксрефов отказался довольно давно, мне удобнее все держать в сцене разделенное по слоям, не знаю, как сейчас, но раньше с ними были глюки, что они сами собой исчезали во вьюпорте, или например мне как то сцену передали, в которой надо было ландшафт и благоустройство допилить, сцена была в 17 максе в оригинале, у автора по скринам все было норм, а меня открылось с разлетевшимися во все стороны иксрефными зданиями
0
DieDieDieMyDarling
DieDieDieMyDarling
Спасибо,как всегда очень познавательно. Скажите,как нибудь можно оптимизировать процесс вставки плейнов со шторами/интерьерами в окна зданий?Потому что вставлять в десятки окон плейны это такое себе удовольствие
+1
Spark
Spark
Для общих видов я просто ставлю самосветящийся объект с текстурой разных окон. Без особой привязки к окнам.
Можно что-то отсюда выбрать:https://www.textures.com/browse/night/51213 
Если надо для ближних видов, то тот же самый вариант, только маппинг уже настраиваю, чтоб с окнами совпадало.

Шторы делаю прямо из моделей окон.
Если окна смоделены отдельными объектами, то
1. копирую их
2. скриптом выделяю определённый процент из них и удаляю, чтоб не во свех окнах шторы были
3. скриптом instance заменяю их на одинаковые шторы (проксевые конечно)
4. рандомно выделяю определённый процент штор (также скриптом) и заменяю их на другие, чтобы было разнообразие. Повторяю этот пункт пару раз.
0
Aeltan
Aeltan
К нам в студию очень часто прилетают сторонние сцены собранные в RailClone и с ними очень долго приходится возится чтобы оптимизировать для дальнейшей работы, есть какой то способ облегчить задачу?
0
dontpiter
dontpiter
Возьмите на работу гудинщика))
0
dontpiter
dontpiter
За статьи спасибо, очень интересно... Но как же это всё в максе неудобно(хотя я люблю 3d max), какие-то сплошные костыли. Неужели архивизеры терпят всё это только из-за .dwg?))