Почти все про Xref и оптимизацию с его помощью. Развернутый урок - энциклопедия. Часть 1

Всем приветы!

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

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

То ли тема на самом деле простая, все всё и так знают. То ли наоборот. То ли не актуально.

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

Урок составлен в старом, добром текстовом формате с картинками. Как мы любим.

Но очень длинный.

Много букв.

Много слова "Xref"

И много картинок.

Поэтому я все же решил разделить его на 2 части.

В первой части мы узнаем:

-Что такое Xref. Зачем это нужно

-Как этим пользоваться - статические (Xref  Scene) (инструкция на примерах)

-Как этим пользоваться - динамические (Xref  Objects) (инструкция на примерах)

А во второй:

-Редактирование высокополигональной геометрии при помощи Xref  Objects

-Минусы работы с Xref

-Xref и форестпак. Преимущества работы с библиотекой фореста.

-Примеры и сценарии использования в рабочих сценах

-Оптимизация в общем.

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

Показывать буду на примере 20го макса, извините. В остальных версиях, в основном все так же, только "Xref  Objects" и  "Xref  Scene" находятся во вкладке файл  + подвкладка  "reference"

Надеюсь, что до конца дочитают не только самые упертые, стойкие и любознательные.

А дочитав, не закидают меня гнилыми помидорами.

И так.

Что такое Xref  

Xref   это ссылка на объект из сцены. Виртуальный (фантомный) объект.

Реальный объект находится в отдельной сцене, в отдельном файле. А в основной сцене он представлен как ссылка на него в виде визуального образа. Что-то вроде прокси, только средствами самого макса.

Зачем это нужно

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

В общем, могу выделить следующие направления использования:

1 . Командная работа.

Сцена разбивается на несколько ключевых объектов, которые преобразуються в Xref объекты и сохраняются в отдельные файлы.

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

2. Отдельный файл для каждого ракурса!

Обычно, если требуется создать под каждый ракурс отдельную сцену возникает 2 проблемы:

- когда требуется внести правки в модель, нужно делать это для каждой сцены отдельно

- расход места на диске

Xref   легко решает обе проблемы.

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

4. Малый вес файла позволяет очень быстро его сохранять (При таком раскладе можно да же автосейв не отключать).

5. Последнее по списку, но самое важное, как по мне это оптимизация и полный контроль над сценой.

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

Сложно описать 5й пункт в нескольких предложениях. Но это станет ясно по ходу погружения в тему.

Один из примеров такой оптимизации:

Вот эта сцена –

Скриншоты по ссылке - https://drive.google.com/drive/folders/1_X-rASwu5f6Yxgs2IvQ1t8YYvXernfHM?usp=sharing 

Все это находится в одной сцене и даже рендерится.

(обратите внимание на статистику рендера на скриншоте и счетчик полигонов

Счетчик показывает 5 000 000 полигонов. Но как мы догадываемся, их несколько больше.

На самом деле, полигонов там за 300 000 000

В сцене присутствует анимация (машины ездят, колеса крутятся)

Есть объекты railclone и forest pack

Огромное количество всевозможных материалов разной степени сложности. Несколько текстур до 26к на 8к.

 Серьезно!

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

Еще была подложка - снимок со спутника. Квадрат 65на65к. Но сейчас вместо нее другая поменьше. Всего 43к

+ сотни материалов с текстурами 4и8к, которые не поддаются подсчету.

+ огромное количество источников света.

И бог знает, что еще…

А весит она 57и5 мб.

И то это много, потому, что там сейчас весь тротуар живой геометрией с кучей модификаторов. Размер файла можно сократить до 10-20мб.

(На общем рендере текстуры не подгрузились, т.к давно не работал над этой сценой и слетел путь в общую папку. )

И все это я ворочал без особых проблем на

i7 5930к

32 гиг оперативы  (а изначально вообще с 16

и видеокартой gtx 980ti

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

И так.

Xref   бывают статические (Xref  Scene) и динамические (Xref  Objects)

Начнем со статических (Xref  Scene)

 Статический (Xref  Scene)

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

Пример:

Мы работаем над сценой, в которой есть улица и несколько домов на ней.

Создадим упрощенную версию улицы с 4мя домами

Сохраним каждый из домов в отдельный файл и назовем соответственно названию слоя, в котором он находится

Удалим все дома из основной сцены и заходим "файл" - "Xref  Scene"

Нажимаем add и добавляем по очереди все дома с 1 по 4

Видим, что все дома встали на свои места в сцене и в слоях. Все. Xref  в сцене.  Это успех! Обратите внимание, что иконка объекта в слоях изменилась.

Зайдем еще раз в - Xref  Scene и познакомимся с операциями, которые мы можем произвести с этими объектами.

Пройдемся по основным

- remove – полностью удаляет выделенный - Xref  из списка и из сцены

- Галочка Enable добавляет\удаляет выделенный Xref  из сцены.

Если галочка не нажата, то его не видно ни в сцене, ни на рендере но он останется в списке и его можно будет снова добавить, включив галочку.

- Кнопка Merge мерджит выделенную строчку в сцену.

- Кнопка Update  now обновляет выделенную строчку Xref.

Если данный Xref  был изменен в отдельной сцене и сохранен под тем же именем, то при нажатии кнопки Update  now он обновится в основной (текущей) сцене.

- Галочка Automatic - Xref будет автоматом обновляться, как только файл Xref будет пересохранен.

- Галочка Visible делает Xref  видимым\невидимым в сцене (на рендере все будет видно при любом значении галочки)

-Галочка Box При нажатой галочке Xref во въюпорте отображается в виде бокса, для экономии ресурса видеокарты.  На рендере он в любом случае будет геометрией.

-  Кнопка Bind привязывает выделенный Xref к какому либо объекту.

Это позволит перемещать Xref  вместе с этим объектом.

На пример если привяжем к земле, то перемещая землю, привязанный Xref  будет перемещаться вместе с ней.

-  Кнопка Unbind соответственно разрывает связь.

Convert selected – позволяет конвертировать выделенные объекты в Xref

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

Очень полезная кнопка. Особенно в сочетании с кнопкой "мердж".

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

Идем далее

Откроем в параллельной сцене файл "дом 1". Отредактируем его и сохраним не переименовывая.

Вернемся в основную сцену, зайдем в "Xref  Scene", выберем из списка "дом 1" и нажмем "Update now"

 

Обратите внимание, что ни переименовывать, ни перемешать объекты Xref  в слоях нельзя. Так же нельзя переименовывать слои в которых они находятся. Включать\выключать объекты в слоях то же нельзя. Зато можно включать\выключать слои с этими объектами. Так что ,если вы планируете включать\выключать отдельные Xref Scene объекты, то добавляйте их в отдельный слой. Так же имейте ввиду, что если вы сохраните Xref со скрытыми объектами, то и в основную сцену они добавятся скрытыми и включить их из основной сцены вы не сможете.

Единицы измерения основной сцены и Xref Scene объекты, по возможности должны совпадать.

В принципе можно моделить дом в сантиметрах или миллиметрах (что довольно удобно, по сравнению с метрами), а основную сцену держать в метрах. Но тогда, перед импортом Xref лучше сколапсить дом в мешь, и сбросить иксформ. Иначе могут поплыть некоторые модификаторы и сплайны.

И так, мы познали  Xref Scene.

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

А еще,  можем создавать сеты Xref из Xref для конкретного ракурса или ситуации

Пример:

Выделим улицу и при помощи кнопки "Convert selected" в диалоговом окне "Xref Scene" и конвертируем ее в Xref

Теперь вся сцена состоит только из Xref, в ней нет ни одного живого объекта. Не к чему даже привязаться для навигации. Для макса, с точки зрения взаимодействия, сцена абсолютно пустая. И какими бы тяжелыми не были объекты Xref Scene, для макса она будет практически пустой и вес файла будет минимальным. И сохраняться соответственно будет очень быстро, даже автосейв можно будет не выключать.

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

Галочкой "Visible" или "Box" можно моментально скрывать не нужное, что бы разгрузить видеокарту.

А галочкой "Enable" полностью отключать, выгружая из оперативки. Но все же галочкой "Enable" пользоваться может быть опасно, так же как и кнопкой обновить. В 19м максе это может крашить макс и что бы обновить Xref нужно сначала добавить новый, не удаляя старого. А старый удалять только после загрузки нового.

Теперь удалим из основной сцены Xref Scene "дом 1" и сохраним файл как "сет для дом 1"

Откроем файл "дом 1" и подгрузим Xref "сет для дом 1"

Теперь мы можем моделировать дом с учетом окружения. И включать\выключать его в настройках "Xref Scene" когда нам нужно.

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

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

Важный момент!

Перед тем как сохранить файл "дом 1", нужно удалить, или хотя бы выключить Xref сет с окружением, иначе он создаст парадокс с остальными сценами.

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

Динамический Xref  (Xref  Objects)

Тут все несколько сложнее.

В динамическом режиме можно подгружать отдельные объекты из файла. А сами Xref  объекты мало чем отличаются от живой геометрии.

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

Но вес файла сохранения Xref  Objects немного выше, чем в статическом Xref  Scene. И чем больше мы кукожим Xref  Object, тем больше будет весить файл.

Xref  Object  применяется, если нужно взаимодействовать с объектом, но полимоделинг и унврап развертка не требуется.

Пример:

Мы хотим добавить в сцену автомобиль и анимировать его движение вдоль дороги.

У нас имеется файл исходника, в котором находится модель автомобиля. В моем примере автомобиль состоит из нескольких частей, а колеса анимированы и крутятся вокруг своей оси.

Что бы добавить динамический Xref  этого автомобиля в сцену , заходим файл - Xref  Objects

В появившемся окне нажимаем "квадрат в скобках"

Выбираем файл с исходником автомобиля

Выбираем объекты, которые хотим добавить. Я выбираю все. Но момжно добавть только какие то отдельные и загрузятся только они.

Xref  Object  автомобиля появляется в сцене, в тех координатах, в которых он находится в файле исходника. Вся иерархия слоев из исходника сохранена, Объекты Xref  Objects обозначаются соответствующим значком

Данный Xref   можно перемещать, масштабировать, переименовывать, а так же назначать поверх объекта Xref  модификаторы. Например можно назначить на кузов турбосмуч или ffd

А так же настраивать материалы.

Сейчас выберем один из элемент Xref  Objects (например кузов) , перейдем во вкладку Modify, где увидим свойства данного объекта:

File name - имя файла, в котором живет данный Xref  Objects

Object name – Имя объект из этого файла.

Мы можем редактировать эти поля нажав на точки рядом с названием, либо прописав путь\имя ручками.

Эти поля очень важны и позволят нам многое.

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

Открываем сцену с исходником автомобиля, назначаем турбосмуч на кузов и сохраним файл как "исходник hi"

Возвращаемся в основную сцену, выделяем Xref  кузова, переходим в modify, жмем на точки и выбираем файл

Получаем сглаженный кузов. 

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

 Иерархию в слоях желательно то же сохранить.

Если пивот хайпольного объекта на том же месте, что и лоупольного и имена объектов одинаковые, то хайполи автоматом заменит собой лоуполи.

Теперь перейдем в файл исходника и удалим все кроме кузова. Переименуем кузов в SONAT KUZ hi и сохраним файл как исходник hi 2

Выберем наш Xref  кузов, загрузим этот файл исходник hi 2 и увидим шокирующую картину. Кузов превратился в маленький крестик!!!

Это произошло потому, что мы переименовали объект кузова в файле исходник hi 2 . Там он теперь называется SONAT KUZ hi. А в нашем поле Object name все еще написано SONAT KUZ. макс не может в новом файле найти объект с таким названием и ставит нем крест.

Что бы исправить это жмем точки напротив названия объекта и выбираем нужный объект из файла.

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

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

Но всегда помним, что ключевую роль в позиционировании объекта играет пивот.

Перейдем к файлу исходника, сместим пивот у кузова вверх, сделаем ресет иксформ и сохраним как исходник hi 2 piv

Загружаем файл и  видим сдвиги

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

Загружаем файл исходник, нажимаем на точки выбора объекта и видим странное.

Ничего страшного. Просто вручную меняем название на нужное, в данном случае просто удаляем hi и все получится.

Ниже, в той же вкладке Modify идет свиток Proxy Objects, где мы можем дополнительно подгрузить что то вроде лода.

Например в свитке Xref  Objects  у нас пути ведут к лоуполи версии, а в Proxy Objects к хайполи.

Это позволит нам

во первых, одной галочкой включать\выключать хайполи, а во вторых включать его только для рендера соответствующими галочками.

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

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

Но имейте ввиду, что загружая\меняя объект таким образом, материал на объекте остается прежний. А именно тот, что был загружен изначально с лоуполи. Если вы заменяете таким образом объект на хайполи и там другой материал, то к нему нужно будет отдельно прописать путь. Как это сделать я расскажу, когда будем проходить редактирование материалов

Редактирование материалов Xref  Objects объекта.

Выбрав пипеткой материал Xref  объекта видим следующее:

Мультисаб из исходника заходит в ноду Xref . Кликнув на эту ноду видим, что работает она по такому же принципу, что и с объектами.  Можем выбирать файл и объект с которого хотим взять материал.

Галочка в разделе Override Material отвечает за возможность настройки материала, который подгружен в одноименный слот.

Если галочка не нажата, то материал берется из файла прописанного в свитке параметров (т.е из файла и объекта прописанного там) и ни как не подвержен изменениям в текущей сцене. Как бы мы не настраивали материал, который входит в ноду.

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

Если галочку нажать, то появляется возможность редактировать материал, который входит в слот Override Material. По умолчанию туда подгружен материал из файла прописанного в свитке параметров. Мы можем засунуть туда свой или отредактировать этот.

Так же можно создать любой материал и просто перетащить его на Xref   объект, как обычно.  Если нужно будет вернуться к материалу из файла\исходника, то просто назначаем на объект ноду Xref   и убираем галочку

Карты рандомизации так же работают.

Например загрузили мы одну машину и распределили ее инстансы по дороге.

Выбираем ее материал, ставим галочку Override Material

В дифуз кузова кидаем карту корона мультимап в режиме инстанс

На рендере получаем одинаковые автомобили но разных цветов.

То же можно проделать и с номерами.

Теперь познакомимся поближе с инструментами, которые предлагает нам интерфейс Xref  Objects

Как мы уже поняли, загрузив Xref  объект он появится в списке в виде строчки. Я называю это группой Xref  .

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

Объекты в это списке делятся на 3 типа:

Объекты, материалы и контроллеры. 

Горящие синим квадратики это фильтры типов отображения. Пощелкав их мы можем отфильтровать нужное.

В основном нас будут интересовать только объекты, поэтому фильтруем их.

Выделив объект из списка мы можем проводить над ним различные манипуляции. Например замерджить отдельный или удалить

Так же, мы можем наблюдать 2 столбика в которых отображается, как данный объект называется в текущей сцене и в сцене исходника. Это важный момент, к которому мы еще вернемся.

Как видим сейчас, название объекта в сцене и название исходника отличаются. Потому, что я добавил данную группу после первой, и т.к имена объектов совпадали, то при добавлении сработало автопереименовывание.

Кнопки в самом верху позволяют группу удалить, обновить,  замерджить Xref  в сцену или превратить выделенный объект сцены в Xref  

Кстати, при помощи последних 2х кнопок можно как и в случае со статическим режимом сначала замерджить объект в сцену, отредактировать его, а потом конвертировать обратно в Xref  , сохранив под тем же именем, что было изначально. И он так же будет доступен во всех сценах, где он присутствует, но уже отредактированный. Это удобно. Т.к для его редактирования не обязательно открывать отдельно его родную сцену.

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

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

Мерджить можно не только группу целиком, но и отдельные объекты, входящие в состав файла исходника.

В основной сцене создадим 2 бокса

Выделим их и конвертируем в иксреф обжектс.

Боксы превратились в иксреф. Выделим появившуюся строчку, перейдем в нидний отдел. Видим, что группа состоит из 2х объектов. Выделим первый бокс и замерджим кнопкой.

Бокс замерждился в сцену. Теперь группа 111 состоит из одного объекта.

Но сцена-исходник этой группы по прежнему состоит из 2х боксов и от туда он удален не был.

Если мы захотим вернуть как было. Т.е что бы в сцене были оба иксреф бокса из файла исходника "111", то недостаточно обновить группу «111» и удалить «живой» бокс.

Кнопка "обновить" в таком случае обновит «бокс 2», если он был изменен, но не добавит нам все объекты из файла.

Что бы добавить объекты из файла исходника есть специальная кнопка. Нажав ее мы можем увидеть список объектов из файла исходника, которые не были загружены в основную сцену.

В данном случае это «бокс 1» .  выделив его и нажав «ок» мы добавим его иксреф в сцену.

Если все объекты из файла исходника добавлены в сцену, то эта кнопка нажиматься не будет.

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

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

Пример:

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

Загрузим в сцену теслу.

Видим, что она материализовалась возле красного бокса. В координатах, в которых она находится в сцене исходника.

Сгруппируем ее и передвинем к синему боксу

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

Если мы добавим кибертрак через файл - Xref  Objects  , то он добавится еще одним объектом и появится у красного боксв, в координатах по умолчанию. В координатах, в которых он находится в его исходной сцене.

А нам нужно не добавить, а заменить, не меняя положения.

Мы можем заменить каждый из объектов во вкладке Modify, в таком случае объекты заменятся, но расположатся относительно пивота исходного объекта (pFuhe;tyyjuj изначально через интерфейс Xref  Objects   ), в данном случае мы видим, что колеса остались на месте, а не разъехались по бокам. А сам кузов принимает немного не то положение, какое должно быть.

Что бы корректно справиться с этой задачей делаем следующее

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

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

Т.е, если кузов кибкртрака в исходнике называется box1, то и у теслы он должен называться box1. При этом, если мы добавим в сцену и теслу и кибертрак одновременно, с автопреименовыванием, то каким то чудом, все равно замена срабатывает корректно. 

Значит имена должны соответствовать именно в файле исходника.

Добавляем сначала кибертрак

Затем теслу с автопереиминовыванием

Теперь поменяем трак на теслу а теслу на трак. Как видим все работает.

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

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

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

Теперь перекатываем ее к синему боксу.

И переходим в сцену исходника чтобы загрузим в нее сферу.

Создаем сферу. Ставим ее на тележку. Выделяем сферу и аттачим ее к группе тележки. (можно просто выделить сферу, ctrl+U и кликаем на тележку) После чего, не забываем сохранить исходник.

Переходим в основную сцену и обновляем иксреф. Тележка все еще у синего бокса и уже нагружена сферой.

Что бы все получилось, делать нужно именно в такой последовательности.

Иногда объект может не добавиться при обновлении и нужно вручную добавить его через кнопку "add objects"

Если вы удалите объект из сцены исходника, то в основной сцене он то же удалится, но в центре координат появится крест, т.к объект все еще будет висеть в составе исходной группы иксрефа.

Способом с добавлением объектов имеет смысл пользоваться, если вы не планируете копировать объект в основной сцене. Т.к новый объект добавляется только в исходную группу. А в копированный инстанс почему то нет. + работает он не всегда предсказуемо и стабильно. В некоторых случаях объект вообще может не добавляться.

Поэтому, если вы делаете трафик через динамический иксреф, то лучше пользоваться первым способом. Объекты в таком случае добавлять то же можно, просто приаттачивая их.

Я рекомендую держать 2 файла исходника.

1й - рабочий (в котором вы моделите)

2й - финальный (оформленный для загрузки как иксреф)

С этим вроде все. Продолжение в следующей части.

Если есть вопросы - пишите. Отвечу.

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

+14
t0931
Оооо! Круто! Опубликовалось! С первого раза! А я думал, что придется несколько раз загружать. И делить еще на несколько частей.
Удивительно, что и картинки все в оригинальном разрешении прошли. Я был уверен, что не пройдут и даже по ходу все 95 штук в разрешение 1500 (как в лимите написано) пересохранял сидел. Целый час зря потратил.
+2
Jähman'
Супер! Для фанатов xref есть еще прокачанная их версияhttp://smartrefs.com/features/ 
+3
-NiK-
Плагин отменный! Посмотрел все видео, поковырял триалку. Есть один нюанс - это один из тех плагинов, который не позволит даже открыть сцену если он не установлен. То есть это нужно принять такое волевое решение и внедрить его в воркфлоу, надеясь на долгую жизнь плагина/кряка. Я точно не такой бесстрашный :)
+1
ilyxako777
Боже, спасибо, полезная тема, особенно когда комп не особо вывозит, а нужно куча объектов в сцене
+5
3drj
Толковый урок. жаль много букав))
+1
CG/ARTEMY
))))))
0
makc3383
Алиса замечательно читает текст. И воспринимается лучше, когда слушаешь )) Выделяешь текст и правой кнопкой Озвучить.
+2
SteamPunk
Мега урок, очень понравилось, узнал для себя много нового чем раньше не пользовался, огромное спасибо! Вторую часть буду ждать.
+5
Gondzo
Я бы посмотрел в формате видео. Лайк за старание!!!
+2
lidatasalova
Спасибо большое за этот урок!
Давно ждала этой темы)
+8
Charlyxxx
Ух ты ж мать. Очень круто! Мне кажется однозначно - урок месяца =)
0
t0931
Спасибо)
+3
natka_vassabi
Очень полезный урок. Спасибо!
+12
-NiK-
Это разумеется 5, урок месяца и всё вот это.
В следующих частях проведите, пожалуйста, сравнение с прокси (от рендер движков) и контейнерами макса. По большому счету, все эти вещи из одной категории, и людям было бы интересно знать в каких кейсах что удобнее (это не всегда хреф).
0
t0931
Ок. Учту
+2
m03g0ed
Спасибо. Отличный урок.
+2
Для экстерьерщика это незаменимая штука.
+2
Y.O.U.
Пост огонь, спасибо большое!
+1
In-design_shop
С такими задачами проще в Гудини сразу прямым ходом. Там оно намного более прямо сделано и есть куча возможностей настраивать всё под себя. Урок отличный, но, имхо, увы, по старым максовским костылям, коими, опять же имхо, является хреф.
+4
t0931
Может так и есть. Но когда пайплайн заточен под макс, нужно искать решение в рамках этой экосистемы.
+1
sviridov
спасибо за урок, все просто, доходчиво без лишних слов !
+2
MickeyMM
Отличный урок, спасибо большое!
Xref лучше держать на ссд?
+1
t0931
Все, что связанно с подгрузкой всегда лучше держать на ссд. И желательно, что бы этот ссд еще и не был системным. Т.е не диск "С". Но у меня и на обычном ХДД (wd gold) особых проблем нет.
+2
pet046
Я не всё понял, но за урок низкий поклон!
0
t0931
что непонятно - спрашивайте. Отвечу
+1
MickeyMM
У меня один вопросик, есть допустим посёлок из одинаковых участков, как этот участок правильно размножить с возможностью редактировать его? Благодарю заранее за ответ!
+1
t0931
Если вы имеете ввиду, что там все дома одинаковые, то можете загузить 1 дом как днамический иксреф и клонировать его инстансом.

