[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Форум Panda3D - по русски » Panda3D » Для начинающих » Координаты объектов
Координаты объектов
liquideДата: Суббота, 05.05.2012, 21:05 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 29
Награды: 0
Репутация: 0
Статус: Offline
Я хочу создать скопление звезд, и чтобы при нажатии на каждую звезду появлялась своя информация в новом окне (тут использую просто Тк интером). В общем проблема встала в том, что я не знаю как получить координату объекта. Я их создаю отдельным классом, и даже написал специальный класс присваивания координат. И все вроде хорошо, но я не знаю как можно получить координаты эти обратно =( объекты ставятся не рандомно, а четко по списку координат. Я нашел команду которая передает координаты объекта, но она дает только координаты на экране самом, а мне нужны координаты сцены и вот как их можно получить пандовскими методами? Может уже есть такой вопрос на форуме, но я правда не нашел, может направите =)
И еще вопрос про сами модели, я прочитал, что создатели панды рекмендуют использовать майю, я ее уже установил пол года назад и изучал. вроде даже привык, но тут встала проблема, что в объекты надо прописывать строчку <Collide> { Polyset keep descend } чтобы работала коллизия, и вот как эту строчку можно прописать в майе? просто если открывать блокнотом майи файл или уже експортированный в егг, то там жуть какая то непонятная с непонятной кодировкой. Может есть идеи? Ну или хотя бы через что тогда лучше экспортировать? А лучше, если кому не жалко, дайте обычную сферку с такой строчкой которая будет работать =)
 
serg-kkzДата: Суббота, 05.05.2012, 22:08 | Сообщение # 2
Генерал-лейтенант
Группа: Модераторы
Сообщений: 678
Награды: 3
Репутация: 16
Статус: Offline
Не понял что у тебя за проблема с координатами. Но можешь использовать метод .getPos() к ноду или к объекту. Какая разница классом или как ты их загружаешь, всеравно они находятся в рендере. Ты также можешь при установке координат назначать теги, название, расположение и прочую информацию, а потом брать имя и искать в рендере по нему, а там можно вести что угодно и текучие координаты ну и само собой получить значения тегов.

А зачем тебе прописывать эту строчку я не пойму. Но файл прикрепил.
Прикрепления: sphere.egg(194Kb)


ООП  -  
 
liquideДата: Суббота, 05.05.2012, 22:51 | Сообщение # 3
Сержант
Группа: Пользователи
Сообщений: 29
Награды: 0
Репутация: 0
Статус: Offline
Да я просто пользуюсь камерой из "детского сада" и для нее сфера нужна с коллизией. Вот. Да, а вопрос тогда, вот я создал все объекты, ноды. Как мне вывести координаты объекта на который я нажимаю? хотя бы такой, образный код, вот у меня есть три объекта допустим, и при нажатии мышки на какой то объект выводится именно его координаты. Нажимаю на второй выводятся координаты второго, нажимаю на третий, выводятся координаты третьего. Что то я не догоняю как это сделать
 
ninthДата: Воскресенье, 06.05.2012, 12:33 | Сообщение # 4
Admin
Группа: Администраторы
Сообщений: 1554
Награды: 5
Репутация: 46
Статус: Offline
Я так подозреваю, что требуется не просто узнать координаты нода, а вытащить свою инфу, предварительно записанную и хранящуюся в объекте, хотя я не совсем понял в чём загвоздка - получить нод по которому произошёл щелчок, или по по полученному ноду найти твой экземпляр объекта, к которому принадлежит нод?
Если первое - то тут есть несколько примеров + стандартный пандовский с шахматами.
Если второе, то надо во время создания либо присваивать ноду уникальное имя, либо тег с идентификационным номером. Когда ты по щелчку получишь нод - узнать его имя или id и найти в твоём списке объектов объект к которому привязан нод с таким именем/Id. Как вариант, дублировать id в поле объекта.
 
serg-kkzДата: Воскресенье, 06.05.2012, 12:38 | Сообщение # 5
Генерал-лейтенант
Группа: Модераторы
Сообщений: 678
Награды: 3
Репутация: 16
Статус: Offline
Попробуй мое решение.
Прикрепления: star.7z(13Kb)


ООП  -  

Сообщение отредактировал serg-kkz - Воскресенье, 06.05.2012, 14:58
 
liquideДата: Воскресенье, 06.05.2012, 14:26 | Сообщение # 6
Сержант
Группа: Пользователи
Сообщений: 29
Награды: 0
Репутация: 0
Статус: Offline
Quote (ninth)
Я так подозреваю, что требуется не просто узнать координаты нода, а вытащить свою инфу, предварительно записанную и хранящуюся в объекте, хотя я не совсем понял в чём загвоздка - получить нод по которому произошёл щелчок, или по по полученному ноду найти твой экземпляр объекта, к которому принадлежит нод?
Если первое - то тут есть несколько примеров + стандартный пандовский с шахматами.
Если второе, то надо во время создания либо присваивать ноду уникальное имя, либо тег с идентификационным номером. Когда ты по щелчку получишь нод - узнать его имя или id и найти в твоём списке объектов объект к которому привязан нод с таким именем/Id. Как вариант, дублировать id в поле объекта.


получить нод по которому произошёл щелчок, а лучше его координаты хотя бы
я просмотрел шахматы, понял, что можно вывести координаты когда опускаешь фигуру командой print self.pieces[to].obj.getPos() правда не представляю как реализовать это у себя =( конечно, можно и вторым способом, он наверное даже лучше. Ну тут лучше как понятнее будет =)

Quote (serg-kkz)
Попробуй мое решение.

Битый архив, не может открыть =((
 
serg-kkzДата: Воскресенье, 06.05.2012, 15:00 | Сообщение # 7
Генерал-лейтенант
Группа: Модераторы
Сообщений: 678
Награды: 3
Репутация: 16
Статус: Offline
Quote (liquide)
Битый архив, не может открыть =((

Перезалил.


ООП  -  
 
liquideДата: Воскресенье, 06.05.2012, 15:16 | Сообщение # 8
Сержант
Группа: Пользователи
Сообщений: 29
Награды: 0
Репутация: 0
Статус: Offline
Quote (serg-kkz)
Перезалил.

Ух, шикарно, огромное спасибо. Буду дальше разбираться))
 
liquideДата: Воскресенье, 06.05.2012, 20:09 | Сообщение # 9
Сержант
Группа: Пользователи
Сообщений: 29
Награды: 0
Репутация: 0
Статус: Offline
Теперь еще один вопрос появился, я использую солнце из demomaster.0.8 все вроде хорошо, но вот вопрос с фильтром. Он у каждой звезды направляет свет как то куда захочет, как я понимаю это из за камеры. Может можно создать какой нибудь обработчик событий который будет правильно выставлять свет и корректировать при изменении камеры? и чтобы все звезды выглядели как желтая звезда на скрине? (я этого добился просто камеру поставив под правильным углом)
Прикрепления: 5778294.jpg(23Kb)
 
ninthДата: Воскресенье, 06.05.2012, 20:19 | Сообщение # 10
Admin
Группа: Администраторы
Сообщений: 1554
Награды: 5
Репутация: 46
Статус: Offline
Я вот думаю, что нет смысла этот эффект использовать - слишком он прожорливый. Проще вешать пререндеренный спрайт сияния. Выглядеть будет немного хуже, но ресурсов это жрать будет на несколько порядков меньше.
 
liquideДата: Воскресенье, 06.05.2012, 20:25 | Сообщение # 11
Сержант
Группа: Пользователи
Сообщений: 29
Награды: 0
Репутация: 0
Статус: Offline
Quote (ninth)
Я вот думаю, что нет смысла этот эффект использовать - слишком он прожорливый. Проще вешать пререндеренный спрайт сияния. Выглядеть будет немного хуже, но ресурсов это жрать будет на несколько порядков меньше.

Ну а если уж очень хочется, то есть возможность исправить эти лучи?
Хм, пререндеренный спрайт? в смысле картинку поставить чтоли?


Сообщение отредактировал liquide - Воскресенье, 06.05.2012, 20:26
 
ninthДата: Воскресенье, 06.05.2012, 20:29 | Сообщение # 12
Admin
Группа: Администраторы
Сообщений: 1554
Награды: 5
Репутация: 46
Статус: Offline
Да, картинку. Так работают большинство "вспышечных" и световых эффектов даже в последних играх.
Этот эффект из демомастера сделан шейдерами, так что одной камерой не обойдёшься - надо разбирать код самого шейдера или писать свой.
 
liquideДата: Воскресенье, 06.05.2012, 20:33 | Сообщение # 13
Сержант
Группа: Пользователи
Сообщений: 29
Награды: 0
Репутация: 0
Статус: Offline
Quote (ninth)
Да, картинку. Так работают большинство "вспышечных" и световых эффектов даже в последних играх.
Этот эффект из демомастера сделан шейдерами, так что одной камерой не обойдёшься - надо разбирать код самого шейдера или писать свой.


Хм, а можно узнать где лучше всего изучить спрайты? И на чем их делать и с помощью чего? А то я с этой частью совсем не знаком)))
 
serg-kkzДата: Воскресенье, 06.05.2012, 20:34 | Сообщение # 14
Генерал-лейтенант
Группа: Модераторы
Сообщений: 678
Награды: 3
Репутация: 16
Статус: Offline
Не стоит забывать что спрайты могут быть анимированные. Можно запечь прямо в движке, где-то в мануале видел, точно не помню.

ООП  -  
 
ninthДата: Воскресенье, 06.05.2012, 23:18 | Сообщение # 15
Admin
Группа: Администраторы
Сообщений: 1554
Награды: 5
Репутация: 46
Статус: Offline
Спрайт - это просто полупрозрачная картинка, наложенная на плоский полигон, который всегда повёрнут в сторону камеры. На основе спрайтов помимо вышеупомянутых вспышек и т.п. так же работают эффекты огня, дыма, пыли, всякие "магические" искры, имитация прерывистого луча от ЛЦУ, в общем много чего.

В стандартных примерах есть использование спрайтов, в т.ч. и анимированных о чём говорил serg-kkz. Насчёт программного рендеринга - готовой функции я не припомню, но в принципе можно, хотя обычно эффекты либо рисуются/редактируются в графическом редакторе, либо делается рендеринг в трёхмерном, ну либо ищутся готовые - с последним обычно проблем не возникает, даже с учётом авторских прав и т.п.
 
Форум Panda3D - по русски » Panda3D » Для начинающих » Координаты объектов
Страница 1 из 212»
Поиск: