Показать сообщение отдельно
Старый 17.07.2012, 23:15   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Overlay+scenenode проблема с перемещением камеры

Сообщение от Hamaus Посмотреть сообщение
Вместе с impersonalis выяснили, что корень жука зарыт в недостаточной точности float.
Ну это скорее фишка стандарта (плавающая запятая) - хранить не фиксированный объём данных под целую и дробные части, а помнить мантиссу, распределяя объём соответственно. В окрестности нуля (в виду малой по модулю целой части) дробная часть может быть представлена с большой точностью, чем дальше - тем больше сжирает целая часть, оставляя дробную голодать.
Точно такой же эффект непринуждённо получается и на Blitz3D (где только float*) и на Xors3D** (где пользователь не имеет подобного Огру уровня доступа к движку, а в штатной сборке - тот же float).

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

*здесь и далее - речь о одинарной точности
** можете даже не баловаться с entity order и parent-ми: достаточно елозить камерой далеко от нуля и устанавливать чуть перед ней entity
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
Hamaus (18.07.2012), pozitiffcat (18.07.2012)