Если к примеру у вас там 5 разных домов и нужно копировать весь район. Тогда делаем каждый дом отдельным, динамическим иксрефом, группируем и копируем инстансом.

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



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

Но нужно быть очень внимательным, что бы не запутаться.
Вы должны четко понимать, зачем вы будете это делать. И стоит ли это того. Как лучше сделать решать вам, в зависимости от ваших требований к сцене.
0
MickeyMM
Огромнейшое спасибо за инфу, буду тестить.
Вы даже не представляете как вовремя залетела ваша статья, ждём вторую часть!
0
t0931
Неужели всю первую часть уже прочитали. Кстати, я ее сейчас еще дополнил в конце. Там довольно важное уточнение про замену иксрефа, который был перемещен в основной сцене. И интерфейс "иксреф обжектс" немного подразживал.
+1
Lotkin
Очень!
+2
Revered
Урок супер!
статикой давно пользуюсь, а вот динамичные периодически вели себя непредсказуемо, эта статья кажется пролила свет на эти процессы. Единствная проблема xRef что они очень долго загружаются. Файл с таким добром может 10-15 минут открываться. И как я понял эо особенность тог окак макс с этим работает, ничего не попишешь.
Есть кстати ещё вариант с контейнерами, они требуют определённолй остарожности в обращении но грузятся быстрее и тоже поозволяют что-то редактировать на месте если надо. Там даже лоды вроде бы тоже были.
+1
t0931
Динамика требует что бы строго соблюдалась последовательность действий. Особенно если объект в основной сцене был перемещен и вы потом проводите манипуляции с исходником. Основная проблема в том, что нужно быть очень внимательным.
Долго грузится потому, что он по очереди открывает каждый файл загружая его в оперативку. Хуже всего, что при этом может еще и вопросы задавать (типа рескейла и всяких таких) при открытии каждого. Но проблему с вопросами можно решить если при появлении первого, много раз нажать на "энтер".
0
Spirif
Аааааааа..... Многа, слишком многа
Чайными ложками поглощаю урок, попутно пытаясь что-то повторить..
0
t0931
Зато почти все разжёвано и вопросов почти не остается.
Сама по себе тема сложная и запутанная. Даже тут я далеко не все описал, только самое-самое основное. Очень много вариантов и комбинаций использования всего этого.
0
Spirif
И то правда, потому что до этого на слабом железе большие объекты делал отдельными сценами, рендерил регионами и потом в фотошопе компоновал..
+1
Spirif
Хэ, прошло 3 месяца, а урок уже перечитан несколько раз и частично внедрен в работу.
такой вопрос, у Вас видел Hot Keys на X-Ref настроены, у меня в стандартных командах чтоб вынести на панельку найти их не получилось. Можете с этим подсказать ?
+1
imFeodor
Давно пользуюсь Xref'ами, у меня всегда отдельно идут: главное здание, люди, машины, причём для экономии памяти, я разбиваю всё на участки, люди, машины во внутреннем дворе и отдельно например люди и машины за домом. И в зависимости от камеры я включаю и выключаю объекты. Тооько один минус, я так и не разобрался как это настроить в бачрендере.
+2
t0931
Для батчрендера можно через сценстейт попробовать. Конкретно настройки иксрефа там сохранять нельзя, но можно включать\выключать слои. https://www.youtube.com/watch?v=Ee9CSUvg68A 
+1
imFeodor
Спасибо за урок, наконец-то я разобрался в сцен стейт, а то всё было как-то лениво и руки ни как, а тут оказалось всё так просто, теперь надо подумать как его применять в пайплайне вместо анимации, правда ещё макс успел глюкнуть, вероятно совпадениеее....
Ну, а так, что-то он у меня ни фига не учитывает параметр Enable и Disable в Xref, а фишка именно выгружать и вгружать геометрию. Так как я ещё хитрю, для ночных сцен я отдельно записываю в иксреф все светильники, что бы быстро менять с ночного вида на дневной рендер.
+1
t0931
параметр Enable и Disable в Xref не работают в сцен стейн. Но вы можете засунуть например mt же светильники в отдельный слой и через сценн стейн включать\выключать его.
0
imFeodor
Точняк! Спасибо.
0
t0931
Комментарий удален
+1
Dantes11031994
Спасибо за подробную статью.
Автору респект!!!
0
shinodem
все бы хорошо, но xref бывают косячат, у меня было объекты перемещались после переоткрытия сцены также материалы оверрайд слетали после переоткрытия сцены в короне и приходилось снова материалы накидывать
0
t0931
После каждого открытия, или иногда? Если иногда, значит нужно искать причину\закономерность. (хотя ее в любом случае нужно искать) Может с именами какая проблема. У меня вроде пока таких проблем не было. У меня проблемы начинаются только если я удаляю объекты иксрефа в основной сцене, а потом обновляю.
0
shinodem
Перемещение да иногда, и да тоже удалял или обновлял их, работая с двумя максами. А материалы постоянно открывает сцену и он грузит из своей сцены хотя оверрайд материал остается в мат эдиторе
0
t0931
Вы можете назначать материалы вообще без иксреф ноды. По сути она нужна только что бы вернуть материал, который в исходной сцене. А в основной сцене вы можете назначить на иксреф любой материал просто перетащив, как на обычный объект. Тогда, щелкнув пипеткой по иксрефу появится обычный материал, без ноды. Попробуйте так, может поможет.
+6
vladimir.drobzhev90
Я обещаю это прочитать и вникнуть))
+1
Mitridat
О! Знакомый домик. Вся отцовская родня там жила, да и я была прописана.

