Hehe, that was fun :) But if you look at what he is trying to do here... it looks like he wants to have one texture which is the roof and one which is the facade and apply them in the same shape. I think it can be done if each piece is in a separate geometry if the tex coord set map defined them that way (can you guys confirm that?). But he cannot split out the texture units within a single geometry array unless he is multitexturing (which you would not do with a facade and roof texture).
Since I had a misunderstanding on this very topic long ago I thought it best to make sure are answering the question he is asking. Dave -----Original Message----- From: Doug Twilleager [mailto:[EMAIL PROTECTED]] Sent: Tuesday, May 14, 2002 1:43 PM To: [EMAIL PROTECTED] Subject: Re: [JAVA3D] Problem with TextureUnitState After refreshing my memory by reading the spec, I am going to change my answer. :^) The setTextureUnitState(int, TextureUnitState) form may only be used once the length of the TextureUnitState array has been established. The length of that array is established with the setTextureUnitState(TextureUnitState[]) form. So, there is no bug here. Doug Twilleager Java 3D Team Sun Microsystems >Subject: [JAVA3D] Problem with TextureUnitState >To: [EMAIL PROTECTED] >MIME-version: 1.0 >X-MIMEOLE: Produced By Microsoft MimeOLE V5.50.4522.1200 >Content-transfer-encoding: 7bit >X-Priority: 3 >X-MSMail-priority: Normal >Delivered-to: [EMAIL PROTECTED] > >Hi group, > >I'm trying to use TextureUnitState in an Appearance to apply >different Textures to different parts of the Geometry contained >in only one Shape3D. > >My code is as follows: > > /** > * Returns the Appearance for a house containing 2 Textures, > * one for the 4 walls, the other for the roof. > */ > protected Appearance getHouseAppearance() { > if (houseAppearance == null) { > houseAppearance = new Appearance(); > TextureUnitState tus = new TextureUnitState(); > tus.setTexture(getTexture("facade.gif")); > // the texture IS returned, definitely > houseAppearance.setTextureUnitState(0, tus); // <===== > tus = new TextureUnitState(); > tus.setTexture(getTexture("roof.gif")); > houseAppearance.setTextureUnitState(1, tus); > } > return houseAppearance; > } > >However, at the marked line of code, I get this exception: > >java.lang.NullPointerException > at javax.media.j3d.AppearanceRetained.setTextureUnitState(AppearanceRetained.ja va:6 65) > at javax.media.j3d.Appearance.setTextureUnitState(Appearance.java:687) > at Zoom.getHouseAppearance(Zoom.java:310) > at Zoom.createHouse(Zoom.java:298) > at Zoom.createCity(Zoom.java:144) > at Zoom.createSceneGraph(Zoom.java:118) > at Zoom.init(Zoom.java:435) > at com.sun.j3d.utils.applet.JMainFrame.run(JMainFrame.java:180) > at java.lang.Thread.run(Thread.java:536) > >What am I doing wrong? > >Or might this be a bug in J3D 1.3 beta2? > >regards > >Georg > ___ ___ >| + | |__ Georg Rehfeld Woltmanstr. 12 20097 Hamburg >|_|_\ |___ [EMAIL PROTECTED] +49 (40) 23 53 27 10 > >=========================================================================== >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". =========================================================================== 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". =========================================================================== 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".
