[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум Panda3D - по русски » Panda3D » Общие вопросы » Вопросы
Вопросы
BVOGДата: Пятница, 29.01.2010, 17:06 | Сообщение # 406
Полковник
Группа: Проверенные
Сообщений: 184
Награды: 0
Репутация: 4
Статус: Offline
Офицально для этого есть PackPanda. Это статья про неё.

Skype: thebvog
 
DroneZzZДата: Воскресенье, 07.02.2010, 20:58 | Сообщение # 407
Рядовой
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Статус: Offline
Глупый вопрос, но как можно крутить объект вокруг своей оси? Допустим машина стоит к камере лицом, а нужно сделать так чтобы она повернулась к камере дверьми. Через стандартные myNodePath.set что-то не получается

Сообщение отредактировал DroneZzZ - Воскресенье, 07.02.2010, 21:00
 
BVOGДата: Понедельник, 08.02.2010, 17:55 | Сообщение # 408
Полковник
Группа: Проверенные
Сообщений: 184
Награды: 0
Репутация: 4
Статус: Offline
Через myobject.setHpr( 0, 0, 0 ) должно получаться.

Skype: thebvog
 
Dimon3DДата: Пятница, 30.07.2010, 15:41 | Сообщение # 409
Полковник
Группа: Проверенные
Сообщений: 202
Награды: 1
Репутация: 4
Статус: Offline
допустим есть класс на основе NodePath:

class myNode(NodePath):
...def __init__(self):
......NodePath.__init__(self,'myNode')
......self.reparentTo(render)
......self.t=taskMgr.add(self.Update, 'myNodeTask')

...def Update(self, task):
......self.setH(self.getH()+1)
......return task.cont

...def __del__(self):
......self.t.remove()
......self.removeNode

mn=myNode()

Почему после вызова del mn объект не удаляется, а продолжает существовать и функционировать как ни в чем не бывало ????

 
ninthДата: Пятница, 30.07.2010, 16:04 | Сообщение # 410
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Дело в том, что метод __del__ вызывается только тогда, когда на объект не осталось ссылок, а тебя получается, что метод дел не будет вызван т.к. в диспетчере задач висит ссылка, в свою очередь ссылка не будет убита потому что не будет вызван метод дел - порочный круг ) Чтобы его разорвать надо удалять задачу до того ка будет выполнено del mn. Что-нить вроде mn.prepare_del().
 
GogoДата: Четверг, 26.08.2010, 18:03 | Сообщение # 411
Рядовой
Группа: Пользователи
Сообщений: 4
Награды: 0
Репутация: 0
Статус: Offline
Пытаюсь выводить над головой персонажей текст информирующий о текущем здоровье

Code
self.labelText = TextNode('label')
         self.labelText.setText(str(self.hp))
         self.labelTextNode = self.root.attachNewNode(self.labelText)
         self.labelTextNode.setScale(1)
         self.labelTextNode.setPos(-2,0,3)

Но,обнаружил что при повороте камеры или перемещении игрока текст пропадает,я так понимаю текст надо постоянно поворачивать к камере ?! Альтернатив нету?

 
ninthДата: Четверг, 26.08.2010, 23:52 | Сообщение # 412
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Есть два пути:
1. Если нужно чтобы нод (в твоём случае надпись) болтался в 3D пространстве и был всегда повёрнут к камере используй billboard effect:
Code
self.labelTextNode.setBillboardPointEye()

2. Можно проецировать позицию нода в экранные координаты и выводить 2д текст в нужном месте.
 
GogoДата: Среда, 01.09.2010, 12:27 | Сообщение # 413
Рядовой
Группа: Пользователи
Сообщений: 4
Награды: 0
Репутация: 0
Статус: Offline
спасибо.

Я сделал что-то на подобии огня (огненного шара и тп) http://3dtutorials.ru/uroki-3d-max/3-realistichnyi-ogon-sredstvami.html,как это можно экспортировать в панду? Просто я где-то читал что панда поддерживает только скелетную анимацию,а как тогда быть со всеми эффектами? Взрывы и прочие катаклизмы. Наверно я где-то туплю,но 3д мир/графика и все что с ней связано для меня покрыто мраком)

 
ninthДата: Среда, 01.09.2010, 19:51 | Сообщение # 414
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
М.. ты действительно несколько заблуждаешься по поводу эффектов. Посмотри сколько у тебя рендерится пример, который ты привёл в максе и прикинь какие фпс будут в игре, если попробовать это повторить. Поэтому в играх обычно используют фейковые эффекты - например отрендеренные заранее картинки, натянутые на плоскость, системы частиц и пр. подобные вещи.
 
MichmanДата: Среда, 15.09.2010, 18:43 | Сообщение # 415
Лейтенант
Группа: Пользователи
Сообщений: 44
Награды: 0
Репутация: 0
Статус: Offline
Незнаю где здать этот вопрос, а тему создавать глупо.

Вобщем, столкнулся с тем, что при перемещении и вращении объектов в сцене изображение слегка подёргивает. Тоже самое при перемещении и вращении камеры. С вертикальной синхронизацией это никак не связано, проверял. FPS нормальный для почти пустой сцены, где всего один шар и плоскость(в сумме полигонов 100 где-то). Код в менеджере задач - пара строк двигающие шар и столько же на камере. Короче, с кодом не связано никак, да и fps приличный. Источник света один Spotlight. Тени не включены.

Раньше не обращал внимания, а сейчас немного раздражать начало. И самое интересное в том, что этот глюк исчезает, когда я запускаю параллельно 3ds max 8. Не важно в каком порядке я запускаю max и код. И не важно каким драйвером пользуется max - ogl или dx. Даже при открытом окне Панды, отметив глюк, запускаю max и всё в порядке: все движения в сцене становятся гладкими, без подёргиваний.

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

