3DCoat  3D-COAT 4.9.xx
3DCoat is the one application that has all the tools you need to take your 3D idea from a block of digital clay all the way to a production ready, fully textured organic or hard surface model.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Низкополигональное моделирование

Как устроена комната Ретопо

retopo.jpg

В комнате ретопологии есть много инструментов для 3D-моделлера. Неплохо в будущем реализовать **полный** набор инструментов. Желающие?

Комната ретопологии - это, по сути, низкополигональное моделирование. С точки зрения художника, эта комната должна находиться в другом месте. Возможно, позже переименуем или перенесём её. Ваши мысли?

Что нужно знать для работы с точки зрения программиста?

Режим комнаты (выбранный инструмент) задаётся в UV_map_Tool::UV_WorkMode и может принимать одно из значений, которые определены в дефайнах RTP_ADDSPLIT, ..., RTP_SHARPPAINT.

Для построения интерфейса этой комнаты возвращается енумератор, который содержит список всех режимов. См. RetopoTool::GetSubModesEnum(). Значение этого енумератора присваивается UV_map_Tool::UV_WorkMode при выборе инструмента. Затем, RetopoTool::GetExtraCommandsEnum() возвращает контекст этого инструмента.

Например, если нужно добавить новый инструмент в режиме "Select faces":

  1. Ищем в RetopoTool::GetExtraCommandsEnum() сравнение UV_WorkMode == RTP_SELECT и добавляем в енумератор уникальное значение. Числовое значение инструмента не должно превышать 1024.
  2. В метод RetopoTool::ActivateExtraCommandID() добавляем case со своим ID инструмента.
  3. Создаём метод, связывающий ID инструмента и действия, выполняемые им.

Как устроены функции

Поглядим на примере инструмента Extrude Faces.

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

See Also
Видео от Шпагина 16:00.

Для доступа к инструментам в комнате используй uvtool().Mesh вместо прямого обращения к m_RetopoTool. Причина: существует несколько экземпляров меша в разных комнатах.

See Also
Видео от Шпагина 25:15

Структуры ретопо-меша

Топология меша хранится в структуре ClusteredMesh.

Как программист ты можешь разобраться что где лежит прочитав описания к полям структуры. Если хочешь послушать - глянь пояснения Андрея Шпагина в этой лекции. Например, из неё узнаешь, что самые полезные структуры по обходу меша - ClusteredMesh::FacesOnEdges и ClusteredMesh::VertsNearVerts. А после любого изменения меша следует вызвать ClusteredMesh::CreateTopoLists() для поддержки целостности или (что лучше), позаботиться в своём инструменте, чтобы он сам учёл изменения в топологии.

Также узнаешь, что наличие симметрии в 3DCoat немного усложнит разработку твоей тулзы. Поэтому вначале тестируй тулзу без симметрии, затем включай её...

See Also
Создание фейсов и вершин в меше, Видео от Шпагина 40:45
Работа с симметрией, Видео от Шпагина 42:00
Работа с UI 3DCoat
Видео от Шпагина 0:01