Hi, this is a (sort of) continuation of the post here. This is the same issue, but the smearing only appears when using any TextureStage
other than TextureStage.default
.
Doesn’t work:
from direct.showbase.ShowBase import ShowBase, Texture, TexGenAttrib
from panda3d.core import TextureStage
class TextureTester(ShowBase):
def __init__(self):
ShowBase.__init__(self)
self.model = self.loader.loadModel('test_model.stl')
self.tex = self.loader.loadTexture('test_texture.jpg')
self.tex_stage = TextureStage('test_texture_stage')
self.model.setTexGen(self.tex_stage, TexGenAttrib.MWorldPosition)
self.tex.setWrapU(Texture.WM_repeat)
self.tex.setWrapV(Texture.WM_repeat)
self.model.set_texture(self.tex)
self.model.set_tex_scale(self.tex_stage, 0.05, 0.05)
self.model.reparentTo(self.render)
self.model.setScale(1, 1, 1)
self.model.setPos(0, 0, 0)
self.useDrive()
self.useTrackball()
app = TextureTester()
app.run()
Does work
from direct.showbase.ShowBase import ShowBase, Texture, TexGenAttrib
from panda3d.core import TextureStage
class TextureTester(ShowBase):
def __init__(self):
ShowBase.__init__(self)
self.model = self.loader.loadModel('test_model.stl')
self.tex = self.loader.loadTexture('test_texture.jpg')
self.tex_stage = TextureStage.default
self.model.setTexGen(self.tex_stage, TexGenAttrib.MWorldPosition)
self.tex.setWrapU(Texture.WM_repeat)
self.tex.setWrapV(Texture.WM_repeat)
self.model.set_texture(self.tex)
self.model.set_tex_scale(self.tex_stage, 0.05, 0.05)
self.model.reparentTo(self.render)
self.model.setScale(1, 1, 1)
self.model.setPos(0, 0, 0)
self.useDrive()
self.useTrackball()
app = TextureTester()
app.run()
Do I need to do anything specific to self.tex_stage
? The docs says to just make a new one; no changes needed. Or maybe, do the TextureStage
s need to be in a different node or node path?
Thanks in advance.