Я пишу элемент управления 3D-глобусом в WPF.
Большинство из них работает хорошо, но когда я смотрю на гору слишком близко (скажем, с 10 метров или меньше), она становится «шаткой» (имеется в виду — каждое крошечное движение камеры меняет вершины модели горы, поэтому она выглядит как желе)
Я пробовал играть с ближней и дальней плоскостями, указав диапазоны от 0,001 до 5 на ближней плоскости и от 100 до 1000000 и даже положительную бесконечность на дальней плоскости, и это не помогло.
Я также попытался масштабировать модель от 1/10 ее размера до 10-кратного ее размера и даже округлить результат широты/долготы/высоты до ECEF до сантиметров, метров и 10-метровых единиц.
Ничего не помогает, он все равно выглядит шатающимся (хотя округление до 10 метров действительно помогает, а шатание в данном случае очень редкое, но оно настолько деформирует модели, что становится непригодным).
Я думаю, что это проблема точности, в основном. Любая идея, как я могу повысить точность или любая другая идея, как это исправить?
Итай.
ОБНОВЛЕНИЕ: я добавил видео, демонстрирующее артефакт.
РЕШЕНО Я обнаружил ту же проблему со сборкой моделей в World Wing, спросил и ответил здесь.
Как я и подозревал, проблема была в точности. Способ решить эту проблему заключался в том, чтобы оставить фактическую камеру в начале координат (0,0,0), позволяя ей вращаться, и перемещать все плитки в противоположном направлении.
При создании каждой плитки я вычитаю центр XYZ плитки из каждой вершины плитки, поэтому окончательная плитка строится вокруг (0,0,0).
В плитке GeometryModel3D
я установил трансформацию перевода, чтобы она была помещена в правильное положение.