Закрывающие элементы WPF 3D кажутся шаткими

Я пишу элемент управления 3D-глобусом в WPF.

Большинство из них работает хорошо, но когда я смотрю на гору слишком близко (скажем, с 10 метров или меньше), она становится «шаткой» (имеется в виду — каждое крошечное движение камеры меняет вершины модели горы, поэтому она выглядит как желе)

Я пробовал играть с ближней и дальней плоскостями, указав диапазоны от 0,001 до 5 на ближней плоскости и от 100 до 1000000 и даже положительную бесконечность на дальней плоскости, и это не помогло.

Я также попытался масштабировать модель от 1/10 ее размера до 10-кратного ее размера и даже округлить результат широты/долготы/высоты до ECEF до сантиметров, метров и 10-метровых единиц.

Ничего не помогает, он все равно выглядит шатающимся (хотя округление до 10 метров действительно помогает, а шатание в данном случае очень редкое, но оно настолько деформирует модели, что становится непригодным).

Я думаю, что это проблема точности, в основном. Любая идея, как я могу повысить точность или любая другая идея, как это исправить?

Итай.

ОБНОВЛЕНИЕ: я добавил видео, демонстрирующее артефакт.

РЕШЕНО Я обнаружил ту же проблему со сборкой моделей в World Wing, спросил и ответил здесь.

Как я и подозревал, проблема была в точности. Способ решить эту проблему заключался в том, чтобы оставить фактическую камеру в начале координат (0,0,0), позволяя ей вращаться, и перемещать все плитки в противоположном направлении.

При создании каждой плитки я вычитаю центр XYZ плитки из каждой вершины плитки, поэтому окончательная плитка строится вокруг (0,0,0).

В плитке GeometryModel3D я установил трансформацию перевода, чтобы она была помещена в правильное положение.


person Itai Bar-Haim    schedule 30.08.2011    source источник
comment
Вы пытались настроить приращения движения вашей камеры в соответствии с уровнем масштабирования? Я думаю, что немного кода тоже поможет, хотя я уверен, что здесь задействовано много кода, и я не хотел бы помочь вам найти соответствующий фрагмент кода.   -  person    schedule 30.08.2011
comment
Я не понимаю, что означает «регулировка приращений движения вашей камеры в соответствии с уровнем масштабирования» ... Камера управляется клавиатурой, мышью или кодом менеджера, обычно задаваемым в формате Lat/Long/Alt (с или без шага). Затем местоположение преобразуется в XYZ с использованием того же метода, который используется для построения моделей местности.   -  person Itai Bar-Haim    schedule 30.08.2011
comment
Я предлагал попытаться заставить вашу камеру двигаться медленнее, чем больше вы приближаетесь. Или может я не понял, что значит шаткий.   -  person    schedule 30.08.2011
comment
Я добавил видео, демонстрирующее артефакт. Камера почти не двигается, и вся модель качается.   -  person Itai Bar-Haim    schedule 01.09.2011
comment
Это выглядит так, будто координаты вершин прыгают маленькими шажками. Но поскольку вы уже рассмотрели проблемы с округлением и устранили их, боюсь, я не смогу вам помочь, не имея кода ;) Но я даю голос по этой теме.   -  person    schedule 01.09.2011


Ответы (1)


Я обнаружил ту же проблему со сборкой моделей в World Wing, спросил и ответил здесь.

Как я и подозревал, проблема была в точности. Способ решить эту проблему заключался в том, чтобы оставить фактическую камеру в начале координат (0,0,0), позволяя ей вращаться, и перемещать все плитки в противоположном направлении.

При создании каждой плитки я вычитаю центр XYZ плитки из каждой вершины плитки, поэтому окончательная плитка строится вокруг (0,0,0).

В плитке GeometryModel3D я установил трансформацию перевода, чтобы она была помещена в правильное положение.

person Itai Bar-Haim    schedule 01.09.2011