Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Работа с 3D-графикой в Delphi (http://forum.oszone.net/showthread.php?t=153956)

ManHack 22-10-2009 13:58 1249505

Работа с 3D-графикой в Delphi
 
Здравствуйте!
Меня интересует какие в Delphi существуют встроенные и добавляемые (встраиваемые с помощью внешних модулей, например), возможности работы с объёмной графикой?
Впринципе, мне нужно немного - всего лишь трёхмерное пространство с кубической сеткой на нём, в узлах которой в результате действий пользователя будут добавляться фигуры (эти фигуры нужно будет добавлять и пересчитывать).
Почему для решения такой задачи я не хочу использовать кабинетную проецию графической двухмерной рисовки?
- Таким образом не удалось бы достичь возможности изменения угла наблюдения за пространством, а мне хотелось бы вращать, приближать/удалять и перемещать камеру в пространстве....

BlackEric 22-10-2009 22:52 1249894

Вы можете использовать в Delphi OpenGL и DirectX.
В качестве первого обзора существуют книги Краснова по обоим технологиям.

ManHack 11-11-2009 21:19 1267873

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

pva 12-11-2009 07:53 1268147

Всё правильно, тыкая в экран мы выбираем точку на плоскости. Для определения третьей координаты введено условие "ближайший". В d3d после проецирования в систему координат экрана все объекты имеют координаты в терминах экрана. Следовательно если искать объект по координате после проецирования, то ухищряться не придётся. Чтобы найти ближайший объект, можно воспользоваться Z-буффером. В SDK от DirectX (с сайта микрософта закачан) есть пример, в котором можно мышкой выбрать полигон на объекте.
Кстати, в SDK описаны принципы вращения, увеличения, перемещения объектов, с помощью так называемых матриц афинных преобразований.

ManHack 13-11-2009 14:59 1269352

В OpenGL аналогично?

BlackEric 13-11-2009 21:12 1269660

Да.

ManHack 21-11-2009 17:56 1276573

Цитата:

[Fatal Error] DGlut.pas(353): Line too long (more than 1023 characters)
как обойти эту надоедливую ошибку? :(

Уже не надо.... разобрался - косяк был связан с переводом строк. Исправил.

ManHack 21-11-2009 18:46 1276615

Мда... Теперь интересует вопрос, как сделать так с освещением, чтобы при повороте угла обзора шарики освешались (т.е. когда смотрим сзади - шарик тёмный, а ближе к переу - светлее), а линии, их соединяющие - не осещались (и не затемнялись соответственно)?

ManHack 21-11-2009 19:55 1276678

Справился.. Спасибо за помощь ^^
Так... переходим к буфферу глубины...


Время: 13:21.

Время: 13:21.
© OSzone.net 2001-