Эти подёргивания выглядят так: при движении объекта, скажем по оси X, в течении где-то полсекунды все нормально, далее следует небольшой скачок в сторону движения на некоторое количество единиц координаты и возврат на иходную в данном отрезке времени или на ту позицию(что скорее всего) где объект и должен быть в данном отрезке времени. Или, проще говоря, в определённый промежуток времени, объект нырнув, скажем
на 0.01 единиц координаты Х, возвращается на позицию, где он и должен быть по логике и далее плавно продолжает свое движение до следующего скачкА. Периодичность таких скачков где-то 2-3 в секунду, что выглядит как подёргивание.

При движении камеры есесно дёргается веся сцена. При вращениях и камеры, и объектов наблюдается таже фигня.

Это безобразие было замечено и на ноуте тоже.
По большому счёту это не критично, но всё же хотелось бы убрать этот глюк.

Кто-нибудь сталкивался с этим?

P.s. Настольная система:
процессор - CoreDuo 2,66 ГГц
видеокарта - ASUS EN8800GTS 512(GeForce)
"мать" - ASUS P5K SE чипсет Intel, модель не помню, звук Realtek
оператива - 2 Гб
жесткий - Barracuda 250 Гб

Ноутбук:
процессор - Celeron550 2.0 ГГц
видео - Mobile Intel® 965 Express Chipset Family
оператива - 1 Гб
жесткий - Hitachi 120 Гб

 
ninthДата: Четверг, 16.09.2010, 01:30 | Сообщение # 416
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Было бы хорошо, если бы выложил код.
Возможно проблема с приоритетами менеджера задач (пандовского)
 
MichmanДата: Четверг, 16.09.2010, 18:58 | Сообщение # 417
Лейтенант
Группа: Пользователи
Сообщений: 44
Награды: 0
Репутация: 0
Статус: Offline
Quote (ninth)
Было бы хорошо, если бы выложил код. Возможно проблема с приоритетами менеджера задач (пандовского)

Смысла выкладывать код невижу поскольку такая же лажа с примерами идущими с пандой. Например, Tut-Bump-Maping - там летающая сфера, дерга
ется сволочь.
Воозможно ещё с виндой(Windows XP HE SP2) проблемы, пока не проверял. У меня одна и та же винда стоит и на настольнике, и на ноуте.

И как их изменять - приоритеты?

Добавлено (16.09.2010, 17:27)
---------------------------------------------
Очень странно то, что при запущенном 3ds max всё нормально... Не хочет Панда "дружить" с моей видекартой. sad
Кстати, GLScene прёт без проблем, хотя тоже работает на OGL, и OGRE так же замечательно. Хм, задачка....

Добавлено (16.09.2010, 18:58)
---------------------------------------------
Всё, разобрался с проблемой - выбросил свой комп через окно!!! Шутка! smile

В Пандитусционном суде.

Судья:
- Обвиняемый, под ником Michman, за невнимательноcть в использовании функции OnscreenText приговаривается к более детальному и внимательному изучению методической литературы посвящённой Panda3D. В случае неисполнения приговора - СМЕРТНАЯ КАЗНЬ!!!

Michman:
- Я не знал, не знал, что может всё так случиться!!!

Судья:
- Незнание законов Пандовкого Кодекса согласно статьям, изложенным на Panda3D.org.ru и Panda3D.org, не освобождает от ответственности.

Дети, не суйте OnscreenText в менеджер задач, а то будет бо-бо. Лучше используйте DirectLabel.

Вообщем, мне нужно было без особой мороки с GUI по-быстрому выводить значение координат X, Y, Z перемещаемого обьекта на экран и забыл про эту строку. И чтобы мне её заметить понадоблось несколько часов )))). Не зря разрабы движка предупреждали, что OnscreenText тормознутый.

Сообщение отредактировал Michman - Четверг, 16.09.2010, 19:04
 
ninthДата: Пятница, 17.09.2010, 00:12 | Сообщение # 418
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Ну вот и слава богу, что разобрался )
Приоритеты выставляются дополнительным ключом примерно так
taskMgr.add(myTask, 'myTaskName', priority = 35)

По поводу выводить значения координат http://panda3d.org.ru/publ/zametki_na_poljakh/onscreendebug/5-1-0-45
оно конечно тоже на OnscreenText основано, но плюс в том что его можно по желанию отключать.включать не шарясь по всему коду и доступ к нему есть как к глобальной переменной из любого места.

 
MichmanДата: Пятница, 17.09.2010, 15:29 | Сообщение # 419
Лейтенант
Группа: Пользователи
Сообщений: 44
Награды: 0
Репутация: 0
Статус: Offline
Quote (ninth)
Приоритеты выставляются дополнительным ключом примерно так...

Учтемс, спасибо.

Quote (ninth)
По поводу выводить значения координат...

А я и забыл про эту статью, читал ведь. Проблема в том что всё урывками, да урывками осваивать Панду приходится. Отсюда "головоломки" и возникают.
 
BVOGДата: Пятница, 17.09.2010, 15:53 | Сообщение # 420
Полковник
Группа: Проверенные
Сообщений: 184
Награды: 0
Репутация: 4
Статус: Offline
Выводить на экран координаты для отладки - это, конечно, хорошо, но есть предложение: я этим всегда пользуюсь, просто выводи в консоль с помощью print:
Code

print "X: ",myobject.getX()

Если честно: обожаю выводить отладочные данные в консоль.


Skype: thebvog

Сообщение отредактировал BVOG - Пятница, 17.09.2010, 15:54
 
Форум Panda3D - по русски » Panda3D » Общие вопросы » Вопросы
Поиск: