Уголок tool-программистов
GameDev.ru / Сообщества / Уголок tool-программ / Форум / создание 3d редактора

создание 3d редактора

dexПостоялецwww18 фев. 200721:49#0
Делаю 3d-редактор карты высот.... как осуществить выбор вершин в перспективе?
Удалёнwww3 мар. 200711:24#1
1. Находим в какой треугольник указываем
2. Находим указываемую точку на этом треугольнике
3. Выделяем ближайшую к этой точке вершину
dexПостоялецwww3 мар. 200720:41#2
Black Angel
При каждом щелчке вертекс будет выделяться, а надо чтобы при близком щелчке вертекс выделялся...
ZeuxПостоялецwww4 мар. 20072:46#3
dex
3'. Ищем ближайшую к этой точке вершину
4. Проецируем ее на экран, смотрим на расстояние до точки щелчка, если оно <N пикселей (N=4, например) - выделяем.
greaПостоялецwww11 июля 20077:50#4
Или так.

Определяем луч, проходящий от центра камеры через проекцию курсора, скажем на горизонтальную нулевую плоскость.
Ищем растояние от вершины до луча. Если растояние не превосходит некоторую константу эпсилон, выбираем вершину. Если таких вершин несколько, выбираем ближайшую... или при каждом клике выбираем из них по очереди.
Не забудь про оптимизацию. Чтобы не все вершины перебирать, а только потенциально возможные кандидаты.

В дальние вершины сложно будет попасть, но вот тебе перспективное выделение :-D

По сути - выбираешь точки попадающие в некий цилиндр, с радиусом эпсилон.

Или можешь воспользоваться конусом, с подобраными угловыми характеристиками.
Тогда избавишься от влияния перспективы. И на любом растоянии точки будут выделяться одинаково легко.

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

dexПостоялецwww11 июля 200711:30#5
grea
спасибо конечно, но проблема уже давно решена ;)

/ Форум / Уголок tool-программистов

Тема в архиве.

2001—2018 © GameDev.ru — Разработка игр