Как изменить объект mesh ???
Думаю что булеву операцию вычитания делать нужно, но как?
(Всё это дело делаю в VC++ 6 и DirectX 9.0)
LPD3DXMESH Rezec; // резец
LPD3DXMESH Zagotovka; // заготовка
..............................
Tак чтоли вычитать ?
Zagotovka = Zagotovka - Rezec; :)
Или нужно специальный сложный алгоритм писать? А встроенных в DirectX средств нету?
Как по мне, то лучше всего редактировать сетку заготовки. Можно было бы получать указатель на массив вершин с помощью ID3DXBaseMesh::LockVertexBuffer, приближать вершины "срезанной" поверхности к центру заготовки и разблокировать буфер с помощью ID3DXBaseMesh::UnlockVertexBuffer...
Но я не специалист (всего пару месяцев назад начал разбираться с Direct 3D). Поэтому могу ошибаться :)
Так ты материал почитай. В том-то и дело, что:
1) Булевы операции над телами проще всего осуществить именно с помощью BSP деревьев (в частности, для разности - буквально десять строк кода)
2) BSP деревья позволяют применять булевы операции в реальном времени.
3) BSP дерево для сцены построить не сложно. А уж статей написано даже на русском - не перечесть...
Не очень удачная идея для эмулятора: сетку придётся делать чересчур плотной. Отсюда, даже не вникая в детали, на ум приходят два нюанса:
а) Отрисовка происходит слижком долго
б) Большие затраты вычислительных мощей на изменение сетки
Деревья позволяют быстро выяснить, какие именно элементы (полигоны, вершины - что угодно) модели необходимо изменять.