OpenGL в Delphi

       

Несколько советов


Если вы испытываете потребность попрактиковаться в написании больших программ, но не имеете пока собственных идей, то разобранная выше программа может стать хорошим полигоном для этих целей. Думаю, среди читателей найдутся желающие развить наш графический редактор. Для них я подготовил несколько замечаний и рекомендаций, касающихся возможных изменений и улучшений:
  • При компиляции в Delphi пятой версии появляется совершенно неожиданная ошибка с отображением осевых линий, длина которых после запуска почему-то обнуляется.
  • Для подобных систем общепринято, чтобы координатные оси раскрашивались различными цветами: ось X - красным, ось Y - зеленым, ось Z - синим. Понятно, что это облегчает ориентирование в пространстве.
  • Можно дополнить интерфейс возможностью навигации в пространстве с использованием мыши, если нет помеченных объектов.
  • Можно включить возможность изменения положения источника света. Достаточно его визуализировать и перемещать по тем же принципам, что и объекты модели.
  • Объектам модели можно добавить свойство невидимости, чтобы на время скрывать некоторые их них, дабы не загромождать экран.
  • Необходимо добавить масштабирование всей модели, иначе для больших объектов изображение получается чересчур искаженным.
  • Я разделил запись параметров системы и саму модель по различным файлам. Некоторые параметры, такие как положение точки зрения и масштаб модели, удобнее записывать в файл системы.
  • Система хранится в массиве, следовательно, имеет ограничение по количеству объектов. Использовать список для устранения этого ограничения.
  • Можно добавить возможность наложения текстуры на объекты. В этом случае нужно решить, записывать ли с моделью образы текстур объектов или для экономии дискового пространства достаточно ограничиться записью имен файлов текстур.
  • Желательно реализовать стандартные операции по работе с буфером обмена Windows. Самое простое решение - эмуляция этих операций с использованием еще одного массива, подобного массиву для отмены последнего действия пользователя.
  • Полезной будет возможность объединения нескольких объектов в набор. Операции по перемещению, копированию и удалению распространить в этом случае на все объекты набора.
  • Конечно, тени, прозрачность и зеркальность объектов придадут модельеру совершенно новый облик.
  • Необходима возможность записи модели в открытых форматах, таких как DXF, WRL, SPT, POV. Также можно предусмотреть возможность встраивания модулей других разработчиков для записи в любом формате.
  • Переход на использование патчей потребует переделки программной структуры модельера, но я верю, что решение этой задачи вполне вам по силам.

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



Содержание раздела