Урок отличный, все разжевано для самых маленьких. На кубиках проверила, работает.)
0
t0931
Какой именно? Пожарский 12?
0
Mitridat
Остоженка 9/14
0
Mitridat
Промахнулась
0
pet046
Уточните пожалуйста, а если создать объект x-ref в сцене , а файле (другая сцена с одним объектом) поменять материалы этого объекта, то в основной сцене материалы тоже обновятся?
+1
t0931
Если речь идет о хиксреф обжектс, то за подгрузку материала из файла исходника отвечает галочка в ноде иксреф. Если выбрать материал иксреф объетка в мапэдиторе, то появится нода с его материалом. По умолчанию, если галочка не нажата, материал берется из файла исходника. Если галочку нажать, то можно будет редактировать материал в текущей сцене, или вообще его заменить. Если речь идет о иксрефсцен, то там материалы берутся из файла исходника и не подвержены изменению в текущей сцене. Что бы отредактировать материал "иксрефсцен" объекта, нужно редактировать его в файле исходнике, а потом обновить иксреф в рабочей сцене, чтобы применить изменения.Ну а в общем - да, если в файле (другая сцена с одним объектом) поменять материалы этого объекта, то в основной сцене материалы тоже обновятся. И во всех сценах, где есть этот иксреф
0
pet046
А еще вопрос разрешите по x-ref static. К примеру я закидываю модель в сцене, далее предлагается окно мердж,x-ref. Выбираю икс реф. Как мне потом этот икс реф по сцене таскать? Биндить на плейн не самый лучший вариант, поскольку плейн не привяжется к модели (на глаз только), как быть? Мерджить тяжелую модель очень не хочется, двигая по сцене а потом переводить в икс реф.
0
t0931
Не совсем понял в чем у вас проблема. Если вы перетаскиваете драг энд дропом в сцену и выбираете иксреф, то файл подгружается как "иксреф сцен" и у него автоматически создается "Dummy"объект который привязан к данному иксрефу. Т.е двигая этот "Dummy" вы можете двигать весь иксреф. Но и не вижу сложностей в том, что бы самому, вручную забиндить его на тот же плейн. Если вы хотите работать с привязками (например привязка по точкам), и вам нужен точный, габаритный образ в сцене, то можете сделать габаритный, лоуполи вариант. Подгрузить сначала его, замерджить, потом подгрузить основной иксреф и забиндить его к лоуполи версии. Только это нужно делать не драг энд дропом, а через "файл - иксрефсцен" что бы все стало на свои места точно. Но если вы работаете с привязками, то для этих целей лучше использовать иксреф обжектс. Иксреф сцен обычно используется когда предполагается, что он будет всегда статично стоять на своем месте. Вообще, загрузка драг энд дропом отличается от загрузки через "файл" тем, что драг энд дропом мы изначально выставляем произвольное положение иксрефа в основной сцене и он автоматически создает привязку к думми. А через "файл - иксреф" он подргужается строго в тех координатах, в которых он находится в исходной сцене иксрефа.
0
pet046
Может я что делаю не так, но думми у меня не подгружается в сцену с иксреф. При драг энд дропе можно некоторое время управлять положением иксреф, но, если нажать , к примеру правый клик - всё, объект станет статичным.
+1
t0931
Ну во первых вы можете самостоятельно создать думми и забиндить на него иксреф через "файл - иксрефсцен"
А во вторых попробуйте сначала на простом примере сделать. Создайте сцену с единственным объектом "бокс." Сохраните ее как исходник и подгрузите ее как иксреф, драг энд дропом в чистую сцену. У вас должно появиться в слоях сам бокс как иксреф и думми объект.
+1
t0931
Выделив рамкой подгруженный иксреф, его можно выделить и двигать. Думми где то в центре находится. Для удобства можно воспользоваться фильтром выделения. На панели управления, в свитке где написано "алл" можно выбрать "хелперс" и будет выделяться только объекты типа думми.
+1
kophysty
Огромное спасибо за урок! Как раз гуглил, что есть на эту тему, так как до сих пор пользовался интуитивно, а тут такой подарок! Очень жду вторую часть ) И еще классно было бы xref сравнить с прокси. Плюсы - минусы - особенности. Хref крут тем, что аттачить все не нужно... и, собственно, зачем тогда вообще прокси, не совсем понятно, но зачем-то же его сделали.
На форуме болтается тема xref vs vray proxy, но она от 2010 года, я думаю с тех пор много воды утекло, хотелось бы более актуальное сравнение и желательно с короной, хотя разница, я думаю, не велика (в сравнении с vray).
Еще раз спасибо и ждем продолжения!
+1
kophysty
Блин, случайно одну звезду поставил, не пойму как теперь исправить, почему-то 5 никак не хочет ставиться теперь. За это дико извиняюсь, попробую еще понажимать! Написал в техподдержку )
0
t0931
Ничего страшного)
+1
snowglide
Спасибо за урок! У меня вопрос. При каждом открытии файла с иксреф объектами, некоторые из них (всегда разные объекты) смещаются. Могут на половину себя уехать вниз или вверх. Каждый раз разные объекты, сначала одни, потом другие. Есть мотосалон, там машины и мотоциклы иксреф. Каждая машина отдельный иксреф, но я все элементы машины замерджила, а то они бывали разлетались по сцене полностью, каждая запчасть. Не переименовываю, не меняю маты, вообще просто расставила объекты и не трогаю. Но при след. открытии файла объекты смещаются. Подскажите, как так? Такое не только с этим файлом и машиными. В других файлах тоже такое было (и другими объектами), не пойму почему.
+1
Rus.L.A.N
Спасибо за урок! Мне очень помог разобраться!
+1
Vladdd75
Спасибо!!! все толково!
0
vasiliish
Спасибо, ты лучший!
0
Maks_75
Благодарю!
0
PixelAccent
Спасибо за статью! Многое почерпнул, но одно прям совсем не могу побороть... сцены Xref не подгружаются через backburner! Локально всё рендерится, если в архив сохранять, то там есть max файлы, а через backburner кукиш... Стрип путей сделан, кириллицы нет в путях. Ignore scene path включена галка...

