WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Texturing a quad from within a class (https://forum.worldviz.com/showthread.php?t=4113)

EnvisMJ 01-18-2012 12:48 PM

Texturing a quad from within a class
 
So I'm trying to texture a quad bound to the screen from within a class.

Can anyone explain why this sample code works :

Code:

image = viz.add('Textures/VialLabels/Inventory Image - WHITE.png')
quad = viz.addTexQuad(viz.SCREEN,align=viz.TEXT_LEFT_BOTTOM,pos=(0,0,0))
quad.texture(image)
quad.setScale(6,3,1)

AND this doesn't?

Code:

import viz

class inventory(object):
        global bulkInventoryBins,medicationVials
        def __init__(self,contentsImage=""):
                self.obj = viz.add('box.wrl')
                self.obj.infoImage = contentsImage
        def showInfoImage(self):
                self.infoQuad = viz.addTexQuad(viz.SCREEN,align=viz.TEXT_LEFT_BOTTOM,pos=(0,0,0))
                self.infoQuad.texture(self.obj.infoImage)
                self.infoQuad.setScale(6,3,1)
        def removeInfoImage(self):
                self.infoQuad.remove()

A = inventory("Textures/VialLabels/Inventory Image - WHITE.png")
A.showInfoImage()
viz.go()


EnvisMJ 01-18-2012 01:00 PM

Clarification:

With the first piece of code, the quad appears, sized/positioned correctly, and with the texture applied. Also, "quad.remove()" will delete the quad.

With the second piece of code, the quad appears, sized/positioned correctly, however, it remains white with no texture. Also, "self.infoQuad.remove()" doesn't seem to remove it.

farshizzo 01-18-2012 01:04 PM

In the second example you are not actually creating a texture object. You are just passing the string containing the filename to the texture command. Unfortunately, the texture command silently ignores this error. It will be modified in a future release to raise an exception in this case. Either way, you can fix this problem by modifying the line:
Code:

self.obj.infoImage = contentsImage
to:
Code:

self.obj.infoImage = viz.add(contentsImage)

EnvisMJ 01-18-2012 01:23 PM

Awesome, thanks. ? Are you the only developer on the forums? Haven't seen anything from Jeff or Gladsome in a while.

Any idea why the remove doesn't seem to be working right?

farshizzo 01-18-2012 01:37 PM

There should be other developers and support team members active on this forum.

Your sample code never actually calls the removeInfoImage command. I tried adding a call to that command and it seems to work fine. You will need to make sure it is called after showInfoImage since the infoQuad attribute will not have been created yet.

EnvisMJ 01-24-2012 01:12 PM

ah, thanks :-)


All times are GMT -7. The time now is 06:25 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC