[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 2 из 2«12
Форум Panda3D - по русски » Panda3D » Общие вопросы » Pick Model , struct вопросы (?)
Pick Model , struct вопросы (?)
FertoVordalastrДата: Четверг, 04.06.2009, 22:05 | Сообщение # 16
Сержант
Группа: Пользователи
Сообщений: 28
Награды: 0
Репутация: 0
Статус: Offline
в том и прикол, что два дня осталось на доделку и разбираться с моделью по частям нет времени...

как я понял, после просчета столкновений, все они куды то записываются в некий список, который потом сортируется... и если я правильно понял, то сортируется он по увеличению расстояния от начала луча до точки столкновения?

дык что если получать конкретный простой нод из этого списка, отбирая ближайший?

типа:
просчитал, отсортил и взял ближайший...

там вроде все просто через getEntry можно получить... он ведь нод возвращает?

 
ninthДата: Пятница, 05.06.2009, 00:08 | Сообщение # 17
Admin
Группа: Администраторы
Сообщений: 1554
Награды: 5
Репутация: 46
Статус: Offline
Да, можно
 
FertoVordalastrДата: Пятница, 05.06.2009, 08:44 | Сообщение # 18
Сержант
Группа: Пользователи
Сообщений: 28
Награды: 0
Репутация: 0
Статус: Offline
круто ) спасибо.
прошу прощение за вопрос не совсем по теме и, возможно, глупый... но возникает такая фишка:
нужно засунуть в дистрибутив с прогой модули панды, без установки панды.
предположим, модули я засуну.
каким образом прописать импорт из папки? и еще, если я возьму тока нужные модули панды, они норм работать будут?
 
ninthДата: Пятница, 05.06.2009, 13:14 | Сообщение # 19
Admin
Группа: Администраторы
Сообщений: 1554
Награды: 5
Репутация: 46
Статус: Offline
ну а чем пакпанда не устраивает? Или ты хочешь совсем без установки?
 
FertoVordalastrДата: Пятница, 05.06.2009, 14:19 | Сообщение # 20
Сержант
Группа: Пользователи
Сообщений: 28
Награды: 0
Репутация: 0
Статус: Offline
ой, ссорь ))) не знал про пакпанду )))
чуть было на сях свой установщик не написал... прошу прощения...

тока вот пакпанда мне уже 270 метров дистриб намутил и не останавливается... 0.о
это нормально?

И еще: тока щас осенило... может и мимо, но:
из-за disableMouse может не обрабатываться мышиный клик? 0.о и если да, то как это решить чтобы камера не ездила, а мыша обрабатывалась?

Сообщение отредактировал FertoVordalastr - Пятница, 05.06.2009, 19:09
 
ninthДата: Пятница, 05.06.2009, 21:47 | Сообщение # 21
Admin
Группа: Администраторы
Сообщений: 1554
Награды: 5
Репутация: 46
Статус: Offline
у меня конечный дистриб выходил где-то около 30-40 мб
не, disableMouse отключает только дефолтное управление. Обработка нажатий мыши вешается отдельно на события.
 
FertoVordalastrДата: Суббота, 06.06.2009, 18:16 | Сообщение # 22
Сержант
Группа: Пользователи
Сообщений: 28
Награды: 0
Репутация: 0
Статус: Offline
файл control.py
Code
# -*- coding: utf_8 -*-
from direct.showbase.DirectObject import DirectObject
from pandac.PandaModules import CollisionTraverser,CollisionNode
from pandac.PandaModules import CollisionHandlerQueue,CollisionRay
from pandac.PandaModules import BitMask32

class mPicker():
     def __init__(self,_render,_camera):
         self.myTraverser = CollisionTraverser()
         self.myHandler = CollisionHandlerQueue()
         self.pickerNode = CollisionNode('mouseRay')
         self.pickerNP = _camera.attachNewNode(self.pickerNode)
         self.pickerNode.setFromCollideMask(BitMask32.bit(1))
         self.pickerRay = CollisionRay()
         self.pickerNode.addSolid(self.pickerRay)
         self.myTraverser.addCollider(self.pickerNP, self.myHandler)
         self.accept('mouse1',self.pick)
         self._render = _render
         self._camera = _camera
      
     def pcik(self):
         mpos=base.mouseWatcherNode.getMouse()
         self.pickerRay.setFromLens(base.camNode, mpos.getX(), mpos.getY())
         myTraverser.traverse(self._render)
         #assume for simplicity's sake that myHandler is a CollisionHandlerQueue
         if self.myHandler.getNumEntries() > 0:
             self.myHandler.sortEntries() #this is so we get the closest object
             pickedObj=self.myHandler.getEntry(0).getIntoNodePath()
             pickedObj=pickedObj.findNetTag('myObjectTag')
             if not pickedObj.isEmpty():
                 handlePickedObject(pickedObj)
             pickedObj.setColor(1,0,0)

файл main:
Code
# -*- coding: utf_8 -*-
import direct.directbase.DirectStart
from modules.world import cWorld
from modules.control import mPicker

mp=mPicker(render,camera)

st=loader.loadModel("models/tutor.egg")
st.reparentTo(render)
st.setFromCollideMask(BitMask32.bit(1))
st.setTag('mTag','1')
base.disableMouse()
base.camera.setPos( -40,-40,40)
base.camera.lookAt(st)

run()

во первых, говорит что у класса mPcik нету метода accept... мож я чет не подключил? 0.о пытался из пандас добавить все модули... все равно ругается...

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

простите меня все за тупость, но ткните меня наконец носом в ошибку (((

еще раз прошу прощения, что всех достал...

 
ninthДата: Воскресенье, 07.06.2009, 23:03 | Сообщение # 23
Admin
Группа: Администраторы
Сообщений: 1554
Награды: 5
Репутация: 46
Статус: Offline
У тебя класс mPicker должен наследоваться от DirectObject т.к. метод accept наследуется от этого самого DirctObject'а

from direct.showbase.DirectObject import DirectObject
class mPicker(DirectObject):
...............................

 
Форум Panda3D - по русски » Panda3D » Общие вопросы » Pick Model , struct вопросы (?)
Страница 2 из 2«12
Поиск: