![]() |
Работа с 3D-графикой в Delphi
Здравствуйте!
Меня интересует какие в Delphi существуют встроенные и добавляемые (встраиваемые с помощью внешних модулей, например), возможности работы с объёмной графикой? Впринципе, мне нужно немного - всего лишь трёхмерное пространство с кубической сеткой на нём, в узлах которой в результате действий пользователя будут добавляться фигуры (эти фигуры нужно будет добавлять и пересчитывать). Почему для решения такой задачи я не хочу использовать кабинетную проецию графической двухмерной рисовки? - Таким образом не удалось бы достичь возможности изменения угла наблюдения за пространством, а мне хотелось бы вращать, приближать/удалять и перемещать камеру в пространстве.... |
Вы можете использовать в Delphi OpenGL и DirectX.
В качестве первого обзора существуют книги Краснова по обоим технологиям. |
Спасибо конечно ))
Только я всё-равно не понимаю как описать програмно следующую ситуацию: Есть трёхмерная решётка, в узлы которой можно ставить шарики кликая по ним мышкой. Дак вот: если камера поставлена так, что за одним узлом сразу же находится другой, то кликая мышью как поставить шарик именно в ближайший видимый? Вообще, как кликая по пространству определяются координаты того места, куда мы кликнули? (экран же двухмерный, а пространство - трёхмерное)... Объясните пожалуйста! |
Всё правильно, тыкая в экран мы выбираем точку на плоскости. Для определения третьей координаты введено условие "ближайший". В d3d после проецирования в систему координат экрана все объекты имеют координаты в терминах экрана. Следовательно если искать объект по координате после проецирования, то ухищряться не придётся. Чтобы найти ближайший объект, можно воспользоваться Z-буффером. В SDK от DirectX (с сайта микрософта закачан) есть пример, в котором можно мышкой выбрать полигон на объекте.
Кстати, в SDK описаны принципы вращения, увеличения, перемещения объектов, с помощью так называемых матриц афинных преобразований. |
В OpenGL аналогично?
|
Да.
|
Цитата:
Уже не надо.... разобрался - косяк был связан с переводом строк. Исправил. |
Мда... Теперь интересует вопрос, как сделать так с освещением, чтобы при повороте угла обзора шарики освешались (т.е. когда смотрим сзади - шарик тёмный, а ближе к переу - светлее), а линии, их соединяющие - не осещались (и не затемнялись соответственно)?
|
Справился.. Спасибо за помощь ^^
Так... переходим к буфферу глубины... |
Время: 13:21. |
Время: 13:21.
© OSzone.net 2001-