Hello,
I’m working on a basket ball game using ARToolKit. I use a marker to render a basket. And I want to drop a ball in the top of the screen to put it on the basket !
But for the moment, i have a render problem, the ball and the basket doesn’t seems to be on the same render buffer. I have parented these two models to the render.
Here is a screen of the problem :
And here is the code
from pandac.PandaModules import *
from direct.directbase.DirectStart import *
from direct.showbase.DirectObject import DirectObject
class BasketAR(DirectObject):
def update(self,task):
if self.cursor.ready():
self.cursor.fetchIntoTexture(0, self.videoTexture, 0)
self.toolkit.analyze(self.videoTexture)
print(self.model.getPos())
return task.cont
def __init__(self):
base.camLens.setNear(0.1)
#----------------------- Node Common -------------------------
blankNode = NodePath("blankNode")
blankNode.reparentTo(render)
#----------------------- Camera -------------------------
option = WebcamVideo.getOption(0)
self.cursor = option.open()
self.videoTexture = Texture('movie')
self.cursor.setupTexture(self.videoTexture)
self.videoTextureScale = Vec2(option.getSizeX()/float(self.videoTexture.getXSize()), option.getSizeY()/float(self.videoTexture.getYSize()))
#----------------------- Card Maker -------------------------
cardMaker = CardMaker('cardMaker')
cardMaker.setFrame(-4/3.0,4/3.0,-1,1)
cardMaker.setUvRange(Point2(self.videoTextureScale[0],0), Point2(0,self.videoTextureScale[1]))
#----------------------- Card -------------------------
card = render.attachNewNode(cardMaker.generate())
card.setTexture(self.videoTexture)
card.setTwoSided(True)
card.setY(5)
card.setScale(1.72)
card.setSx(-card.getSx())
card.setBin("fixed", -1)
card.setDepthTest(False)
card.setDepthWrite(False)
#----------------------- Model -------------------------
self.model = loader.loadModel("panneau")
self.model.reparentTo(render)
self.model.setBin("fixed", 1)
self.model.setDepthTest(False)
self.model.setDepthWrite(False)
#----------------------- self.ball -------------------------
self.ball = loader.loadModel("basketball")
self.ball.reparentTo(self.model)
self.ball.setScale(0.5)
self.ball.setBin("fixed", 1)
self.ball.setDepthTest(False)
self.ball.setDepthWrite(False)
#----------------------- Move Camera -------------------------
self.accept("o", base.oobe)
#----------------------- ARToolKit -------------------------
self.toolkit = ARToolKit.make(base.cam, Filename("camera_para.dat"), 1)
self.toolkit.attachPattern(Filename("patt.kanji"), self.model)
#----------------------- Task Update -------------------------
taskMgr.add(self.update, "update")
#----------------------- Run -------------------------
run()
BasketAR()
Thank you for your help !
Regards