I'm trying to animate a texture but am getting the following exception in my attempt
to do so:
Exception occurred during Behavior execution:
javax.media.j3d.CapabilityNotSetException: ImageComponent2D: no capability to set image
First off, I don't know how to set this capability if I'm using the TextureLoader
class, since there are no methods that I know of in the ImageComponent2D class.
Secondly, I don't know why I'm even getting this exception since I'm not calling the
set method in the ImageComponent2D class (see code below). The exception is occuring
from the line:
m_imageComponent.updateData(this,0, 0, m_width, m_height);
in the processStimulus method.
Lastly, am I even going about this in the right way to animate a texture?
Thanks,
Jason
Here are some samples of code.
TextureLoader textLoad = new TextureLoader(image, TextureLoader.BY_REFERENCE ,new
java.awt.Container());
ImageComponent2D textImage = textLoad.getImage();
Texture2D texture = new Texture2D(Texture2D.BASE_LEVEL,
Texture.RGB,
textImage.getWidth(),
textImage.getHeight());
texture.setImage(0, textImage);
...
m_textureBehavior = new TextureBehavior();
m_textureBehavior.setSchedulingBounds(BoundingSphere());
textImage.updateData(m_textureBehavior,0,0,textImage.getWidth(),textImage.getHeight());
contentBranch.addChild(m_textureBehavior);
public class TextureBehavior extends Behavior implements ImageComponent2D.Updater{
private WakeupOnElapsedFrames wFrame = new WakeupOnElapsedFrames(0);
private WakeupCriterion[] warray = { wFrame};
private WakeupCondition w = new WakeupOr(warray);
private ImageComponent2D m_imageComponent = null;
private int m_width=0;
private int m_height=0;
/** Creates a new instance of TextureInterpolator */
public TextureBehavior() {
}
public void initialize() {
wakeupOn(w);
}
public void updateData(ImageComponent2D imageComponent, int x, int y, int width,
int height)
{
if(m_imageComponent == null )
{
m_imageComponent = imageComponent;
}
m_width = width;
m_height = height;
System.out.println("Called");
}
public void processStimulus(Enumeration criteria) {
WakeupCriterion genericEvt;
while (criteria.hasMoreElements()) {
genericEvt = (WakeupCriterion) criteria.nextElement();
if (genericEvt instanceof WakeupOnElapsedFrames) {
if(m_imageComponent!= null )
{
m_imageComponent.updateData(this,0, 0, m_width, m_height);
}
}
}
wakeupOn(w);
}
}
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".