×
Меню
Индекс

Cloning and Instancing with 3ds Max

 
Используйте, везде где возможно, клонирование объектов в режиме Instance!
Это позволит существеннее насыщать сцену геометрией, при этом фактически сокращая ее кол-во за счет отказа от ее дублирования.
И также, иной раз, весьма былинно, позволит сократить размер ниф файла.
Что в свою очередь скажется на расходе памяти игрой!
 
Экспорт Инстанс и Референс копий объекта поддерживают ТЕС и ФФЕ экспортеры.
Нифтулз под МАХ, не поддерживает!
Всегда создавая уникальную геометрию для каждого из таких объектов.
Что, к сожалению, несколько ограничивает возможности в старших МАХах.
 
https://ru.wikipedia.org/wiki/Geometry_Instancing
Geometry Instancing является прежде всего оптимизационной методикой, то есть она предназначена прежде всего для увеличения скорости визуализации без уменьшения качества.(С)
 
Метод, позволяющий существенно повышать производительность за счет использования одной и той же базовой геометрии для копий объекта.
Особенно актуально использовать при большом кол-ве (подобных друг-другу) объектов в сцене.
Т.е. объекты могут иметь в своем составе уникальные модификаторы, что сделает их визуально различными. Но при одинаковой для всех базовой геометрии позволяет значительно повышать фпс!
This image was rendered with 100000 asteroids
Пример Instancing геометрии при создании кольца астероидов, где использование одной единственной геометрической даты позволяет создать огромное кол-во объектов, практически без падения фпс.

Reference (Экземпляр) подобен образцу, но имеет одностороннюю связь с оригиналом.
Если в оригинал объекта вносятся изменения, они распространяются и на все его экземпляры.
Но если изменяется экземпляр, это не влияет, ни на остальные экземпляры данного объекта, ни на оригинал.
 
Instance (Образец) – это дубликат объекта, сохраняющий неразрывную связь с оригиналом и полную зависимость от него.
Модификация любого образца равносильна модификации оригинала – результаты сказываются как на оригинале объекта,
так и на всех образцах.
 
Сору (Копия) объекта – это его точный независимый дубликат.
Единственной разницей между копией и оригиналом является имя объекта.
Применение преобразований или модификаторов к копиям объектов никак не сказывается на других копиях или оригинале.
(каждая копия, закономерно, получает свою уникальную шейпдату в ниф файле).
 
Режимы Reference и Instance позволяют сократить кол-во уникальной геометрии в сцене.
Т.е. например Instance листьев дерева позволит, фактически, использовать всего один вызов геометрических данных.
Что позволяет В РАЗЫ увеличить кол-во объектов в сцене и при этом сократить размер файла в десятки раз!

 
Использование инстансинга весьма полезно в ЛОДах.
 
Помимо штатного средства создания объектов в качестве инстансинга при копировании, существуют альтернативные скрипты и плагины.
Позволяющие превратить в инстансинг любой объект, который ранее был создан в режиме копии.
Существует плагин подходящий как под 5ый так и под 2009ый версию МАХа.
Позволяет в один клик превратить множество объектов в инстанс.
Разумеется, это имеет смысл, только если объекты являются копиями и совершенно идентичны по своей геометрии.
Затем остается применить ТЕСэкспортер и получить множество геометрии при минимальном весе файла!
 
Этот скрипт добавлен в Заметки!
Проверено под 5ым и 2009 МАХом.
Лежит здесь:
@_Notes_for_Modmaking_ver.3.0\Additional_Files\Plugins\Plugins_for_Max\ToInstance
Оригинальный линк:
http://www.scriptspot.com/3ds-max/scripts/3ds-max-convert-unique-objects-to-instances-plugin
 
Для установки, просто перетащить turntoinstance.mcr в окно МАХа.
Затем Customise User Intreface ->Toolbar->найти TurnToInstance и поместить на панель инструментов.
Остается выделив объекты нажать кнопку и, еще раз кликнуть по ним.
 
Примечание для ТЕС и ФФЕ экспортеров.
 
ВАЖНО!
Экспорт инстансинга срабатывает, только если размеры объекта (SCALE) не были изменены!
Т.е. если копия объекта не была ре-скалирована.
Если изменить scale копии - при экспорте объект получит уникальную только для него триШейпДату.
 
