Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
java 3D problem 2011
#1
error when I try to reset the child (a 3d shape representing time) of the TransformGroup in my code. However, I get no error when I invoke the createSceneGraph() method through my behavior class, but the clock remains frozen.

here is my code:

Java Syntax (Toggle Plain Text)

Code:
1. import java.awt.*; 2. import java.applet.*; 3. import java.awt.event.*; 4. import javax.media.j3d.*; 5. import javax.vecmath.*; 6. import com.sun.j3d.utils.universe.*; 7. import com.sun.j3d.utils.geometry.*; 8. import com.sun.j3d.utils.applet.MainFrame; 9. import com.sun.j3d.utils.behaviors.keyboard.*; 10. import java.util.*; 11. 12. public class Detyra3D extends Applet{ 13. Shape3D shape; 14. 15. 16. public void init(){ 17. setLayout(new BorderLayout()); 18. Canvas3D canv = new Canvas3D(null); 19. add(canv, BorderLayout.CENTER); 20. 21. BranchGroup bg = createSceneGraph(); 22. 23. SimpleUniverse su = new SimpleUniverse(canv); 24. su.getViewingPlatform().setNominalViewingTransform(); 25. 26. 27. 28. 29. su.addBranchGraph(bg); 30. 31. 32. 33. 34. } 35. 36. public BranchGroup createSceneGraph(){ 37. BranchGroup scene = new BranchGroup(); 38. 39. 40. 41. 42. 43. Transform3D tr = new Transform3D(); 44. tr.setScale(0.45); 45. tr.setTranslation(new Vector3f(-0.9f, -0.2f, 0f)); 46. 47. 48. 49. 50. 51. TransformGroup tg = new TransformGroup(tr); 52. tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); 53. 54. 55. //this line should make possible my way of overriding 56. //the processStimulus method in my Behavior class 57. //to make possible re-reading of tim every half a second 58. //and building a 3D shape out of it 59. tg.setCapability(TransformGroup.ALLOW_CHILDREN_WRITE); 60. scene.addChild(tg); 61. 62. 63. 64. tg.addChild(shapeClock());//------------------------------- 65. 66. 67. //set light 68. PointLight light = new PointLight(new Color3f(Color.red), 69. new Point3f(1f,1f,1f), 70. new Point3f(1f,0.1f,0f)); 71. BoundingSphere bounds = new BoundingSphere(); 72. light.setInfluencingBounds(bounds); 73. scene.addChild(light); 74. 75. Ndihmese ndihm = new Ndihmese(this, tg); 76. ndihm.setSchedulingBounds(bounds); 77. scene.addChild(ndihm); 78. 79. return scene; 80. 81. } 82. 83. //I build a new shape every half a second here 84. public Shape3D shapeClock(){ 85. 86. 87. 88. Shape3D shape = new Shape3D(); 89. //setting appearance 90. Appearance ap = new Appearance(); 91. ap.setMaterial(new Material()); 92. 93. 94. //I read time here 95. Calendar time = new GregorianCalendar(); 96. int hour = time.get(time.HOUR); 97. int mins = time.get(time.MINUTE); 98. int secs = time.get(time.SECOND); 99. 100. 101. //the time shall be a string, so I'm setting the font 102. Font3D font = new Font3D(new Font("SansSerif", Font.PLAIN, 1), 103. new FontExtrusion()); 104. 105. 106. //I build the string that represents the current time here 107. String s = hour + ":" + mins + ":" + secs; 108. 109. 110. 111. //setting the 3D text that shall be output 112. Text3D text = new Text3D(font, s); 113. //creating a 3D shape out of the text above 114. shape = new Shape3D(text, ap); 115. //I System.out here to see if my behavior object 116. //is actually working 117. System.out.println(s); 118. return shape; 119. } 120. 121. 122. 123. 124. public static void main(String[] args) { 125. new MainFrame(new Detyra3D(), 720, 480); 126. } 127. 128. } 129. 130. //the following is my behavior class 131. 132. import java.awt.*; 133. import java.applet.*; 134. import java.awt.event.*; 135. import javax.media.j3d.*; 136. import javax.vecmath.*; 137. import com.sun.j3d.utils.universe.*; 138. import com.sun.j3d.utils.geometry.*; 139. import com.sun.j3d.utils.applet.MainFrame; 140. import com.sun.j3d.utils.behaviors.keyboard.*; 141. import java.util.*; 142. import java.util.*; 143. import javax.media.j3d.*; 144. 145. public class Ndihmese extends Behavior { 146. TransformGroup det; 147. Detyra3D detyra; 148. public Ndihmese(Detyra3D d3, TransformGroup trg) { 149. det = trg; 150. detyra = d3; 151. } 152. 153. public void initialize() { 154. wakeupOn(new WakeupOnElapsedTime(500)); 155. } 156. 157. public void processStimulus(java.util.Enumeration enumeration) { 158. det.setChild(detyra.shapeClock(), 0); 159. //detyra.createSceneGraph(); 160. /* 161. //this code rotates the scene around z-axis 162. //I tried it and it worked fine, so I know my 163. //classes are interacting 164. int sec = Calendar.getInstance().get(Calendar.SECOND); 165. Transform3D tr = new Transform3D(); 166. tr.rotZ(-Math.PI * sec /30.0); 167. det.setTransform(tr); 168. */ 169. wakeupOn(new WakeupOnElapsedTime(500)); 170. } 171. }

0300-9520262
Get solution in 24 hour
|cpmputer & internetConfusedmileys81:[SIZE="4"][SIZE="3"]....[/SIZE][/SIZE]
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How to run a java file that creaded in Ntebeans in console Vuhelper 1 4,964 08-01-2012, 10:23 PM
Last Post: Pari ch
  Send image to client over a socket in java 2011 Vuhelper 1 3,668 04-21-2012, 02:11 AM
Last Post: hoailenpro
  double buffering in java 2011-12 Vuhelper 0 2,196 09-12-2011, 10:30 PM
Last Post: Vuhelper
  Using wait and notify? in java 2011-12 Vuhelper 0 2,124 09-12-2011, 10:29 PM
Last Post: Vuhelper
  text wrap in java 2011-12 Vuhelper 0 2,134 09-12-2011, 10:27 PM
Last Post: Vuhelper
  How find the data in ArrayList? 2011-12 Vuhelper 0 2,491 09-04-2011, 07:21 AM
Last Post: Vuhelper
  TableModelListener ERROR in Java 2011 Vuhelper 0 2,026 07-23-2011, 05:47 PM
Last Post: Vuhelper
  Exception Handling in Java 2011 Vuhelper 0 1,975 07-23-2011, 05:46 PM
Last Post: Vuhelper
  Getting the element of a vector in Java 2011 Vuhelper 0 1,880 07-23-2011, 05:45 PM
Last Post: Vuhelper
  program does not enter for loop in Java 2011 Vuhelper 0 2,080 07-23-2011, 05:44 PM
Last Post: Vuhelper

Forum Jump:


Users browsing this thread: 1 Guest(s)