- Установка
- Разработка модулей
- Организационные вопросы
- Приложение 1: Методики тестирования
- Приложение 2: Документация к Voreen
git clone https://github.com/molsimmsu/3mview.git
Проверяем наличие компилятора gcc версии 4.6 и выше. (версия 4.4 не работает)
Ubuntu:
sudo apt-get install libspnav-dev libqt4-dev libcgal-dev cmake libeigen2-dev libboost-all-dev libpng12-dev libfftw3-dev libtiff5-dev python-sip-dev python-qt4-dev libdevil-dev libglew-dev
Скачиваем OpenBabel и распаковываем его в 3mview/openbabel-2.3.2
Устанавливаем OpenBabel
cmake .
make -j4
Компилируем Voreen
cmake . -DVRN_BUILD_VOREENVE=ON -DVRN_BUILD_VOREENTOOL=OFF -DVRN_MODULE_MOLECULE=ON -DVRN_MODULE_STEREO=ON -DVRN_MODULE_GEOMETRY=ON -DVRN_MODULE_ELECTRONDENSITY=ON -DVRN_MODULE_FORMCHARACTERISTICS=ON -DVRN_MODULE_HOMOLOGY=ON -DVRN_MODULE_SYSTEMMODULES=ON
make -j4
Скачиваем Boost 1.52.0
Устанавливаем Boost в каталог 3mview/boost-1.52.0
cd path/to/boost_1_52_0
./bootstrap.sh --prefix=path_to_somewhere/3mview/boost-1.52.0
./b2 install
Компилируем Voreen с флагом -DUSE_CUSTOM_BOOST=ON
cmake . -DUSE_CUSTOM_BOOST=ON -DVRN_BUILD_VOREENVE=ON -DVRN_BUILD_VOREENTOOL=OFF -DVRN_MODULE_MOLECULE=ON -DVRN_MODULE_STEREO=ON -DVRN_MODULE_GEOMETRY=ON -DVRN_MODULE_ELECTRONDENSITY=ON -DVRN_MODULE_FORMCHARACTERISTICS=ON -DVRN_MODULE_HOMOLOGY=ON -DVRN_MODULE_SYSTEMMODULES=ON
make -j4
VoreenVE:
./voreenve.sh
3mview:
./3mview.sh
Скачиваем необходимый архив
http://hex.loria.fr/dist/index.php
Распаковываем лишь один файл /bin/hex_setup.bin в директорию с архивом
Запускаем ./hex_setup.bin
- Знакомимся в принципами Voreen. Полезно также посмотреть подробное описание.
- Выполняем шаги, описанные в Adding a Module Tutorial
- Убираем из примера все то, что относится к GLSL (каталог
glsl
и функциюaddShaderPath()
)
- Берем за основу базовый процессор
- Вносим в него следующие изменения:
- Директивы препроцессора #ifndef и #define в заголовочном файле класса должны содержать уникальное имя процессора
- Заменяем везде имя исходного класса с помощью автоматической замены (с учетом регистра)
- Заполняем возвращаемые значения для функций getCategory() и setDescriptions()
- Добавляем заголовочные файлы используемых свойств, портов, структур данных
- Вводим порты и свойства как private-переменные. Соглашение: имена private-переменных оканчиваются на символ "_"
- Инициализируем и регистрируем порты и свойства в конструкторе
- Регистрируем процессор в файле модуля (см. инструкцию по созданию модуля)
- В каталоге модуля создаем подкаталог
datastructures
- Размещаем в нем файлы стуктур. Примеры
- Если требуется передача структуры данных между процессорами, создаем порт
- Добавляем в файл
<modulename>.cmake
пути к созданным файлам
- В каталоге модуля создаем подкаталог
io
- Берем за образец модуль чтения формата MRC
- Регистрируем модуль чтения в конструкторе основного класса модуля с помощью функции
registerVolumeReader(new MyVolumeReader());
- Пример: electrondensity.cpp
- Добавляем в файл
<modulename>.cmake
пути к созданным файлам
- В каталоге модуля создаем подкаталог
properties
- В каталоге
properties
создаем Property: наследуем от TemplateProperty- stringproperty.h
- stringproperty.cpp
- Функции
serialize()
иdeserialize()
можно исключить - Другие примеры: include и src
- В каталоге модуля создаем подкаталог
qt
- В каталоге
qt
создаем QPropertyWidget: наследуем от QPropertyWidget - В каталоге
qt
создаем WidgetFactory: наследуем от PropertyWidgetFactory - В каталоге модуля cоздаем ModuleQt: наследуем от VoreenModuleQt.
- Регистрируем WidgetFactory в конструкторе ModuleQt.
- Добавляем в файл
<modulename>.cmake
пути к созданным файлам.- Классы, использующие Qt, помещаем в специальные списки (как в core.cmake)