2012-04-09 3 views
1

Я работаю над инструментом визуализации поверхности земли прямо сейчас. Поверхность логически покрыта квадратной плиткой. Эта плитка может быть визуализированы следующим образом:Шкала плитки ландшафта в случае наклонной камеры

Tiled earth

Предположим, я хочу, чтобы нарисовать на этих плиток. Уровень детализации изображения необходимо выбрать в соответствии с текущей шкалой камеры, которая рассчитывается для каждой плитки индивидуально.

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

После картины изображает ситуацию:

camera with no tilt

где красный треугольник камера, которая не имеет наклона, BG является высота камеры над землей и EG является фокусное расстояние, а затем масштабировать = AC/DF = BG/EG

Но если камера имеет наклон (т.е. угол тангажа не равен 0), тогда масштаб изменяется от плитки до плитки (даже от точки к точке).

enter image description here

Так интересно, если есть какой-нибудь способ рода производить разумные масштабы для каждой плитки в этом случае?

+1

Удаленный тег «вычислительной геометрии», поскольку CG - это определенная дисциплина, а не просто вычисление с геометрией. –

+0

Диаграмма 2d будет полезна. –

+0

Спасибо за ваши исправления! Я добавил несколько изображений, чтобы сделать их более ясными. – deephace

ответ

1

Может быть (почти наверняка есть) более простое решение, но то, что вы могли бы сделать, - это обычный мир для преобразования координат координат.

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

Это применимо к любой точке или множеству точек в мировом пространстве.

Here - это учебник о том, как это сделать «вручную».

Если вы создаете плитки с OpenGL или DirectX, вы можете do this намного проще.

+0

Спасибо за ваш ответ! Мне нужно иметь трансформационные и проекционные матрицы, чтобы сделать это, как вы описали. Эти матрицы недоступны в моем случае. – deephace

+0

@deephace У вас нет параметров вашей камеры (или вы не можете подгонять параметры)? Если вы используете OGL/DX, вы можете получить их бесплатно. Если нет, (если это не ясно из учебника I linker), есть страницы в Интернете, в которых описывается, как заполнить такую ​​матрицу. –

+0

Предположим, у меня нет доступа к конвейеру рендеринга. Чтобы решить эту проблему, я хотел бы использовать только информацию о положении камеры, ее высоте над землей, месте плитки и местоположении камеры без построения дополнительных матриц. – deephace

 Смежные вопросы

  • Нет связанных вопросов^_^