2
0

hellovector.html 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]--><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="Asciidoctor 1.5.4"><title>hellovector</title><link rel="stylesheet" href="./asciidoctor.css">
  2. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
  3. <link rel="stylesheet" href="./coderay-asciidoctor.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css"><link rel="stylesheet" href="/home/travis/build/jMonkeyEngine/wiki/build/asciidoc/html5/jme3/beginner/twemoji-awesome.css"></head><body class="article toc2 toc-left"><div id="header"><div id="toolbar"><a href="https://github.com/jMonkeyEngine/wiki/edit/master/src/docs/asciidoc/jme3/beginner/hellovector.adoc"><i class="fa fa-pencil-square" aria-hidden="true"></i></a><a href="https://github.com/jMonkeyEngine/wiki/new/master/src/docs/asciidoc/jme3/beginner/"><i class="fa fa-plus-square" aria-hidden="true"></i></a><input dir="auto" style="position: relative; vertical-align: top;" spellcheck="false" autocomplete="off" class="searchbox__input aa-input" id="doc-search" name="search" placeholder="Search in the doc" required="required" type="search"></div><h1>hellovector</h1><div class="details"><span class="author" id="author"></span><br><span id="revnumber">version ,</span> <span id="revdate">2016/03/17 20:48</span></div><div id="toc" class="toc2"><div id="toctitle">Table of Contents</div></div></div><div id="content"><div class="paragraph"><p><span class="image"><img src="../../jme3/beginner/hellovectorsumm2.png" alt="hellovectorsumm2.png" width="" height=""></span></p></div>
  4. <div class="paragraph"><p>HelloVectorSumm.java</p></div>
  5. <div class="listingblock"><div class="content"><pre class="CodeRay highlight"><code data-lang="java"><span class="keyword">package</span> <span class="namespace">org.jmonkey.chapter2.hellovector</span>;
  6. <span class="keyword">import</span> <span class="include">com.jme3.app.SimpleApplication</span>;
  7. <span class="keyword">import</span> <span class="include">com.jme3.material.Material</span>;
  8. <span class="keyword">import</span> <span class="include">com.jme3.math.ColorRGBA</span>;
  9. <span class="keyword">import</span> <span class="include">com.jme3.math.Vector3f</span>;
  10. <span class="keyword">import</span> <span class="include">com.jme3.renderer.RenderManager</span>;
  11. <span class="keyword">import</span> <span class="include">com.jme3.scene.Geometry</span>;
  12. <span class="keyword">import</span> <span class="include">com.jme3.scene.Node</span>;
  13. <span class="keyword">import</span> <span class="include">com.jme3.scene.shape.Box</span>;
  14. <span class="keyword">import</span> <span class="include">org.jmonkey.utils.Debug</span>;
  15. <span class="keyword">import</span> <span class="include">org.jmonkey.utils.MaterialUtils</span>;
  16. <span class="keyword">import</span> <span class="include">org.jmonkey.utils.SpatialUtils</span>;
  17. <span class="comment">/**
  18. Example Vector Summ
  19. @author Alex Cham aka Jcrypto
  20. */</span>
  21. <span class="directive">public</span> <span class="type">class</span> <span class="class">HelloVectorSumm</span> <span class="directive">extends</span> SimpleApplication
  22. {
  23. <span class="directive">private</span> Node vctrNode = SpatialUtils.makeNode(<span class="string"><span class="delimiter">&quot;</span><span class="content">vectorNode</span><span class="delimiter">&quot;</span></span>);
  24. <span class="comment">//</span>
  25. <span class="directive">private</span> Vector3f vctrNodeLoc = <span class="keyword">new</span> Vector3f(<span class="float">64.0f</span>, <span class="float">64.0f</span>, <span class="float">64.0f</span>);
  26. <span class="directive">private</span> Vector3f camLocVctr = <span class="keyword">new</span> Vector3f(<span class="float">512.0f</span>, <span class="float">64.0f</span>, <span class="float">0.0f</span>);
  27. <span class="comment">//</span>
  28. <span class="directive">private</span> Vector3f vctrNodeSpatLoc = <span class="keyword">new</span> Vector3f(<span class="float">64.0f</span>, <span class="float">128.0f</span>, -<span class="float">32.0f</span>);
  29. <span class="comment">//</span>
  30. <span class="directive">private</span> Vector3f vctrSumm = <span class="predefined-constant">null</span>;
  31. <span class="directive">private</span> Vector3f scale = <span class="keyword">new</span> Vector3f(<span class="integer">8</span>, <span class="integer">8</span>, <span class="integer">8</span>);
  32. <span class="directive">public</span> <span class="directive">static</span> <span class="type">void</span> main(<span class="predefined-type">String</span><span class="type">[]</span> args)
  33. {
  34. HelloVectorSumm app = <span class="keyword">new</span> HelloVectorSumm();
  35. <span class="comment">//app.setShowSettings(false);</span>
  36. app.start();
  37. }
  38. <span class="annotation">@Override</span>
  39. <span class="directive">public</span> <span class="type">void</span> simpleInitApp()
  40. {
  41. cam.setLocation(camLocVctr);
  42. cam.lookAt(Vector3f.ZERO, cam.getUp());
  43. flyCam.setMoveSpeed(<span class="float">100.0f</span>);
  44. <span class="comment">//</span>
  45. Debug.showNodeAxes(assetManager, rootNode, <span class="integer">128</span>);
  46. Debug.attachWireFrameDebugGrid(assetManager, rootNode, Vector3f.ZERO, <span class="integer">256</span>, ColorRGBA.DarkGray);
  47. <span class="comment">//</span>
  48. <span class="predefined-type">Box</span> box = <span class="keyword">new</span> <span class="predefined-type">Box</span>(<span class="integer">1</span>, <span class="integer">1</span>, <span class="integer">1</span>);
  49. <span class="comment">//</span>
  50. Material mat = MaterialUtils.makeMaterial(assetManager, <span class="string"><span class="delimiter">&quot;</span><span class="content">Common/MatDefs/Misc/Unshaded.j3md</span><span class="delimiter">&quot;</span></span>, ColorRGBA.Blue);
  51. Geometry geom = SpatialUtils.makeGeometry(vctrNodeSpatLoc, scale, box, mat, <span class="string"><span class="delimiter">&quot;</span><span class="content">box</span><span class="delimiter">&quot;</span></span>);
  52. vctrNode.attachChild(geom);
  53. vctrNode.setLocalTranslation(vctrNodeLoc);
  54. vctrSumm = vctrNodeLoc.add(vctrNodeSpatLoc);
  55. <span class="comment">//</span>
  56. Debug.showNodeAxes(assetManager, vctrNode, <span class="float">4.0f</span>);
  57. Debug.showVector3fArrow(assetManager, rootNode, vctrNodeLoc, ColorRGBA.Red, <span class="string"><span class="delimiter">&quot;</span><span class="content">vctrNodeLoc</span><span class="delimiter">&quot;</span></span>);
  58. Debug.showVector3fArrow(assetManager, vctrNode, vctrNodeSpatLoc, ColorRGBA.Green, <span class="string"><span class="delimiter">&quot;</span><span class="content">vctrNodeSpatLoc</span><span class="delimiter">&quot;</span></span>);
  59. Debug.showVector3fArrow(assetManager, rootNode, vctrSumm, ColorRGBA.Blue, <span class="string"><span class="delimiter">&quot;</span><span class="content">vctrSumm</span><span class="delimiter">&quot;</span></span>);
  60. <span class="comment">//</span>
  61. rootNode.attachChild(vctrNode);
  62. }
  63. <span class="annotation">@Override</span>
  64. <span class="directive">public</span> <span class="type">void</span> simpleUpdate(<span class="type">float</span> tpf)
  65. {
  66. <span class="comment">//n.move(tpf * 10, 0, 0);</span>
  67. }
  68. <span class="annotation">@Override</span>
  69. <span class="directive">public</span> <span class="type">void</span> simpleRender(RenderManager rm)
  70. {
  71. <span class="comment">//TODO: add render code</span>
  72. }
  73. }</code></pre></div></div>
  74. <div class="paragraph"><p>—</p></div>
  75. <div class="listingblock"><div class="content"><pre class="CodeRay highlight"><code data-lang="java"><span class="keyword">package</span> <span class="namespace">org.jmonkey.utils</span>;
  76. <span class="keyword">import</span> <span class="include">com.jme3.asset.AssetManager</span>;
  77. <span class="keyword">import</span> <span class="include">com.jme3.material.Material</span>;
  78. <span class="keyword">import</span> <span class="include">com.jme3.math.ColorRGBA</span>;
  79. <span class="comment">/**
  80. * Example Vector Summ
  81. * @author Alex Cham aka Jcrypto
  82. */</span>
  83. <span class="directive">public</span> <span class="type">class</span> <span class="class">MaterialUtils</span>
  84. {
  85. <span class="directive">public</span> MaterialUtils()
  86. {
  87. }
  88. <span class="comment">//&quot;Common/MatDefs/Misc/Unshaded.j3md&quot;</span>
  89. <span class="directive">public</span> <span class="directive">static</span> Material makeMaterial(AssetManager am, <span class="predefined-type">String</span> name, ColorRGBA color)
  90. {
  91. Material mat = <span class="keyword">new</span> Material(am, name);
  92. mat.setColor(<span class="string"><span class="delimiter">&quot;</span><span class="content">Color</span><span class="delimiter">&quot;</span></span>, color);
  93. <span class="keyword">return</span> mat;
  94. }
  95. }</code></pre></div></div>
  96. <div class="paragraph"><p>—</p></div>
  97. <div class="listingblock"><div class="content"><pre class="CodeRay highlight"><code data-lang="java"><span class="keyword">package</span> <span class="namespace">org.jmonkey.utils</span>;
  98. <span class="keyword">import</span> <span class="include">com.jme3.material.Material</span>;
  99. <span class="keyword">import</span> <span class="include">com.jme3.math.Vector3f</span>;
  100. <span class="keyword">import</span> <span class="include">com.jme3.scene.Geometry</span>;
  101. <span class="keyword">import</span> <span class="include">com.jme3.scene.Mesh</span>;
  102. <span class="keyword">import</span> <span class="include">com.jme3.scene.Node</span>;
  103. <span class="comment">/**
  104. * Example Vector Summ
  105. * @author Alex Cham aka Jcrypto
  106. */</span>
  107. <span class="directive">public</span> <span class="type">class</span> <span class="class">SpatialUtils</span>
  108. {
  109. <span class="comment">//</span>
  110. <span class="directive">public</span> <span class="directive">static</span> Node makeNode(<span class="predefined-type">String</span> name)
  111. {
  112. Node n = <span class="keyword">new</span> Node(name);
  113. <span class="keyword">return</span> n;
  114. }
  115. <span class="comment">//</span>
  116. <span class="directive">public</span> <span class="directive">static</span> Geometry makeGeometry(Mesh mesh, Material mat, <span class="predefined-type">String</span> name)
  117. {
  118. Geometry geom = <span class="keyword">new</span> Geometry(name, mesh);
  119. geom.setMaterial(mat);
  120. <span class="keyword">return</span> geom;
  121. }
  122. <span class="comment">//</span>
  123. <span class="directive">public</span> <span class="directive">static</span> Geometry makeGeometry(Vector3f loc, Vector3f scl, Mesh mesh, Material mat, <span class="predefined-type">String</span> name)
  124. {
  125. Geometry geom = <span class="keyword">new</span> Geometry(name, mesh);
  126. geom.setMaterial(mat);
  127. geom.setLocalTranslation(loc);
  128. geom.setLocalScale(scl);
  129. <span class="keyword">return</span> geom;
  130. }
  131. }</code></pre></div></div>
  132. <div class="paragraph"><p>—
  133. Debug.java</p></div>
  134. <div class="listingblock"><div class="content"><pre class="CodeRay highlight"><code data-lang="java"><span class="keyword">package</span> <span class="namespace">org.jmonkey.utils</span>;
  135. <span class="keyword">import</span> <span class="include">com.jme3.animation.AnimControl</span>;
  136. <span class="keyword">import</span> <span class="include">com.jme3.asset.AssetManager</span>;
  137. <span class="keyword">import</span> <span class="include">com.jme3.material.Material</span>;
  138. <span class="keyword">import</span> <span class="include">com.jme3.math.ColorRGBA</span>;
  139. <span class="keyword">import</span> <span class="include">com.jme3.math.Vector3f</span>;
  140. <span class="keyword">import</span> <span class="include">com.jme3.scene.Geometry</span>;
  141. <span class="keyword">import</span> <span class="include">com.jme3.scene.Node</span>;
  142. <span class="keyword">import</span> <span class="include">com.jme3.scene.debug.Arrow</span>;
  143. <span class="keyword">import</span> <span class="include">com.jme3.scene.debug.Grid</span>;
  144. <span class="keyword">import</span> <span class="include">com.jme3.scene.debug.SkeletonDebugger</span>;
  145. <span class="keyword">import</span> <span class="include">com.jme3.scene.shape.Line</span>;
  146. <span class="keyword">import</span> <span class="include">static</span> <span class="include">org.jmonkey.utils.SpatialUtils.makeGeometry</span>;
  147. <span class="comment">/**
  148. Example Vector Summ
  149. @author Alex Cham aka Jcrypto
  150. */</span>
  151. <span class="directive">public</span> <span class="type">class</span> <span class="class">Debug</span>
  152. {
  153. <span class="directive">public</span> <span class="directive">static</span> <span class="type">void</span> showNodeAxes(AssetManager am, Node n, <span class="type">float</span> axisLen)
  154. {
  155. Vector3f v = <span class="keyword">new</span> Vector3f(axisLen, <span class="integer">0</span>, <span class="integer">0</span>);
  156. Arrow a = <span class="keyword">new</span> Arrow(v);
  157. Material mat = <span class="keyword">new</span> Material(am, <span class="string"><span class="delimiter">&quot;</span><span class="content">Common/MatDefs/Misc/Unshaded.j3md</span><span class="delimiter">&quot;</span></span>);
  158. mat.setColor(<span class="string"><span class="delimiter">&quot;</span><span class="content">Color</span><span class="delimiter">&quot;</span></span>, ColorRGBA.Red);
  159. Geometry geom = <span class="keyword">new</span> Geometry(n.getName() + <span class="string"><span class="delimiter">&quot;</span><span class="content">XAxis</span><span class="delimiter">&quot;</span></span>, a);
  160. geom.setMaterial(mat);
  161. n.attachChild(geom);
  162. <span class="comment">//</span>
  163. v = <span class="keyword">new</span> Vector3f(<span class="integer">0</span>, axisLen, <span class="integer">0</span>);
  164. a = <span class="keyword">new</span> Arrow(v);
  165. mat = <span class="keyword">new</span> Material(am, <span class="string"><span class="delimiter">&quot;</span><span class="content">Common/MatDefs/Misc/Unshaded.j3md</span><span class="delimiter">&quot;</span></span>);
  166. mat.setColor(<span class="string"><span class="delimiter">&quot;</span><span class="content">Color</span><span class="delimiter">&quot;</span></span>, ColorRGBA.Green);
  167. geom = <span class="keyword">new</span> Geometry(n.getName() + <span class="string"><span class="delimiter">&quot;</span><span class="content">YAxis</span><span class="delimiter">&quot;</span></span>, a);
  168. geom.setMaterial(mat);
  169. n.attachChild(geom);
  170. <span class="comment">//</span>
  171. v = <span class="keyword">new</span> Vector3f(<span class="integer">0</span>, <span class="integer">0</span>, axisLen);
  172. a = <span class="keyword">new</span> Arrow(v);
  173. mat = <span class="keyword">new</span> Material(am, <span class="string"><span class="delimiter">&quot;</span><span class="content">Common/MatDefs/Misc/Unshaded.j3md</span><span class="delimiter">&quot;</span></span>);
  174. mat.setColor(<span class="string"><span class="delimiter">&quot;</span><span class="content">Color</span><span class="delimiter">&quot;</span></span>, ColorRGBA.Blue);
  175. geom = <span class="keyword">new</span> Geometry(n.getName() + <span class="string"><span class="delimiter">&quot;</span><span class="content">ZAxis</span><span class="delimiter">&quot;</span></span>, a);
  176. geom.setMaterial(mat);
  177. n.attachChild(geom);
  178. }
  179. <span class="comment">//</span>
  180. <span class="directive">public</span> <span class="directive">static</span> <span class="type">void</span> showVector3fArrow(AssetManager am, Node n, Vector3f v, ColorRGBA color, <span class="predefined-type">String</span> name)
  181. {
  182. Arrow a = <span class="keyword">new</span> Arrow(v);
  183. Material mat = MaterialUtils.makeMaterial(am, <span class="string"><span class="delimiter">&quot;</span><span class="content">Common/MatDefs/Misc/Unshaded.j3md</span><span class="delimiter">&quot;</span></span>, color);
  184. Geometry geom = makeGeometry(a, mat, name);
  185. n.attachChild(geom);
  186. }
  187. <span class="directive">public</span> <span class="directive">static</span> <span class="type">void</span> showVector3fLine(AssetManager am, Node n, Vector3f v, ColorRGBA color, <span class="predefined-type">String</span> name)
  188. {
  189. <span class="predefined-type">Line</span> l = <span class="keyword">new</span> <span class="predefined-type">Line</span>(v.subtract(v), v);
  190. Material mat = MaterialUtils.makeMaterial(am, <span class="string"><span class="delimiter">&quot;</span><span class="content">Common/MatDefs/Misc/Unshaded.j3md</span><span class="delimiter">&quot;</span></span>, color);
  191. Geometry geom = makeGeometry(l, mat, name);
  192. n.attachChild(geom);
  193. }
  194. <span class="comment">//Skeleton Debugger</span>
  195. <span class="directive">public</span> <span class="directive">static</span> <span class="type">void</span> attachSkeleton(AssetManager am, Node player, AnimControl control)
  196. {
  197. SkeletonDebugger skeletonDebug = <span class="keyword">new</span> SkeletonDebugger(<span class="string"><span class="delimiter">&quot;</span><span class="content">skeleton</span><span class="delimiter">&quot;</span></span>, control.getSkeleton());
  198. Material mat2 = <span class="keyword">new</span> Material(am, <span class="string"><span class="delimiter">&quot;</span><span class="content">Common/MatDefs/Misc/Unshaded.j3md</span><span class="delimiter">&quot;</span></span>);
  199. mat2.setColor(<span class="string"><span class="delimiter">&quot;</span><span class="content">Color</span><span class="delimiter">&quot;</span></span>, ColorRGBA.Yellow);
  200. mat2.getAdditionalRenderState().setDepthTest(<span class="predefined-constant">false</span>);
  201. skeletonDebug.setMaterial(mat2);
  202. player.attachChild(skeletonDebug);
  203. }
  204. <span class="comment">///</span>
  205. <span class="directive">public</span> <span class="directive">static</span> <span class="type">void</span> attachWireFrameDebugGrid(AssetManager assetManager, Node n, Vector3f pos, <span class="predefined-type">Integer</span> size, ColorRGBA color)
  206. {
  207. Geometry g = <span class="keyword">new</span> Geometry(<span class="string"><span class="delimiter">&quot;</span><span class="content">wireFrameDebugGrid</span><span class="delimiter">&quot;</span></span>, <span class="keyword">new</span> Grid(size, size, <span class="float">1.0f</span>));<span class="comment">//1WU</span>
  208. Material mat = <span class="keyword">new</span> Material(assetManager, <span class="string"><span class="delimiter">&quot;</span><span class="content">Common/MatDefs/Misc/Unshaded.j3md</span><span class="delimiter">&quot;</span></span>);
  209. mat.getAdditionalRenderState().setWireframe(<span class="predefined-constant">true</span>);
  210. mat.setColor(<span class="string"><span class="delimiter">&quot;</span><span class="content">Color</span><span class="delimiter">&quot;</span></span>, color);
  211. g.setMaterial(mat);
  212. g.center().move(pos);
  213. n.attachChild(g);
  214. }
  215. }</code></pre></div></div></div><div id="footer"><div id="footer-text">Version <br>Last updated 2020-05-21 00:29:23 +00:00</div></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script><script>docsearch({
  216. apiKey: 'a736b6d93de805e26ec2f49b55013fbd',
  217. indexName: 'jmonkeyengine',
  218. inputSelector: '#doc-search',
  219. debug: false // Set debug to true if you want to inspect the dropdown
  220. });</script></body></html>