Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Ogre3D

Ответ
 
Опции темы
Старый 09.07.2012, 16:50   #1
Hamaus
ПроЭктировщик
 
Аватар для Hamaus
 
Регистрация: 12.09.2005
Сообщений: 138
Написано 20 полезных сообщений
(для 31 пользователей)
Вопрос Overlay+scenenode проблема с перемещением камеры

Всем привет!
В моем проекте необходимо реализовать приборную панель(mesh).
Я попробовал 2 варианта решения:
1) mesh и camera прикреплены к общему SceneNode. Для перемещений двигаем SceneNode.
2) прикрепил mesh к overlay с помощью add3d:
  
pOverlayManager = Ogre::OverlayManager::getSingletonPtr();
    pOverlay = pOverlayManager->create("myOverlay");

    Ogre::Entity *ent = pSceneMgr->createEntity("panel", "panel-light.mesh");
    Ogre::SceneNode *node = pSceneMgr->createSceneNode("panelNode");

    node->attachObject(ent);
    node->setPosition(0, 0, -3.5); 

    pOverlay->add3D(node);
    pOverlay->show();
В обоих случаях проявляется баг: mesh дергается при движении камеры. Причем дерганье усиливается по мере отдаления от координат (0,0,0) (в нулях все норм). Движение отдельно mesh'а происходит плавно.
Как это можно исправить?
Спасибо за ответы )
(Offline)
 
Ответить с цитированием
Старый 10.07.2012, 05:12   #2
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,073
Написано 247 полезных сообщений
(для 514 пользователей)
Ответ: Overlay+scenenode проблема с перемещением камеры

зачем к оверлею прикручивать? можно просто камеру и панель к одному ноду прикрутить и двигать вместо камеры этот узел, и будет все гуд.
(Offline)
 
Ответить с цитированием
Старый 10.07.2012, 15:55   #3
Hamaus
ПроЭктировщик
 
Аватар для Hamaus
 
Регистрация: 12.09.2005
Сообщений: 138
Написано 20 полезных сообщений
(для 31 пользователей)
Ответ: Overlay+scenenode проблема с перемещением камеры

Сообщение от pozitiffcat Посмотреть сообщение
зачем к оверлею прикручивать? можно просто камеру и панель к одному ноду прикрутить и двигать вместо камеры этот узел, и будет все гуд.
Как раз это я описал в 1 варианте.
Сообщение от Hamaus Посмотреть сообщение
1) mesh и camera прикреплены к общему SceneNode. Для перемещений двигаем SceneNode.
Бага аналогична. На больших расстояниях от нуля панель трясется.
(Offline)
 
Ответить с цитированием
Старый 11.07.2012, 06:00   #4
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,073
Написано 247 полезных сообщений
(для 514 пользователей)
Ответ: Overlay+scenenode проблема с перемещением камеры

Напиши как делал первый вариант
(Offline)
 
Ответить с цитированием
Старый 11.07.2012, 18:55   #5
Hamaus
ПроЭктировщик
 
Аватар для Hamaus
 
Регистрация: 12.09.2005
Сообщений: 138
Написано 20 полезных сообщений
(для 31 пользователей)
Ответ: Overlay+scenenode проблема с перемещением камеры

Вместе с impersonalis выяснили, что корень жука зарыт в недостаточной точности float.
Вектора задаются типом Ogre::Real. В моей версии OgreSDK 1.7 он определен(OgrePrerequisites.h) как float (точность всего 7 знаков). Real можно переопределить как double(15-16 знаков). Для этого необходимо прописать деф в проекте и при ручной сборке огра (OgreBuildSettings.h):
#define OGRE_DOUBLE_PRECISION 1
После этого Real - это double.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Hamaus за это полезное сообщение:
impersonalis (17.07.2012), pozitiffcat (11.07.2012)
Старый 11.07.2012, 19:00   #6
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,073
Написано 247 полезных сообщений
(для 514 пользователей)
Ответ: Overlay+scenenode проблема с перемещением камеры

Ого где собака зарыта.
+1
(Offline)
 
Ответить с цитированием
Старый 17.07.2012, 19:15   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 03.09.2005
Сообщений: 14,014
Написано 6,795 полезных сообщений
(для 20,917 пользователей)
Ответ: 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)
Старый 18.07.2012, 05:15   #8
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,073
Написано 247 полезных сообщений
(для 514 пользователей)
Ответ: Overlay+scenenode проблема с перемещением камеры

Я обычно делаю 1 единица равна одному метру игрового поля, тогда все ок. А то бывает тени глючить начинают или еще чего.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 18:57.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com