Geometry Questions
Q: Why aren't my instanced objects being cloned?
A: This will only occur when unique non-uniform scales have been applied to the object and when the object is skinned. In both cases a modifier has been applied that makes the object unique. We support uniform scale, movement and rotation of instances. When a non-uniform scale is applied, the vertex relationships are modified and the object must become unique.
 
Примечание.
Для копий объектов (в режиме инстансинга) не применяются уникальные настройки материалов.
Т.е. все копии (в ниф файле) получат свойства оригинального объекта.
Хотя в МАХе отображается, что объекты получили новые материалы.
Но наложение уникальных свойств, возможно в Нифскопе!
Однако, создание анимации перемещения и вращения этих копий, в 3д МАХ - возможно.
 
Примечание.
Если референсная копия получит уникальный материал, то при экспорте получит и свою собственную шейпдату.
Однако, возможно накладывать уникальные модификаторы и применять отдельную анимацию.
Впрочем, клонирование объекта в режимах референс и инстанс актуально для получения множества мелких однотипных объектов.
Чем для создания нескольких крупных объектов с анимациями и прочим.
 
3д МАХ в принципе не поддерживает клонирование систем частиц таким образом!
Хотя частицы вполне могут использовать общую дату!
Т.е. в МАХе не стоит пытаться дублировать CTRL+V частицы, обычно это приводит к вылету.
Но в Нифскопе, можно настроить использование общей даты частиц, для нескольких систем оных в сцене.
Что может быть полезно в некоторых случаях, в основном, в целях оптимизации размера файла.
 

Меню EDIT->Clone (Ctrl+v) на выделенном объекте.
И выбрать желаемый режим.
Меню TOOLS -> Snapshot
 
Это позволяет получить копии анимированного объекта по времени.
А также управлять кол-вом оных.
Весьма полезно для получения Blob моделей.
Но к сожалению, для оных режим инстансинга в основном безсполезен.
Т.е. каждый "пузырь" может иметь свою уникальную геометрию. -_-
 
Из справки к 3д МАХ 5.
The Snapshot tool lets you clone an object that has been animated. You can make a single clone at any frame, or multiple clones spaced over a selected number of frames. Snapshot creates static clones, not animation.
Snapshot spaces the clones equally in time. Adjustments in Track View let you space the clones equally along the path instead (see the second procedure, below).
Like other clone techniques, Snapshot creates copies, instances, or references. You can also choose a mesh option for using particle system.
 
Tool->array
 
Позволяет быстро создать множество копий объекта при этом разместив их в сцене.
Круг из колон вокруг кострища?
Плитка на полу по площади?
Каменные блоки стены по объему?
Быстро и аккуратно!
 
И вот здесь инстансинг будет уместен как нигде более!
Сложные геометрические объекты в большом кол-ве и по большой площади!
 
@_Notes_for_Modmaking_ver_(video_only)\Additional_Files\Tours\MAX_only\Array.gif
@_Notes_for_Modmaking_ver_(video_only)\Additional_Files\Tours\MAX_only\Array2.gif
 
Из справки к 3д МАХ 5.
The Array dialog enables you to create an array of objects based on the current selection.
The items in the Array Dimensions group let you create one-, two-, or three-dimensional arrays. In this case, the term dimension refers to the dimension of arraying the objects. For example, a row of five objects is a single-dimension array, even though it takes up three-dimensional space in the scene. An array of objects that's five rows by three columns is a two-dimensional array, and an array of objects that's five rows by three columns by two levels is a three-dimensional array.
Файл весом 20кб - все объекты в режиме инстансинга. Т.е. номер шейпдаты у всех одинаковый, здесь = 3.
Против 500 кб! Если использовать обычные копии.

Выдержка из оригинальной справки. (NDL Gamebryo 1.1)(С)
Cloning and Instancing with 3ds Max
Instanced objects in Max are shared in Gamebryo as well. This technique can be EXTREMELY useful on memory-starved consoles. Note: If you adjust the pivot or non-uniform scale an instance, it will become unique. Uniform scale is supported, however, Non-uniform scale cannot work with instances in Gamebryo because non-uniform scale becomes baked into the geometry.
 
Non-Uniform & Uniform Scale
Gamebryo does not support animating non-uniform scales (i.e. scales with different values in the x, y, and z axes). Animating non-uniform scale is not supported and will be treated like a uniform scale when animating. All static non-uniform scales are baked into the geometry data itself.
If you need to have something non-uniform scale or squashed, use a morph target to achieve the action.  Morph targets can be created by squashing an object in 3ds max and using Tools / Snapshot to grab a desired morph target.