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
Общие моменты работы с 3DCoat

Как найти в 3DCoat всё что угодно

Допустим, надо разобраться в работе чего-то видимого на экране: меню или инструмента. Это легко сделать, зная, как работает UI 3DCoat.

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

See Also
Видео от Шпагина 1:02

Как вклиниться в код

Можно выполнить свой код на любом этапе работы 3DCoat. Для этого регистрируем блок кода с помощью одного из макросов:

  • __onstartup
  • __afterinit
  • __preprocess
  • __prerender
  • __postprocess
  • __postrender
  • __thumbnail
  • __aftersettings

Названия говорят сами за себя, да и в коде есть их описание.

Пример:

__aftersettings( MyInjectionName ) {
// ...
}
Todo:
Представить картинкой этапы работы 3DCoat.

Если нам нужно работать более гибко, используем класс CallItLater. Например, если хотим выполнить код после инициализации UI, шейдеров и всего что только может быть инициализировано в 3DCoat, пишем:

void doSomething() {
// ...
}
CallItLater startDoSomething( &doSomething, TEST_SUIT );

Вместо TEST_SUIT можем использовать также

  • NUM_START_EXTS
  • VOX_EXTENSION
  • BASIC_TOOL
  • PRE_PROCESS
  • POST_PROCESS
  • PRE_RENDER
  • POST_RENDER
  • DRAW_THUMBNAILS
  • AOPPOPT_READY

Каждый из перечисленных выше defin'ов выполняется на определённом этапе работы приложения.

По сути, макросы вначале этой заметки, являются обёрткой для нашей функции и класса CallItLater.

Todo:
Выделить параметры для CallItLater в отдельную группу? Или переписать через enum class?
See Also
Работа с UI 3DCoat
Видео от Шпагина 0:00 19:21

Скульптрум

Как закинуть скульпт-слой в cMeshContainer

Без обхода слоёв всю работу за нас делает метод VolumeObject::ToRawMesh(). Например, если хотим забросить выделенный в Скульпт-комнате слой, пишем:

VoxTreeBranch::Current()->Obj->ToRawMesh( true, true, &mc, Matrix4D::Identity, false );

Обход слоёв

Todo:
Добавить прямые методы из VoxTreeBranch.
Todo:
Добавить примеры скриптов.
Todo:
Примеры использования классов скриптов в C++коде.