Кстати если через backburner задействовать ту же машину, с которой всё отправляется, то без проблем... Два дня голову ломаю в чём загвоздка.
0
artem_n
ЕЩЁ НЕ ДОЧИТАЛ ДО КОНЦА, НО РЕСПЕКТ УЖЕ ВЫРАЖАЮ!
КРУТАЯ СТАТЬЯ, СПАСИБО ЗА ТАКУЮ ПОДРОБНОСТЬ И МНОГО БУКВ!!!

ПРИМЕР СО СЦЕНОЙ ИЗ 300 МЛН ПОЛИКОВ И ТЕХНИЧЕСКИЕ ДАННЫЕ ЖЕЛЕЗА- БОЛЕЕ ЧЕМ НАГЛЯДНЫ!
0
Sviatkoba
У меня сторонняя большая сцена (300 млн. полигонов). В ней есть объекты, которые видны только в слоях (Toggle Layer Explorer) в самом окне проекции их нет. Если выделить такой объект в слоях, то его нельзя ни приблизить (Z), ни изолировать от основной сцены (Alt+Q) в настройках (Modify) ничего нет, т.е. я даже не понимаю что это за объект.
Вот ссылка на скриншоты (сюда не прикрепляются картинки):https://disk.yandex.ru/d/BFYAWzwlWwLKxQ 
Это ж похоже на XRef.