OpenSceneGraph - Объекты реального размера

Я пытаюсь создать реалистичную сцену в OSG, и у меня проблема с размерами.

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

Теперь в реальной жизни коробка размером 1x1x1 метр, расположенная в 10 метрах от вас, будет иметь размер 10 см x 10 см x 10 см. Я хочу создать такой же эффект.

У меня есть модель коробки размером 1x1x1 метр, сделанная в Sketchup, и я помещаю ее в сцену в 10 метрах от камеры (я экспериментировал и могу сказать, что OSG использует правильные единицы измерения). Дело в том, что в окне 800х800 пикселей рамка 100х100 пикселей (скажем), а в окне 80х80 пикселей рамка 10х10 пикселей. Я хочу, чтобы коробка всегда была 10 см. Хорошо, что я знаю размер, разрешение и dpi экрана, который я хочу использовать для этого конкретного проекта, и поэтому я могу использовать «константы».

Тем не менее, я понятия не имею, как это сделать. Моим первым предположением было бы масштабировать мир, чтобы он соответствовал правильному размеру. Но я не уверен, что должен быть коэффициент масштабирования.

Я не нашел прямого способа сделать это в OSG...

Есть ли у вас предложения? Спасибо!


person excalibur1491    schedule 27.04.2014    source источник


Ответы (1)


Мои первые две мысли:

  1. Возможно, вы сможете переопределить изменение формы (вот что это такое в GLUT, найдите вызов, который помещает событие resizeWindow в очередь событий OSG для вашей конкретной оконной системы) - всегда передавайте его на всю ширину/высоту вашего экрана вместо ваше окно и скажите ему использовать 0,0 в качестве источника или, альтернативно, просто переопределить его пустой функцией, если вы всегда будете начинать с полноэкранного окна.

  2. Если это не сработает, вы можете сбросить усеченную пирамиду обзора вашей камеры на основе размеров вашего окна и ваших предыдущих знаний о полноэкранных размерах. Там должно быть много информации об изменении вашей проекционной матрицы - если вы не можете найти информацию, специфичную для OSG, любая информация OpenGL о проекционной матрице также действительна для OSG.

person Ruan Caiman    schedule 28.04.2014
comment
Я наконец нашел решение несколько дней назад, извините, что не опубликовал его. Это было то же самое, что и ваша вторая идея! Однако, спасибо! - person excalibur1491; 19.05.2014