Управление размерами трехмерной модели в lazarus при помощи Castle Game Engine

Автор:retarnol

Управление размерами трехмерной модели в lazarus при помощи Castle Game Engine

Для различных демонстраций необходимо менять размеры и положения трехмерных объектов непосредственно при показе модели. Но это делать трудно, так как необходимо перестраивать модель во время работы. VRML модель это просто текстовый файл оформленный несложным способом. Поэтому если изменять этот файл то и модель изменится.

Мы попробуем это сделать на примере примитивов VRML. И начнем с куба.

В VRML куб описывается таким кодом:

Изменяя эти параметры можно легко изменить, если эти параметры хранить в переменных.

У нашей программы создадим вот такой дизайн:
дизай программы изменения размеров модели

Соответственно на форме должны быть вот эти объекты:

Так как модель должна изменяются динамически, то работать будем в событии On Change объектов TrackBar.

Первое что нужно сделать это записать код модели в memo. Будем использовать код

В место пробелов в параметре запишем первую строку кода модели и так далее запишем остальные строки, определяющие примитив Cube.

Inttostr(trackBar1.Position) – в этот код позволяет целочисленное значение положения TrackBar, перевести в текст и добавить к коду модели.

Когда код собран, его необходимо записать в файл. Будем так же использовать функции memo:

А теперь осталось только открыть эту модель:

И в конце необходимо очистить Memo, иначе у нас получится много кубиков.

Для того чтобы экономить код, не будем создавать On Change для каждого TrackBar, а создадим только для первого. Затем для второго и третьего TrackBar в окне инспектора событий на вкладке события в поле On Change выбираем TrackBar1Change

TrackBar1Change

И осталось только спрятать memo, в событии On Create для формы набираем:

Теперь можно запускать проект!))) (Не забудьте сохранить проект куда-нибудь)

Об авторе

retarnol administrator

Оставить ответ