spatial.html 59 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1">
  6. <title>Spatial :: jMonkeyEngine Docs</title>
  7. <link rel="canonical" href="https://wiki.jmonkeyengine.org/docs/3.8/core/scene/spatial.html">
  8. <link rel="prev" href="traverse_scenegraph.html">
  9. <link rel="next" href="mesh.html">
  10. <meta name="keywords" content="spatial, node, mesh, geometry, scenegraph">
  11. <meta name="generator" content="Antora 3.0.1">
  12. <link rel="stylesheet" href="../../../../_/css/site.css">
  13. <meta property="og:image" content="https://wiki.jmonkeyengine.org/_/img/iconx128.png">
  14. <meta property="og:description" content="Spatial">
  15. <meta property="og:title" content="jMonkeyEngine Docs">
  16. <link rel="stylesheet" href="../../../../_/css/site-extra.css">
  17. <link rel="stylesheet" href="../../../../_/css/vendor/docsearch.min.css">
  18. <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css -->
  19. <link rel="icon" href="../../../../_/img/favicon.ico" type="image/x-icon">
  20. </head>
  21. <body class="article">
  22. <header class="header">
  23. <nav class="navbar">
  24. <div class="navbar-brand">
  25. <a class="navbar-item" href="https://wiki.jmonkeyengine.org">
  26. <img alt="" src="../../../../_/img/jme-logo.png" height="32" type="image/x-icon">
  27. </a>
  28. <div class="navbar-item hide-for-print">
  29. <input id="search-input" type="text" placeholder="Search docs">
  30. </div>
  31. <button class="navbar-burger" data-target="topbar-nav">
  32. <span></span>
  33. <span></span>
  34. <span></span>
  35. </button>
  36. </div>
  37. <div id="topbar-nav" class="navbar-menu">
  38. <div class="navbar-end">
  39. <div class="navbar-item theme-switch-wrapper">
  40. <label class="theme-switch" for="checkbox">
  41. <input type="checkbox" id="checkbox" />
  42. <div class="slider round"></div>
  43. </label>
  44. </div>
  45. <a class="navbar-item" href="https://github.com/jmonkeyengine/wiki">Github</a>
  46. </div>
  47. </div>
  48. </nav>
  49. </header>
  50. <div class="body">
  51. <div class="nav-container" data-component="docs" data-version="3.4">
  52. <aside class="nav">
  53. <div class="panels">
  54. <div class="nav-panel-menu is-active" data-panel="menu">
  55. <nav class="nav-menu">
  56. <h3 class="title"><a href="../../documentation.html">JME</a></h3>
  57. <ul class="nav-list">
  58. <li class="nav-item" data-depth="0">
  59. <ul class="nav-list">
  60. <li class="nav-item" data-depth="1">
  61. <a class="nav-link" href="../../documentation.html">Getting Started</a>
  62. </li>
  63. <li class="nav-item" data-depth="1">
  64. <a class="nav-link" href="https://javadoc.jmonkeyengine.org/v3.4.1-stable">JavaDoc</a>
  65. </li>
  66. <li class="nav-item" data-depth="1">
  67. <a class="nav-link" href="../../release.html">Release Guide</a>
  68. </li>
  69. </ul>
  70. </li>
  71. <li class="nav-item" data-depth="0">
  72. <ul class="nav-list">
  73. <li class="nav-item" data-depth="1">
  74. <button class="nav-item-toggle"></button>
  75. <a class="nav-link" href="../../tutorials/beginner/beginner.html">Beginner Tutorials</a>
  76. <ul class="nav-list">
  77. <li class="nav-item" data-depth="2">
  78. <a class="nav-link" href="../../tutorials/beginner/hello_simpleapplication.html">Hello SimpleApplication</a>
  79. </li>
  80. <li class="nav-item" data-depth="2">
  81. <a class="nav-link" href="../../tutorials/beginner/hello_node.html">Hello Node</a>
  82. </li>
  83. <li class="nav-item" data-depth="2">
  84. <a class="nav-link" href="../../tutorials/beginner/hello_asset.html">Hello Asset</a>
  85. </li>
  86. <li class="nav-item" data-depth="2">
  87. <a class="nav-link" href="../../tutorials/beginner/hello_main_event_loop.html">Hello Update Loop</a>
  88. </li>
  89. <li class="nav-item" data-depth="2">
  90. <a class="nav-link" href="../../tutorials/beginner/hello_input_system.html">Hello Input System</a>
  91. </li>
  92. <li class="nav-item" data-depth="2">
  93. <a class="nav-link" href="../../tutorials/beginner/hello_material.html">Hello Material</a>
  94. </li>
  95. <li class="nav-item" data-depth="2">
  96. <a class="nav-link" href="../../tutorials/beginner/hello_animation.html">Hello Animation</a>
  97. </li>
  98. <li class="nav-item" data-depth="2">
  99. <a class="nav-link" href="../../tutorials/beginner/hello_picking.html">Hello Picking</a>
  100. </li>
  101. <li class="nav-item" data-depth="2">
  102. <a class="nav-link" href="../../tutorials/beginner/hello_collision.html">Hello Collision</a>
  103. </li>
  104. <li class="nav-item" data-depth="2">
  105. <a class="nav-link" href="../../tutorials/beginner/hello_terrain.html">Hello Terrain</a>
  106. </li>
  107. <li class="nav-item" data-depth="2">
  108. <a class="nav-link" href="../../tutorials/beginner/hello_audio.html">Hello Audio</a>
  109. </li>
  110. <li class="nav-item" data-depth="2">
  111. <a class="nav-link" href="../../tutorials/beginner/hello_effects.html">Hello Effects</a>
  112. </li>
  113. <li class="nav-item" data-depth="2">
  114. <a class="nav-link" href="../../tutorials/beginner/hello_physics.html">Hello Physics</a>
  115. </li>
  116. </ul>
  117. </li>
  118. <li class="nav-item" data-depth="1">
  119. <button class="nav-item-toggle"></button>
  120. <span class="nav-text">Key Concepts</span>
  121. <ul class="nav-list">
  122. <li class="nav-item" data-depth="2">
  123. <a class="nav-link" href="../../tutorials/concepts/best_practices.html">Best Practices</a>
  124. </li>
  125. <li class="nav-item" data-depth="2">
  126. <a class="nav-link" href="../../tutorials/concepts/optimization.html">Optimization</a>
  127. </li>
  128. <li class="nav-item" data-depth="2">
  129. <a class="nav-link" href="../../tutorials/concepts/faq.html">Frequently Asked Questions</a>
  130. </li>
  131. <li class="nav-item" data-depth="2">
  132. <a class="nav-link" href="../../tutorials/concepts/math_for_dummies.html">Math for Dummies</a>
  133. </li>
  134. <li class="nav-item" data-depth="2">
  135. <a class="nav-link" href="../../tutorials/concepts/math.html">Math overview</a>
  136. </li>
  137. <li class="nav-item" data-depth="2">
  138. <a class="nav-link" href="../../tutorials/concepts/math_cheet_sheet.html">3D math "cheat sheet"</a>
  139. </li>
  140. <li class="nav-item" data-depth="2">
  141. <a class="nav-link" href="../../tutorials/concepts/rotate.html">3-D Rotation</a>
  142. </li>
  143. <li class="nav-item" data-depth="2">
  144. <a class="nav-link" href="../../tutorials/concepts/math_video_tutorials.html">Math video tutorial series</a>
  145. </li>
  146. <li class="nav-item" data-depth="2">
  147. <a class="nav-link" href="../../tutorials/concepts/multi-media_asset_pipeline.html">Multi-Media Asset Pipeline</a>
  148. </li>
  149. <li class="nav-item" data-depth="2">
  150. <a class="nav-link" href="../../tutorials/concepts/the_scene_graph.html">The Scene Graph</a>
  151. </li>
  152. <li class="nav-item" data-depth="2">
  153. <a class="nav-link" href="../../tutorials/concepts/scenegraph_for_dummies.html">Scene Graph for Dummies</a>
  154. </li>
  155. <li class="nav-item" data-depth="2">
  156. <a class="nav-link" href="../../tutorials/concepts/terminology.html">3D Graphics Terminology</a>
  157. </li>
  158. <li class="nav-item" data-depth="2">
  159. <a class="nav-link" href="../../tutorials/concepts/transparency_sorting.html">Transparency Sorting</a>
  160. </li>
  161. </ul>
  162. </li>
  163. <li class="nav-item" data-depth="1">
  164. <button class="nav-item-toggle"></button>
  165. <span class="nav-text">Articles and How-to&#8217;s</span>
  166. <ul class="nav-list">
  167. <li class="nav-item" data-depth="2">
  168. <button class="nav-item-toggle"></button>
  169. <span class="nav-text">How to Model</span>
  170. <ul class="nav-list">
  171. <li class="nav-item" data-depth="3">
  172. <a class="nav-link" href="../../tutorials/how-to/modeling/3dsmax/3dsmax.html">3dsmax</a>
  173. </li>
  174. <li class="nav-item" data-depth="3">
  175. <button class="nav-item-toggle"></button>
  176. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/blender.html">Blender</a>
  177. <ul class="nav-list">
  178. <li class="nav-item" data-depth="4">
  179. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/blender_buffer_clearing.html">Buffer Clearing</a>
  180. </li>
  181. <li class="nav-item" data-depth="4">
  182. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/blender_gltf.html">Export as GlTF</a>
  183. </li>
  184. <li class="nav-item" data-depth="4">
  185. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/blender_ogre_export.html">Export as Ogre XML</a>
  186. </li>
  187. <li class="nav-item" data-depth="4">
  188. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/blender_ogre_compatibility.html">Ogre Compatibility</a>
  189. </li>
  190. <li class="nav-item" data-depth="4">
  191. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/makehuman.html">MakeHuman</a>
  192. </li>
  193. <li class="nav-item" data-depth="4">
  194. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/makehuman_blender_ogrexml_toolchain.html">MakeHuman toolchain</a>
  195. </li>
  196. </ul>
  197. </li>
  198. </ul>
  199. </li>
  200. <li class="nav-item" data-depth="2">
  201. <button class="nav-item-toggle"></button>
  202. <span class="nav-text">How to Animate</span>
  203. <ul class="nav-list">
  204. <li class="nav-item" data-depth="3">
  205. <button class="nav-item-toggle"></button>
  206. <span class="nav-text">Mixamo</span>
  207. <ul class="nav-list">
  208. <li class="nav-item" data-depth="4">
  209. <a class="nav-link" href="../../tutorials/how-to/modeling/blender/mixamo.html">Blender Models</a>
  210. </li>
  211. <li class="nav-item" data-depth="4">
  212. <button class="nav-item-toggle"></button>
  213. <span class="nav-text">Video</span>
  214. <ul class="nav-list">
  215. <li class="nav-item" data-depth="5">
  216. <a class="nav-link" href="https://youtu.be/jHgAgTWIers?list=PLv6qR9TGkz8RcUr-fOHI2SksWA4BAU9TS">Part 1- Download Model</a>
  217. </li>
  218. <li class="nav-item" data-depth="5">
  219. <a class="nav-link" href="https://youtu.be/GQJSrOpNQwI?list=PLv6qR9TGkz8RcUr-fOHI2SksWA4BAU9TS">Part 2- Rig and Animate</a>
  220. </li>
  221. <li class="nav-item" data-depth="5">
  222. <a class="nav-link" href="https://youtu.be/JzRe2Dxbcmc?list=PLv6qR9TGkz8RcUr-fOHI2SksWA4BAU9TS">Part 3- Import to JME</a>
  223. </li>
  224. <li class="nav-item" data-depth="5">
  225. <a class="nav-link" href="https://youtu.be/8wwDRDJop7k?list=PLv6qR9TGkz8RcUr-fOHI2SksWA4BAU9TS">Part 4- Play Animation</a>
  226. </li>
  227. </ul>
  228. </li>
  229. </ul>
  230. </li>
  231. </ul>
  232. </li>
  233. <li class="nav-item" data-depth="2">
  234. <a class="nav-link" href="../../tutorials/how-to/debugging.html">Debugging with Wireframes</a>
  235. </li>
  236. <li class="nav-item" data-depth="2">
  237. <a class="nav-link" href="../../tutorials/how-to/util/free_skymaps.html">How to create free skymaps</a>
  238. </li>
  239. <li class="nav-item" data-depth="2">
  240. <button class="nav-item-toggle"></button>
  241. <span class="nav-text">Java Tips</span>
  242. <ul class="nav-list">
  243. <li class="nav-item" data-depth="3">
  244. <a class="nav-link" href="../../tutorials/how-to/java/localization.html">Localization</a>
  245. </li>
  246. <li class="nav-item" data-depth="3">
  247. <a class="nav-link" href="../../tutorials/how-to/java/swing_canvas.html">Swing Canvas</a>
  248. </li>
  249. <li class="nav-item" data-depth="3">
  250. <a class="nav-link" href="../../tutorials/how-to/java/logging.html">Logging</a>
  251. </li>
  252. <li class="nav-item" data-depth="3">
  253. <a class="nav-link" href="../../tutorials/how-to/java/read_graphic_card_capabilites.html">Read Graphics Capabilities</a>
  254. </li>
  255. </ul>
  256. </li>
  257. <li class="nav-item" data-depth="2">
  258. <button class="nav-item-toggle"></button>
  259. <span class="nav-text">Articles</span>
  260. <ul class="nav-list">
  261. <li class="nav-item" data-depth="3">
  262. <button class="nav-item-toggle"></button>
  263. <span class="nav-text">Physically Based Rendering</span>
  264. <ul class="nav-list">
  265. <li class="nav-item" data-depth="4">
  266. <a class="nav-link" href="../../tutorials/how-to/articles/pbr/pbr_part1.html">PBR – Part one</a>
  267. </li>
  268. <li class="nav-item" data-depth="4">
  269. <a class="nav-link" href="../../tutorials/how-to/articles/pbr/pbr_part2.html">PBR – Part two</a>
  270. </li>
  271. <li class="nav-item" data-depth="4">
  272. <a class="nav-link" href="../../tutorials/how-to/articles/pbr/pbr_part3.html">PBR – Part three</a>
  273. </li>
  274. </ul>
  275. </li>
  276. </ul>
  277. </li>
  278. </ul>
  279. </li>
  280. </ul>
  281. </li>
  282. <li class="nav-item" data-depth="0">
  283. <ul class="nav-list">
  284. <li class="nav-item" data-depth="1">
  285. <button class="nav-item-toggle"></button>
  286. <span class="nav-text">Core Engine</span>
  287. <ul class="nav-list">
  288. <li class="nav-item" data-depth="2">
  289. <a class="nav-link" href="../app/simpleapplication.html">SimpleApplication</a>
  290. </li>
  291. <li class="nav-item" data-depth="2">
  292. <a class="nav-link" href="../system/appsettings.html">AppSettings</a>
  293. </li>
  294. </ul>
  295. </li>
  296. <li class="nav-item" data-depth="1">
  297. <button class="nav-item-toggle"></button>
  298. <span class="nav-text">Controlling Game Logic</span>
  299. <ul class="nav-list">
  300. <li class="nav-item" data-depth="2">
  301. <a class="nav-link" href="../app/update_loop.html">Update Loop</a>
  302. </li>
  303. <li class="nav-item" data-depth="2">
  304. <a class="nav-link" href="../app/state/application_states.html">Application States</a>
  305. </li>
  306. <li class="nav-item" data-depth="2">
  307. <button class="nav-item-toggle"></button>
  308. <a class="nav-link" href="control/custom_controls.html">Custom Controls</a>
  309. <ul class="nav-list">
  310. <li class="nav-item" data-depth="3">
  311. <button class="nav-item-toggle"></button>
  312. <span class="nav-text">Video</span>
  313. <ul class="nav-list">
  314. <li class="nav-item" data-depth="4">
  315. <a class="nav-link" href="https://www.youtube.com/watch?v=MNDiZ9YHIpM">Control any scene node</a>
  316. </li>
  317. <li class="nav-item" data-depth="4">
  318. <a class="nav-link" href="https://www.youtube.com/watch?v=-OzRZscLlHY">Control a character</a>
  319. </li>
  320. <li class="nav-item" data-depth="4">
  321. <a class="nav-link" href="https://wiki.jmonkeyengine.org/Scenes/SDK-UsecaseDemo_1.zip">Video Source Code</a>
  322. </li>
  323. </ul>
  324. </li>
  325. </ul>
  326. </li>
  327. <li class="nav-item" data-depth="2">
  328. <a class="nav-link" href="../app/multithreading.html">Multithreading</a>
  329. </li>
  330. </ul>
  331. </li>
  332. <li class="nav-item" data-depth="1">
  333. <button class="nav-item-toggle"></button>
  334. <span class="nav-text">Scene Graph</span>
  335. <ul class="nav-list">
  336. <li class="nav-item" data-depth="2">
  337. <a class="nav-link" href="traverse_scenegraph.html">Traverse SceneGraph</a>
  338. </li>
  339. <li class="nav-item is-current-page" data-depth="2">
  340. <a class="nav-link" href="spatial.html">Spatial: Node vs Geometry</a>
  341. </li>
  342. <li class="nav-item" data-depth="2">
  343. <button class="nav-item-toggle"></button>
  344. <a class="nav-link" href="mesh.html">Mesh</a>
  345. <ul class="nav-list">
  346. <li class="nav-item" data-depth="3">
  347. <a class="nav-link" href="custom_meshes.html">Custom Meshes</a>
  348. </li>
  349. <li class="nav-item" data-depth="3">
  350. <a class="nav-link" href="shape/shape.html">Shape</a>
  351. </li>
  352. <li class="nav-item" data-depth="3">
  353. <a class="nav-link" href="3d_models.html">3D Models</a>
  354. </li>
  355. </ul>
  356. </li>
  357. <li class="nav-item" data-depth="2">
  358. <a class="nav-link" href="../asset/asset_manager.html">Asset Manager</a>
  359. </li>
  360. <li class="nav-item" data-depth="2">
  361. <a class="nav-link" href="../export/save_and_load.html">Saving and Loading Nodes</a>
  362. </li>
  363. <li class="nav-item" data-depth="2">
  364. <a class="nav-link" href="../collision/collision_and_intersection.html">Collision and Intersection</a>
  365. </li>
  366. <li class="nav-item" data-depth="2">
  367. <a class="nav-link" href="control/level_of_detail.html">Level of Detail</a>
  368. </li>
  369. </ul>
  370. </li>
  371. <li class="nav-item" data-depth="1">
  372. <button class="nav-item-toggle"></button>
  373. <span class="nav-text">Animation, Scene</span>
  374. <ul class="nav-list">
  375. <li class="nav-item" data-depth="2">
  376. <a class="nav-link" href="../animation/animation.html">Animation-Old</a>
  377. </li>
  378. <li class="nav-item" data-depth="2">
  379. <a class="nav-link" href="../cinematic/cinematics.html">Cinematics (cutscenes, fake destruction physics)</a>
  380. </li>
  381. <li class="nav-item" data-depth="2">
  382. <a class="nav-link" href="../cinematic/motionpath.html">MotionPaths and Waypoints</a>
  383. </li>
  384. </ul>
  385. </li>
  386. <li class="nav-item" data-depth="1">
  387. <button class="nav-item-toggle"></button>
  388. <span class="nav-text">Material, Light, Shadow</span>
  389. <ul class="nav-list">
  390. <li class="nav-item" data-depth="2">
  391. <a class="nav-link" href="../material/how_to_use_materials.html">How to use Materials</a>
  392. </li>
  393. <li class="nav-item" data-depth="2">
  394. <a class="nav-link" href="../material/j3m_material_files.html">.j3m Material Files</a>
  395. </li>
  396. <li class="nav-item" data-depth="2">
  397. <a class="nav-link" href="../material/material_definitions.html">.j3md Material Definitions</a>
  398. </li>
  399. <li class="nav-item" data-depth="2">
  400. <a class="nav-link" href="../material/materials_overview.html">.j3md Properties</a>
  401. </li>
  402. <li class="nav-item" data-depth="2">
  403. <a class="nav-link" href="../shader/jme3_shaders.html">Shaders and JME3</a>
  404. </li>
  405. <li class="nav-item" data-depth="2">
  406. <a class="nav-link" href="../shader/jme3_shadernodes.html">Shader Node System</a>
  407. </li>
  408. <li class="nav-item" data-depth="2">
  409. <a class="nav-link" href="../shader/shader_video_tutorials.html">Shader Video Tutorials</a>
  410. </li>
  411. <li class="nav-item" data-depth="2">
  412. <a class="nav-link" href="../light/light_and_shadow.html">Light and Shadow</a>
  413. </li>
  414. <li class="nav-item" data-depth="2">
  415. <a class="nav-link" href="../texture/anisotropic_filtering.html">Anisotropic Filtering</a>
  416. </li>
  417. <li class="nav-item" data-depth="2">
  418. <a class="nav-link" href="../system/jme3_srgbpipeline.html">Gamma Correction</a>
  419. </li>
  420. </ul>
  421. </li>
  422. <li class="nav-item" data-depth="1">
  423. <button class="nav-item-toggle"></button>
  424. <span class="nav-text">Audio, Video</span>
  425. <ul class="nav-list">
  426. <li class="nav-item" data-depth="2">
  427. <a class="nav-link" href="../audio/audio.html">Playing Sounds</a>
  428. </li>
  429. <li class="nav-item" data-depth="2">
  430. <a class="nav-link" href="../audio/audio_environment_presets.html">Audio Environment Presets</a>
  431. </li>
  432. <li class="nav-item" data-depth="2">
  433. <a class="nav-link" href="../app/state/screenshots.html">Capture Screenshots</a>
  434. </li>
  435. <li class="nav-item" data-depth="2">
  436. <a class="nav-link" href="../app/state/capture_audio_video_to_a_file.html">Capture Audio/Video</a>
  437. </li>
  438. </ul>
  439. </li>
  440. <li class="nav-item" data-depth="1">
  441. <button class="nav-item-toggle"></button>
  442. <span class="nav-text">Filter, Effect</span>
  443. <ul class="nav-list">
  444. <li class="nav-item" data-depth="2">
  445. <a class="nav-link" href="../effect/effects_overview.html">Overview</a>
  446. </li>
  447. <li class="nav-item" data-depth="2">
  448. <a class="nav-link" href="../effect/bloom_and_glow.html">Bloom and Glow</a>
  449. </li>
  450. <li class="nav-item" data-depth="2">
  451. <a class="nav-link" href="../effect/particle_emitters.html">Particle Emitters</a>
  452. </li>
  453. </ul>
  454. </li>
  455. <li class="nav-item" data-depth="1">
  456. <button class="nav-item-toggle"></button>
  457. <span class="nav-text">Landscapes</span>
  458. <ul class="nav-list">
  459. <li class="nav-item" data-depth="2">
  460. <a class="nav-link" href="../util/sky.html">Sky</a>
  461. </li>
  462. <li class="nav-item" data-depth="2">
  463. <a class="nav-link" href="../terrain/terrain.html">Terrain (TerraMonkey)</a>
  464. </li>
  465. <li class="nav-item" data-depth="2">
  466. <a class="nav-link" href="../collision/terrain_collision.html">Terrain Collision</a>
  467. </li>
  468. <li class="nav-item" data-depth="2">
  469. <a class="nav-link" href="../effect/water.html">Simple Water</a>
  470. </li>
  471. <li class="nav-item" data-depth="2">
  472. <a class="nav-link" href="../effect/post-processor_water.html">Post-Processor Water</a>
  473. </li>
  474. </ul>
  475. </li>
  476. <li class="nav-item" data-depth="1">
  477. <button class="nav-item-toggle"></button>
  478. <span class="nav-text">Camera</span>
  479. <ul class="nav-list">
  480. <li class="nav-item" data-depth="2">
  481. <a class="nav-link" href="../renderer/camera.html">Camera</a>
  482. </li>
  483. <li class="nav-item" data-depth="2">
  484. <a class="nav-link" href="../renderer/making_the_camera_follow_a_character.html">Follow a Character</a>
  485. </li>
  486. <li class="nav-item" data-depth="2">
  487. <a class="nav-link" href="../renderer/remote-controlling_the_camera.html">Remote-Controlling</a>
  488. </li>
  489. <li class="nav-item" data-depth="2">
  490. <a class="nav-link" href="../renderer/multiple_camera_views.html">Multiple Camera Views</a>
  491. </li>
  492. <li class="nav-item" data-depth="2">
  493. <a class="nav-link" href="../renderer/jme3_renderbuckets.html">Render Buckets</a>
  494. </li>
  495. </ul>
  496. </li>
  497. <li class="nav-item" data-depth="1">
  498. <button class="nav-item-toggle"></button>
  499. <span class="nav-text">User Interaction</span>
  500. <ul class="nav-list">
  501. <li class="nav-item" data-depth="2">
  502. <a class="nav-link" href="../input/input_handling.html">Input Handling</a>
  503. </li>
  504. <li class="nav-item" data-depth="2">
  505. <a class="nav-link" href="../input/combo_moves.html">Combo Moves</a>
  506. </li>
  507. <li class="nav-item" data-depth="2">
  508. <a class="nav-link" href="../input/mouse_picking.html">Mouse Picking</a>
  509. </li>
  510. </ul>
  511. </li>
  512. <li class="nav-item" data-depth="1">
  513. <button class="nav-item-toggle"></button>
  514. <a class="nav-link" href="../gui/topic_gui.html">Graphical User Interface</a>
  515. <ul class="nav-list">
  516. <li class="nav-item" data-depth="2">
  517. <button class="nav-item-toggle"></button>
  518. <span class="nav-text">Nifty GUI</span>
  519. <ul class="nav-list">
  520. <li class="nav-item" data-depth="3">
  521. <a class="nav-link" href="../gui/nifty_gui.html">Integration Tutorial</a>
  522. </li>
  523. <li class="nav-item" data-depth="3">
  524. <a class="nav-link" href="../gui/nifty_gui_best_practices.html">Best Practices</a>
  525. </li>
  526. <li class="nav-item" data-depth="3">
  527. <a class="nav-link" href="../gui/nifty_gui_scenarios.html">Scenarios</a>
  528. </li>
  529. </ul>
  530. </li>
  531. <li class="nav-item" data-depth="2">
  532. <a class="nav-link" href="../ui/hud.html">Head-Up Display (HUD)</a>
  533. </li>
  534. </ul>
  535. </li>
  536. <li class="nav-item" data-depth="1">
  537. <button class="nav-item-toggle"></button>
  538. <span class="nav-text">Virtual Reality</span>
  539. <ul class="nav-list">
  540. <li class="nav-item" data-depth="2">
  541. <a class="nav-link" href="../vr/virtualreality.html">Virtual Reality</a>
  542. </li>
  543. <li class="nav-item" data-depth="2">
  544. <a class="nav-link" href="../vr/virtualrealitycontrollers.html">Virtual Reality Controllers</a>
  545. </li>
  546. </ul>
  547. </li>
  548. </ul>
  549. </li>
  550. <li class="nav-item" data-depth="0">
  551. <ul class="nav-list">
  552. <li class="nav-item" data-depth="1">
  553. <button class="nav-item-toggle"></button>
  554. <a class="nav-link" href="../../physics/physics.html">Physics</a>
  555. <ul class="nav-list">
  556. <li class="nav-item" data-depth="2">
  557. <a class="nav-link" href="../../physics/bullet_multithreading.html">Multi-Threaded Physics</a>
  558. </li>
  559. <li class="nav-item" data-depth="2">
  560. <a class="nav-link" href="../../physics/collision/physics_listeners.html">Collision Detection</a>
  561. </li>
  562. <li class="nav-item" data-depth="2">
  563. <a class="nav-link" href="../../physics/joint/hinges_and_joints.html">Hinges and Joints</a>
  564. </li>
  565. <li class="nav-item" data-depth="2">
  566. <a class="nav-link" href="../../physics/control/walking_character.html">Walking Character</a>
  567. </li>
  568. <li class="nav-item" data-depth="2">
  569. <a class="nav-link" href="../../physics/control/ragdoll.html">Ragdoll</a>
  570. </li>
  571. <li class="nav-item" data-depth="2">
  572. <a class="nav-link" href="../../physics/control/vehicles.html">Vehicles</a>
  573. </li>
  574. <li class="nav-item" data-depth="2">
  575. <a class="nav-link" href="../../physics/control/softbody.html">Softbody</a>
  576. </li>
  577. <li class="nav-item" data-depth="2">
  578. <a class="nav-link" href="../../physics/bullet_pitfalls.html">Bullet Physics Pitfalls</a>
  579. </li>
  580. </ul>
  581. </li>
  582. </ul>
  583. </li>
  584. <li class="nav-item" data-depth="0">
  585. <ul class="nav-list">
  586. <li class="nav-item" data-depth="1">
  587. <button class="nav-item-toggle"></button>
  588. <span class="nav-text">Networking</span>
  589. <ul class="nav-list">
  590. <li class="nav-item" data-depth="2">
  591. <a class="nav-link" href="../../networking/networking.html">Networking (SpiderMonkey)</a>
  592. </li>
  593. <li class="nav-item" data-depth="2">
  594. <a class="nav-link" href="../../networking/headless_server.html">Headless Server</a>
  595. </li>
  596. <li class="nav-item" data-depth="2">
  597. <a class="nav-link" href="../../networking/monkey_zone.html">Multi-Player Demo Code</a>
  598. </li>
  599. <li class="nav-item" data-depth="2">
  600. <a class="nav-link" href="../../networking/networking_video_tutorials.html">Networking Video Tutorials</a>
  601. </li>
  602. </ul>
  603. </li>
  604. </ul>
  605. </li>
  606. <li class="nav-item" data-depth="0">
  607. <ul class="nav-list">
  608. <li class="nav-item" data-depth="1">
  609. <button class="nav-item-toggle"></button>
  610. <span class="nav-text">User Contributions</span>
  611. <ul class="nav-list">
  612. <li class="nav-item" data-depth="2">
  613. <a class="nav-link" href="../../contributions/contributions.html">User Made Utilities</a>
  614. </li>
  615. <li class="nav-item" data-depth="2">
  616. <button class="nav-item-toggle"></button>
  617. <span class="nav-text">Shader</span>
  618. <ul class="nav-list">
  619. <li class="nav-item" data-depth="3">
  620. <a class="nav-link" href="../../contributions/shader/shaderblow_project.html">ShaderBlow Project</a>
  621. </li>
  622. </ul>
  623. </li>
  624. <li class="nav-item" data-depth="2">
  625. <button class="nav-item-toggle"></button>
  626. <span class="nav-text">Landscapes</span>
  627. <ul class="nav-list">
  628. <li class="nav-item" data-depth="3">
  629. <a class="nav-link" href="../../contributions/lanscapes/vegetationsystem/vegetationsystem.html">Vegetation System</a>
  630. </li>
  631. </ul>
  632. </li>
  633. <li class="nav-item" data-depth="2">
  634. <button class="nav-item-toggle"></button>
  635. <span class="nav-text">Networking</span>
  636. <ul class="nav-list">
  637. <li class="nav-item" data-depth="3">
  638. <a class="nav-link" href="../../contributions/networking/open_game_finder.html">Open Game Finder</a>
  639. </li>
  640. </ul>
  641. </li>
  642. <li class="nav-item" data-depth="2">
  643. <button class="nav-item-toggle"></button>
  644. <span class="nav-text">Entity System</span>
  645. <ul class="nav-list">
  646. <li class="nav-item" data-depth="3">
  647. <a class="nav-link" href="#es/entitysystem.adoc">The Zay-ES Entity System</a>
  648. </li>
  649. </ul>
  650. </li>
  651. <li class="nav-item" data-depth="2">
  652. <button class="nav-item-toggle"></button>
  653. <span class="nav-text">Artificial Intelligence</span>
  654. <ul class="nav-list">
  655. <li class="nav-item" data-depth="3">
  656. <a class="nav-link" href="../../contributions/ai/recast.html">Recast Navigation</a>
  657. </li>
  658. <li class="nav-item" data-depth="3">
  659. <a class="nav-link" href="../../contributions/ai/building_recast.html">Updating and building Recast Native Bindings</a>
  660. </li>
  661. <li class="nav-item" data-depth="3">
  662. <a class="nav-link" href="../../contributions/ai/monkey_brains.html">Monkey Brains</a>
  663. </li>
  664. <li class="nav-item" data-depth="3">
  665. <a class="nav-link" href="../../contributions/ai/steer_behaviours.html">Steer Behaviours</a>
  666. </li>
  667. <li class="nav-item" data-depth="3">
  668. <a class="nav-link" href="../../contributions/ai/jme3_ai.html">jME3 Artificial Intelligence</a>
  669. </li>
  670. </ul>
  671. </li>
  672. <li class="nav-item" data-depth="2">
  673. <button class="nav-item-toggle"></button>
  674. <a class="nav-link" href="../../contributions/gui/topic_contributions_gui.html">GUI</a>
  675. <ul class="nav-list">
  676. <li class="nav-item" data-depth="3">
  677. <a class="nav-link" href="../../contributions/contributions.html#lemur-gui-library">Lemur - a native jME3 GUI library with scene graph tools</a>
  678. </li>
  679. <li class="nav-item" data-depth="3">
  680. <a class="nav-link" href="../../contributions/contributions.html#tonegodgui">tonegodGUI - a native jME3 GUI library</a>
  681. </li>
  682. <li class="nav-item" data-depth="3">
  683. <a class="nav-link" href="../../contributions/contributions.html#immediate-graphical-user-interface">Immediate graphical user interface</a>
  684. </li>
  685. </ul>
  686. </li>
  687. <li class="nav-item" data-depth="2">
  688. <button class="nav-item-toggle"></button>
  689. <span class="nav-text">Tools</span>
  690. <ul class="nav-list">
  691. <li class="nav-item" data-depth="3">
  692. <a class="nav-link" href="../../contributions/tools/navigation.html">Mercator Projection Tool (Marine Navigation)</a>
  693. </li>
  694. <li class="nav-item" data-depth="3">
  695. <a class="nav-link" href="../../contributions/tools/charts.html">Visualizing Maps in JME3 (Marine Charts)</a>
  696. </li>
  697. </ul>
  698. </li>
  699. <li class="nav-item" data-depth="2">
  700. <button class="nav-item-toggle"></button>
  701. <span class="nav-text">Projects</span>
  702. <ul class="nav-list">
  703. <li class="nav-item" data-depth="3">
  704. <a class="nav-link" href="../../contributions/projects/rise_of_mutants_project.html">Rise of Mutants Project</a>
  705. </li>
  706. </ul>
  707. </li>
  708. </ul>
  709. </li>
  710. </ul>
  711. </li>
  712. <li class="nav-item" data-depth="0">
  713. <ul class="nav-list">
  714. <li class="nav-item" data-depth="1">
  715. <button class="nav-item-toggle"></button>
  716. <a class="nav-link" href="../../sdk/sdk.html">SDK</a>
  717. <ul class="nav-list">
  718. <li class="nav-item" data-depth="2">
  719. <button class="nav-item-toggle"></button>
  720. <span class="nav-text">Video Tutorials</span>
  721. <ul class="nav-list">
  722. <li class="nav-item" data-depth="3">
  723. <button class="nav-item-toggle"></button>
  724. <span class="nav-text">SDK Use Case Tutorials</span>
  725. <ul class="nav-list">
  726. <li class="nav-item" data-depth="4">
  727. <a class="nav-link" href="http://www.youtube.com/watch?v=-OzRZscLlHY">Demo 1 (Quixote demo)</a>
  728. </li>
  729. <li class="nav-item" data-depth="4">
  730. <a class="nav-link" href="http://www.youtube.com/watch?v=6-YWxD3JByE">Demo 2 (Models and Materials)</a>
  731. </li>
  732. </ul>
  733. </li>
  734. <li class="nav-item" data-depth="3">
  735. <button class="nav-item-toggle"></button>
  736. <span class="nav-text">SDK Tutorials</span>
  737. <ul class="nav-list">
  738. <li class="nav-item" data-depth="4">
  739. <a class="nav-link" href="http://www.youtube.com/watch?v=M1_0pbeyJzI">Basics</a>
  740. </li>
  741. <li class="nav-item" data-depth="4">
  742. <a class="nav-link" href="http://www.youtube.com/watch?v=nL7woH40i5c">Importing Models</a>
  743. </li>
  744. <li class="nav-item" data-depth="4">
  745. <a class="nav-link" href="http://www.youtube.com/watch?v=DUmgAjiNzhY">Dragging&amp;Dropping Nodes</a>
  746. </li>
  747. <li class="nav-item" data-depth="4">
  748. <a class="nav-link" href="http://www.youtube.com/watch?v=ntPAmtsQ6eM">Scene Composing</a>
  749. </li>
  750. <li class="nav-item" data-depth="4">
  751. <a class="nav-link" href="http://www.youtube.com/watch?v=zgPV3W6dD4s">Terrain with Collision Shape</a>
  752. </li>
  753. <li class="nav-item" data-depth="4">
  754. <a class="nav-link" href="http://www.youtube.com/watch?v=Feu3-mrpolc">Working with Materials</a>
  755. </li>
  756. <li class="nav-item" data-depth="4">
  757. <a class="nav-link" href="http://www.youtube.com/watch?v=MNDiZ9YHIpM">Custom Controls</a>
  758. </li>
  759. <li class="nav-item" data-depth="4">
  760. <a class="nav-link" href="http://www.youtube.com/watch?v=oZnssg8TBWQ">WebStart Deployment</a>
  761. </li>
  762. <li class="nav-item" data-depth="4">
  763. <a class="nav-link" href="http://www.youtube.com/watch?v=D7JM4VMKqPc">Animation and Effect TrackEditing</a>
  764. </li>
  765. </ul>
  766. </li>
  767. </ul>
  768. </li>
  769. <li class="nav-item" data-depth="2">
  770. <button class="nav-item-toggle"></button>
  771. <span class="nav-text">Getting Started</span>
  772. <ul class="nav-list">
  773. <li class="nav-item" data-depth="3">
  774. <a class="nav-link" href="../../sdk/update_center.html">Updating jMonkeyEngine SDK</a>
  775. </li>
  776. <li class="nav-item" data-depth="3">
  777. <a class="nav-link" href="../../sdk/troubleshooting.html">Troubleshooting</a>
  778. </li>
  779. </ul>
  780. </li>
  781. <li class="nav-item" data-depth="2">
  782. <button class="nav-item-toggle"></button>
  783. <span class="nav-text">Java Development Features</span>
  784. <ul class="nav-list">
  785. <li class="nav-item" data-depth="3">
  786. <a class="nav-link" href="../../sdk/project_creation.html">Project Creation</a>
  787. </li>
  788. <li class="nav-item" data-depth="3">
  789. <a class="nav-link" href="../../sdk/code_editor.html">Code Editor and Palette</a>
  790. </li>
  791. <li class="nav-item" data-depth="3">
  792. <a class="nav-link" href="../../sdk/version_control.html">File Version Control</a>
  793. </li>
  794. <li class="nav-item" data-depth="3">
  795. <a class="nav-link" href="../../sdk/debugging_profiling_testing.html">Debug, Profile, Test</a>
  796. </li>
  797. <li class="nav-item" data-depth="3">
  798. <button class="nav-item-toggle"></button>
  799. <a class="nav-link" href="../../sdk/application_deployment.html">Application Deployment</a>
  800. <ul class="nav-list">
  801. <li class="nav-item" data-depth="4">
  802. <a class="nav-link" href="../../sdk/default_build_script.html">Default Build Script</a>
  803. </li>
  804. <li class="nav-item" data-depth="4">
  805. <a class="nav-link" href="../../sdk/android.html">Android</a>
  806. </li>
  807. <li class="nav-item" data-depth="4">
  808. <a class="nav-link" href="../../sdk/android_cheat_sheet.html">Android Cheat Sheet</a>
  809. </li>
  810. <li class="nav-item" data-depth="4">
  811. <a class="nav-link" href="../../sdk/ios.html">iOS</a>
  812. </li>
  813. </ul>
  814. </li>
  815. </ul>
  816. </li>
  817. <li class="nav-item" data-depth="2">
  818. <button class="nav-item-toggle"></button>
  819. <span class="nav-text">Unique Features</span>
  820. <ul class="nav-list">
  821. <li class="nav-item" data-depth="3">
  822. <button class="nav-item-toggle"></button>
  823. <a class="nav-link" href="../../sdk/model_loader_and_viewer.html">Import, View, Convert Models</a>
  824. <ul class="nav-list">
  825. <li class="nav-item" data-depth="4">
  826. <a class="nav-link" href="../../sdk/asset_packs.html">Asset Packs</a>
  827. </li>
  828. </ul>
  829. </li>
  830. <li class="nav-item" data-depth="3">
  831. <a class="nav-link" href="../../sdk/scene_explorer.html">The SceneExplorer</a>
  832. </li>
  833. <li class="nav-item" data-depth="3">
  834. <a class="nav-link" href="../../sdk/scene_composer.html">Composing a Scene</a>
  835. </li>
  836. <li class="nav-item" data-depth="3">
  837. <a class="nav-link" href="../../sdk/terrain_editor.html">Terrain Editor</a>
  838. </li>
  839. <li class="nav-item" data-depth="3">
  840. <a class="nav-link" href="../../sdk/sample_code.html">Sample Code</a>
  841. </li>
  842. <li class="nav-item" data-depth="3">
  843. <a class="nav-link" href="../../sdk/material_editing.html">Material Editing</a>
  844. </li>
  845. <li class="nav-item" data-depth="3">
  846. <a class="nav-link" href="../../sdk/font_creation.html">Creating Bitmap Fonts</a>
  847. </li>
  848. <li class="nav-item" data-depth="3">
  849. <button class="nav-item-toggle"></button>
  850. <a class="nav-link" href="https://hub.jmonkeyengine.org/t/effecttrack-and-audiotrack-editing-in-the-sdk/23378">Audio and Effect Track Editing</a>
  851. <ul class="nav-list">
  852. <li class="nav-item" data-depth="4">
  853. <a class="nav-link" href="https://www.youtube.com/watch?v=D7JM4VMKqPc">Video: Effect and AudioTrack editing in jMonkeyEngine 3 sdk</a>
  854. </li>
  855. </ul>
  856. </li>
  857. <li class="nav-item" data-depth="3">
  858. <a class="nav-link" href="../../sdk/filters.html">Post-Processor Filter Editor and Viewer</a>
  859. </li>
  860. <li class="nav-item" data-depth="3">
  861. <a class="nav-link" href="../app/state/application_states.html">Application States</a>
  862. </li>
  863. <li class="nav-item" data-depth="3">
  864. <a class="nav-link" href="control/custom_controls.html">Custom Controls</a>
  865. </li>
  866. <li class="nav-item" data-depth="3">
  867. <a class="nav-link" href="../../sdk/vehicle_creator.html">Vehicle Creator</a>
  868. </li>
  869. </ul>
  870. </li>
  871. <li class="nav-item" data-depth="2">
  872. <button class="nav-item-toggle"></button>
  873. <span class="nav-text">Advanced Usage</span>
  874. <ul class="nav-list">
  875. <li class="nav-item" data-depth="3">
  876. <a class="nav-link" href="../../sdk/build_platform.html">Building jMonkeyEngine SDK</a>
  877. </li>
  878. <li class="nav-item" data-depth="3">
  879. <a class="nav-link" href="../../sdk/use_own_jme.html#.adoc">Using your own (modified) version of jME3 in jMonkeyEngine SDK</a>
  880. </li>
  881. <li class="nav-item" data-depth="3">
  882. <a class="nav-link" href="../../sdk/increasing_heap_memory.html">Increasing Heap Memory</a>
  883. </li>
  884. <li class="nav-item" data-depth="3">
  885. <a class="nav-link" href="../../sdk/log_files.html">Log Files</a>
  886. </li>
  887. </ul>
  888. </li>
  889. <li class="nav-item" data-depth="2">
  890. <button class="nav-item-toggle"></button>
  891. <span class="nav-text">Available external plugins</span>
  892. <ul class="nav-list">
  893. <li class="nav-item" data-depth="3">
  894. <a class="nav-link" href="../../contributions/contributions.html">Contributions</a>
  895. </li>
  896. <li class="nav-item" data-depth="3">
  897. <a class="nav-link" href="../../sdk/neotexture.html">Neo Texture Editor for procedural textures</a>
  898. </li>
  899. <li class="nav-item" data-depth="3">
  900. <a class="nav-link" href="http://www.youtube.com/watch?v=yS9a9o4WzL8">Video: Mesh Tool &amp; Physics Editor</a>
  901. </li>
  902. </ul>
  903. </li>
  904. <li class="nav-item" data-depth="2">
  905. <button class="nav-item-toggle"></button>
  906. <a class="nav-link" href="../../sdk/development.html">Developing plugins for jMonkeyEngine SDK</a>
  907. <ul class="nav-list">
  908. <li class="nav-item" data-depth="3">
  909. <a class="nav-link" href="../../sdk/development/setup.html">Creating a plugin</a>
  910. </li>
  911. <li class="nav-item" data-depth="3">
  912. <a class="nav-link" href="../../sdk/development/general.html">Creating components</a>
  913. </li>
  914. <li class="nav-item" data-depth="3">
  915. <a class="nav-link" href="../../sdk/development/scene.html">The Main Scene</a>
  916. </li>
  917. <li class="nav-item" data-depth="3">
  918. <a class="nav-link" href="../../sdk/development/sceneexplorer.html">The Scene Explorer</a>
  919. </li>
  920. <li class="nav-item" data-depth="3">
  921. <a class="nav-link" href="../../sdk/development/projects_assets.html">Projects and Assets</a>
  922. </li>
  923. <li class="nav-item" data-depth="3">
  924. <a class="nav-link" href="../../sdk/development/extension_library.html">Create a library plugin from a jar file</a>
  925. </li>
  926. <li class="nav-item" data-depth="3">
  927. <a class="nav-link" href="../../sdk/development/model_loader.html">Create a new or custom model filetype and loader</a>
  928. </li>
  929. </ul>
  930. </li>
  931. </ul>
  932. </li>
  933. </ul>
  934. </li>
  935. </ul>
  936. </nav>
  937. </div>
  938. <div class="nav-panel-explore" data-panel="explore">
  939. <div class="context">
  940. <span class="title">JME</span>
  941. <span class="version">3.4</span>
  942. </div>
  943. <ul class="components">
  944. <li class="component is-current">
  945. <span class="title">JME</span>
  946. <ul class="versions">
  947. <li class="version">
  948. <a href="../../../3.8/documentation.html">3.8</a>
  949. </li>
  950. <li class="version is-current">
  951. <a href="../../documentation.html">3.4</a>
  952. </li>
  953. <li class="version">
  954. <a href="../../../3.3/documentation.html">3.3</a>
  955. </li>
  956. <li class="version">
  957. <a href="../../../3.2/documentation.html">3.2</a>
  958. </li>
  959. </ul>
  960. </li>
  961. <li class="component">
  962. <span class="title">Wiki Contribution</span>
  963. <ul class="versions">
  964. <li class="version">
  965. <a href="../../../../docs-wiki/3.8/wiki_contributor.html">3.8</a>
  966. </li>
  967. </ul>
  968. </li>
  969. <li class="component">
  970. <span class="title">Wiki UI</span>
  971. <ul class="versions">
  972. <li class="version">
  973. <a href="../../../../wiki-ui/index.html">master</a>
  974. </li>
  975. </ul>
  976. </li>
  977. </ul>
  978. </div>
  979. </div>
  980. </aside>
  981. </div>
  982. <main class="article">
  983. <div class="toolbar" role="navigation">
  984. <button class="nav-toggle"></button>
  985. <nav class="breadcrumbs" aria-label="breadcrumbs">
  986. <ul>
  987. <li><a href="../../documentation.html">JME</a></li>
  988. <li>Scene Graph</li>
  989. <li><a href="spatial.html">Spatial: Node vs Geometry</a></li>
  990. </ul>
  991. </nav>
  992. <div class="page-versions">
  993. <button class="version-menu-toggle" title="Show other versions of page">3.4</button>
  994. <div class="version-menu">
  995. <a class="version" href="../../../3.8/core/scene/spatial.html">3.8</a>
  996. <a class="version is-current" href="spatial.html">3.4</a>
  997. <a class="version" href="../../../3.3/core/scene/spatial.html">3.3</a>
  998. <a class="version" href="../../../3.2/core/scene/spatial.html">3.2</a>
  999. </div>
  1000. </div>
  1001. <div class="edit-this-page"><a href="https://github.com/jMonkeyEngine/wiki/edit/v3.4/docs/modules/core/pages/scene/spatial.adoc">Edit this Page</a></div>
  1002. </div>
  1003. <div class="content">
  1004. <article class="doc">
  1005. <h1 class="page">Spatial</h1>
  1006. <div id="preamble">
  1007. <div class="sectionbody">
  1008. <div class="paragraph">
  1009. <p>This is an introduction to the concept of Spatials, the elements of the 3D scene graph. The scene graph is a data structure that manages all objects in your 3D world. For example, the scene graph keeps track of the 3D models that you load and position. When you extend a Java class from com.jme3.app.SimpleApplication, you automatically inherit the scene graph and its rootNode.</p>
  1010. </div>
  1011. <div class="paragraph">
  1012. <p>The rootNode is the central element of the scene graph. Even if the scene graph is empty, it always contains at least the rootNode. We <em>attach</em> Spatials to the rootNode. Attached Spatials are always in a <em>parent-child relationship</em>. Every time you attach a Spatial to something, it is implicitly detached from its previous parent. A Spatial can have only one parent. A Spatial can have several children.</p>
  1013. </div>
  1014. <div class="paragraph">
  1015. <p>If you think you need to understand the scene graph concept better, please read <a href="../../tutorials/concepts/scenegraph_for_dummies.html" class="xref page">Scenegraph for dummies</a> first.</p>
  1016. </div>
  1017. </div>
  1018. </div>
  1019. <div class="sect1">
  1020. <h2 id="node-versus-geometry"><a class="anchor" href="#node-versus-geometry"></a>Node versus Geometry</h2>
  1021. <div class="sectionbody">
  1022. <div class="paragraph">
  1023. <p>In your Java code, a Spatial is either an instance of <code>com.jme3.scene.Node</code> or a <code>com.jme3.scene.Geometry</code> instance. You use the two types of Spatials for different purposes:</p>
  1024. </div>
  1025. <div class="imageblock text-center">
  1026. <div class="content">
  1027. <img src="../../tutorials/_images/concepts/scene-graph.png" alt="scene-graph.png" width="" height="">
  1028. </div>
  1029. </div>
  1030. <table class="tableblock frame-all grid-all stretch">
  1031. <colgroup>
  1032. <col style="width: 10%;">
  1033. <col style="width: 45%;">
  1034. <col style="width: 45%;">
  1035. </colgroup>
  1036. <thead>
  1037. <tr>
  1038. <th class="tableblock halign-left valign-top"></th>
  1039. <th class="tableblock halign-left valign-top" colspan="2">com.jme3.scene.Spatial</th>
  1040. </tr>
  1041. </thead>
  1042. <tbody>
  1043. <tr>
  1044. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1045. <p>Purpose:</p>
  1046. </div></div></td>
  1047. <td class="tableblock halign-left valign-top" colspan="2"><div class="content"><div class="paragraph">
  1048. <p>A Spatial is an abstract data structure that stores user data and transformations (= translation, rotation, scale) of elements of the 3D scene graph. Spatials can be saved and loaded using the <a href="../asset/asset_manager.html" class="xref page">Asset Manager</a>.</p>
  1049. </div></div></td>
  1050. </tr>
  1051. <tr>
  1052. <td class="tableblock halign-left valign-top"><div class="content"></div></td>
  1053. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1054. <p>com.jme3.scene.Geometry</p>
  1055. </div></div></td>
  1056. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1057. <p>com.jme3.scene.Node</p>
  1058. </div></div></td>
  1059. </tr>
  1060. <tr>
  1061. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1062. <p>Visibility:</p>
  1063. </div></div></td>
  1064. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1065. <p>A Geometry represents a <strong>visible</strong> 3D object in the scene graph.</p>
  1066. </div></div></td>
  1067. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1068. <p>A Node is an <strong>invisible &#8220;handle&#8221;</strong> for a group of Spatials in the scene graph.</p>
  1069. </div></div></td>
  1070. </tr>
  1071. <tr>
  1072. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1073. <p>Purpose:</p>
  1074. </div></div></td>
  1075. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1076. <p>Use Geometries to represent an object&#8217;s <strong>look</strong>: Every Geometry contains a polygon mesh and a material, specifying its shape, color, texture, and opacity/transparency.<br>
  1077. You attach Geometries to Nodes.</p>
  1078. </div></div></td>
  1079. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1080. <p>Use Nodes to <strong>structure and group</strong> Geometries and other Nodes. Every Node is attached to one parent node, and each node can have zero or more children (Nodes or Geometries) attached to itself.<br>
  1081. <strong>When you transform (move, rotate, etc) a parent node, all its children are transformed (moved, rotated, etc).</strong></p>
  1082. </div></div></td>
  1083. </tr>
  1084. <tr>
  1085. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1086. <p>Content:</p>
  1087. </div></div></td>
  1088. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1089. <p>Transformations; custom user data;<br>
  1090. mesh and material;</p>
  1091. </div></div></td>
  1092. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1093. <p>Transformations; custom user data;<br>
  1094. no mesh, no material.</p>
  1095. </div></div></td>
  1096. </tr>
  1097. <tr>
  1098. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1099. <p>Examples:</p>
  1100. </div></div></td>
  1101. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1102. <p>Box, sphere, player, building, terrain, vehicle, missiles, NPCs, etc…</p>
  1103. </div></div></td>
  1104. <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
  1105. <p>rootNode, guiNode, audioNode, a custom grouping node such as vehicleNode or shipNode with passengers attached, etc.</p>
  1106. </div></div></td>
  1107. </tr>
  1108. </tbody>
  1109. </table>
  1110. <div class="admonitionblock important">
  1111. <table>
  1112. <tr>
  1113. <td class="icon">
  1114. <i class="fa icon-important" title="Important"></i>
  1115. </td>
  1116. <td class="content">
  1117. <div class="paragraph">
  1118. <p>You never create a Spatial with <code><strike>Spatial s = new Spatial();</strike></code>! A Spatial is an abstract concept, like a mammal (there is no actual creature called &#8220;mammal&#8221; walking around here). You create either a com.jme3.scene.Node or com.jme3.scene.Geometry instance. Some methods, however, require a <code>Spatial</code> type as argument: This is because they are able to accept both Nodes and Geometries as arguments. In this case, you simply <em>cast</em> a Node or Geometry to Spatial.</p>
  1119. </div>
  1120. </td>
  1121. </tr>
  1122. </table>
  1123. </div>
  1124. <div class="sect2">
  1125. <h3 id="mesh"><a class="anchor" href="#mesh"></a>Mesh</h3>
  1126. <div class="paragraph">
  1127. <p>The polygon <a href="mesh.html" class="xref page">Mesh</a> inside a Geometry can be one of three things:</p>
  1128. </div>
  1129. <div class="ulist">
  1130. <ul>
  1131. <li>
  1132. <p><strong>Shapes:</strong> The simplest type of Meshes are jME&#8217;s default <a href="shape/shape.html" class="xref page">Shape</a>s such as cubes and spheres. You can use several Shapes to build complex Geometries. Shapes are built-in and can be created without using the AssetManager.</p>
  1133. </li>
  1134. <li>
  1135. <p><strong>3D Models:</strong> <a href="3d_models.html" class="xref page">3D models and scenes</a> are also made up of meshes, but are more complex than Shapes. You create Models and Scenes in external 3D Mesh Editors and export them as Ogre XML or Wavefront OBJ. Use the <a href="../asset/asset_manager.html" class="xref page">Asset Manager</a> to load models into a your jME3 game.</p>
  1136. </li>
  1137. <li>
  1138. <p><strong>Custom Meshes:</strong> Advanced users can create <a href="custom_meshes.html" class="xref page">Custom Meshes</a> programmatically.</p>
  1139. </li>
  1140. </ul>
  1141. </div>
  1142. </div>
  1143. </div>
  1144. </div>
  1145. <div class="sect1">
  1146. <h2 id="what-is-a-clone"><a class="anchor" href="#what-is-a-clone"></a>What is a Clone?</h2>
  1147. <div class="sectionbody">
  1148. <div class="paragraph">
  1149. <p>Cloned spatials share the same mesh, while each cloned spatial can have its own local transformation (translation, rotation, and scale) in the scene. This means you only use <code>clone()</code> on spatials whose meshes never change. The most common use case for cloning is when you use several Spatials that are based on the same <a href="shape/shape.html" class="xref page">Shape</a>s (e.g. trees, crates).</p>
  1150. </div>
  1151. <div class="paragraph">
  1152. <p>The second use case is: When you load a model using <code>loadModel()</code> from the AssetManager, you may automatically get a `clone()`ed object. In particular:</p>
  1153. </div>
  1154. <div class="ulist">
  1155. <ul>
  1156. <li>
  1157. <p>If the model is not animated (it has no <code><a href="../animation/animation.html" class="xref page">AnimControl</a></code>), jME loads a clone. All clones share one mesh object in order to use less memory.</p>
  1158. </li>
  1159. <li>
  1160. <p>If the model is animated (it has a <code><a href="../animation/animation.html" class="xref page">AnimControl</a></code>), then <code>loadModel()</code> duplicates the mesh for each loaded instance. (Uses more memory, but can animate.)</p>
  1161. </li>
  1162. </ul>
  1163. </div>
  1164. <div class="paragraph">
  1165. <p>Usually there is no need to manually use any of the <code>clone()</code> methods on models. Using the <a href="../asset/asset_manager.html" class="xref page">Asset Manager</a>'s <code>loadModel()</code> method will automatically do the right thing for your models.</p>
  1166. </div>
  1167. <div class="admonitionblock note">
  1168. <table>
  1169. <tr>
  1170. <td class="icon">
  1171. <i class="fa icon-note" title="Note"></i>
  1172. </td>
  1173. <td class="content">
  1174. <div class="paragraph">
  1175. <p>&#8220;Box&#8221; worlds are not made up of statically cloned <code>Box()</code> shapes, this would still be too slow for large worlds. To learn how to make real fast box worlds, search the web for <em>voxelization</em> techniques.</p>
  1176. </div>
  1177. </td>
  1178. </tr>
  1179. </table>
  1180. </div>
  1181. </div>
  1182. </div>
  1183. <div class="sect1">
  1184. <h2 id="how-to-add-fields-and-methods-to-a-spatial"><a class="anchor" href="#how-to-add-fields-and-methods-to-a-spatial"></a>How to Add Fields and Methods to a Spatial</h2>
  1185. <div class="sectionbody">
  1186. <div class="paragraph">
  1187. <p>You can include custom user data –that is, custom Java objects and methods– in Nodes and Geometries. This is very useful for maintaining information about a game element, such as health, budget, ammunition, inventory, equipment, etc for players, or landmark locations for terrains, and much more.</p>
  1188. </div>
  1189. <div class="admonitionblock important">
  1190. <table>
  1191. <tr>
  1192. <td class="icon">
  1193. <i class="fa icon-important" title="Important"></i>
  1194. </td>
  1195. <td class="content">
  1196. <div class="paragraph">
  1197. <p>You want to add custom accessor methods to a spatial? Do not extend <code>Node</code> or <code>Geometry</code>, use <a href="control/custom_controls.html" class="xref page">Custom Controls</a> instead. You want to add custom fields to a spatial? Do not extend <code>Node</code> or <code>Geometry</code>, use the built-in <code>setUserData()</code> method instead. Where ever the Spatial is accessible, you can easily access the object&#8217;s class fields (user data) and accessors (control methods) this way.</p>
  1198. </div>
  1199. </td>
  1200. </tr>
  1201. </table>
  1202. </div>
  1203. <div class="paragraph">
  1204. <p>This first example adds an integer field named <code>health</code> to the Spatial <code>playerNode</code>, and initializes it to 100.</p>
  1205. </div>
  1206. <div class="listingblock">
  1207. <div class="content">
  1208. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">playerNode.setUserData("health", 100);</code></pre>
  1209. </div>
  1210. </div>
  1211. <div class="paragraph">
  1212. <p>The second example adds a set of custom accessor methods to the player object. You create a <a href="control/custom_controls.html" class="xref page">custom PlayerControl() class</a> and you add this control to the Spatial:</p>
  1213. </div>
  1214. <div class="listingblock">
  1215. <div class="content">
  1216. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">playerNode.addControl(new PlayerControl());</code></pre>
  1217. </div>
  1218. </div>
  1219. <div class="paragraph">
  1220. <p>In your PlayerControl() class, you define custom methods that set and get your user data in the <code>spatial</code> object. For example, the control could add accessors that set and get the player&#8217;s health:</p>
  1221. </div>
  1222. <div class="listingblock">
  1223. <div class="content">
  1224. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public int getHealth() {
  1225. return (Integer)spatial.getUserData("health");
  1226. }
  1227. public void setHealth(int h) {
  1228. spatial.setUserData("health",h);
  1229. }</code></pre>
  1230. </div>
  1231. </div>
  1232. <div class="paragraph">
  1233. <p>Elsewhere in your code, you can access this data wherever you have access to the Spatial <code>playerNode</code>.</p>
  1234. </div>
  1235. <div class="listingblock">
  1236. <div class="content">
  1237. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">health = playerNode.getControl(PlayerControl.class).getHealth();
  1238. ...
  1239. playerNode.getControl(PlayerControl.class).setHealth(99);</code></pre>
  1240. </div>
  1241. </div>
  1242. <div class="ulist">
  1243. <ul>
  1244. <li>
  1245. <p>You can add as many data objects (of String, Boolean, Integer, Float, Array types) to a Spatial as you want. Just make sure to label them with unique case-sensitive strings (<code>health</code>, <code>Inventory</code>, <code>equipment</code>, etc).</p>
  1246. </li>
  1247. <li>
  1248. <p>The saved data can even be a custom Java object if you make the custom Java class <a href="../export/save_and_load.html#custom-savable-class" class="xref page">implement the Savable interface</a>!</p>
  1249. </li>
  1250. <li>
  1251. <p>When you save a Spatial as a .j3o file, the custom data is saved, too, and all Savables are restored the next time you load the .j3o!</p>
  1252. </li>
  1253. </ul>
  1254. </div>
  1255. <div class="paragraph">
  1256. <p>This is how you list all data keys that are already defined for one Spatial:</p>
  1257. </div>
  1258. <div class="listingblock">
  1259. <div class="content">
  1260. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">for(String key : spatial.getUserDataKeys()){
  1261. System.out.println(spatial.getName()+"'s keys: "+key);
  1262. }</code></pre>
  1263. </div>
  1264. </div>
  1265. </div>
  1266. </div>
  1267. <div class="sect1">
  1268. <h2 id="how-to-access-a-named-sub-mesh"><a class="anchor" href="#how-to-access-a-named-sub-mesh"></a>How to Access a Named Sub-Mesh</h2>
  1269. <div class="sectionbody">
  1270. <div class="paragraph">
  1271. <p>Often after you load a scene or model, you need to access a part of it as an individual Geometry in the scene graph. Maybe you want to swap a character&#8217;s weapon, or you want to play a door-opening animation. First you need to know the unique name of the sub-mesh.</p>
  1272. </div>
  1273. <div class="olist arabic">
  1274. <ol class="arabic">
  1275. <li>
  1276. <p>Open the model in a 3D mesh editor, or in the jMonkeyEngine SDK&#8217;s Scene Composer.</p>
  1277. </li>
  1278. <li>
  1279. <p>Find out the existing names of sub-meshes in the model.</p>
  1280. </li>
  1281. <li>
  1282. <p>Assign unique names to sub-meshes in the model if necessary.</p>
  1283. </li>
  1284. </ol>
  1285. </div>
  1286. <div class="paragraph">
  1287. <p>In the following example, the Node <code>house</code> is the loaded model. The sub-meshes in the Node are called its children. The String, here <code>door 12</code>, is the name of the mesh that you are searching.</p>
  1288. </div>
  1289. <div class="listingblock">
  1290. <div class="content">
  1291. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">Geometry submesh = (Geometry) houseScene.getChild("door 12");</code></pre>
  1292. </div>
  1293. </div>
  1294. </div>
  1295. </div>
  1296. <div class="sect1">
  1297. <h2 id="what-is-culling"><a class="anchor" href="#what-is-culling"></a>What is Culling?</h2>
  1298. <div class="sectionbody">
  1299. <div class="paragraph">
  1300. <p>There are two types of culling: Face culling, and view frustum culling.</p>
  1301. </div>
  1302. <div class="paragraph">
  1303. <p><strong>Face culling</strong> means not drawing certain polygons of a mesh. Face culling behaviour is a property of the material.</p>
  1304. </div>
  1305. <div class="paragraph">
  1306. <p>Usage: The &#8220;inside&#8221; of a mesh (the so called backface) is typically never visible to the player, and as an optimization, the <code>Back</code> mode skips calculating all backfaces by default. Activating the <code>Off</code> or <code>Front</code> modes can be useful when you are debugging <a href="custom_meshes.html" class="xref page">custom meshes</a> and try to identify accidental inside-out faces.</p>
  1307. </div>
  1308. <div class="paragraph">
  1309. <p>You can switch the com.jme3.material.RenderState.FaceCullMode to either:</p>
  1310. </div>
  1311. <div class="ulist">
  1312. <ul>
  1313. <li>
  1314. <p><code>FaceCullMode.Back</code> (default) – Only the frontsides of a mesh are drawn. Backface culling is the default behaviour.</p>
  1315. </li>
  1316. <li>
  1317. <p><code>FaceCullMode.Front</code> – Only the backsides of a mesh are drawn. A mesh with frontface culling will most likely be invisible. Used for debugging &#8220;inside-out&#8221; custom meshes.</p>
  1318. </li>
  1319. <li>
  1320. <p><code>FaceCullMode.FrontAndBack</code> – Use this to make a mesh temporarily invisible.</p>
  1321. </li>
  1322. <li>
  1323. <p><code>FaceCullMode.Off</code> – Every side of the mesh is drawn. Looks normal, but slows down large scenes.</p>
  1324. </li>
  1325. </ul>
  1326. </div>
  1327. <div class="paragraph">
  1328. <p>Example:</p>
  1329. </div>
  1330. <div class="listingblock">
  1331. <div class="content">
  1332. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">material.getAdditionalRenderState().setFaceCullMode(FaceCullMode.FrontAndBack);</code></pre>
  1333. </div>
  1334. </div>
  1335. <div class="paragraph">
  1336. <p><strong>View frustum culling</strong> refers to not drawing (and not even calculating) certain whole models in the scene. At any given moment, half of the scene is behind the player and out of sight anyway. View frustum culling is an optimization to not calculate scene elements that are not visible – elements that are &#8220;outside&#8221; the view frustum.</p>
  1337. </div>
  1338. <div class="paragraph">
  1339. <p>The decision what is visible and what not, is done automatically by the engine (<code>CullHint.Dynamic</code>). Optionally, you can manually control whether the engine culls individual spatials (and children) from the scene graph:</p>
  1340. </div>
  1341. <div class="ulist">
  1342. <ul>
  1343. <li>
  1344. <p><code>CullHint.Dynamic</code> – Default, faster because it doesn&#8217;t waste time with objects that are out of view.</p>
  1345. </li>
  1346. <li>
  1347. <p><code>CullHint.Never</code> – Calculate and draw everything always (even if it does not end up on the user&#8217;s screen because it&#8217;s out of sight). Slower, but can be used while debugging custom meshes.</p>
  1348. </li>
  1349. <li>
  1350. <p><code>CullHint.Always</code> – The whole spatial is culled and is not visible. A fast way to hide a Spatial temporarily. Culling a Spatial is faster then detaching it, but it uses more memory.</p>
  1351. </li>
  1352. <li>
  1353. <p><code>CullHint.Inherit</code> – Inherit culling behaviour from parent node.</p>
  1354. </li>
  1355. </ul>
  1356. </div>
  1357. <div class="paragraph">
  1358. <p>Example:</p>
  1359. </div>
  1360. <div class="listingblock">
  1361. <div class="content">
  1362. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">spatial.setCullHint(CullHint.Never); // always drawn</code></pre>
  1363. </div>
  1364. </div>
  1365. </div>
  1366. </div>
  1367. <div class="sect1">
  1368. <h2 id="see-also"><a class="anchor" href="#see-also"></a>See also</h2>
  1369. <div class="sectionbody">
  1370. <div class="ulist">
  1371. <ul>
  1372. <li>
  1373. <p><a href="../../tutorials/concepts/optimization.html" class="xref page">Optimization</a> – The GeometryBatchFactory class batches several Geometries into meshes with each their own texture.</p>
  1374. </li>
  1375. <li>
  1376. <p><a href="traverse_scenegraph.html" class="xref page">Traverse SceneGraph</a> – Find any Node or Geometry in the scenegraph.</p>
  1377. </li>
  1378. </ul>
  1379. </div>
  1380. </div>
  1381. </div>
  1382. <nav class="pagination">
  1383. <span class="prev"><a href="traverse_scenegraph.html">Traverse SceneGraph</a></span>
  1384. <span class="next"><a href="mesh.html">Mesh</a></span>
  1385. </nav>
  1386. </article>
  1387. <aside class="toc sidebar" data-title="Contents" data-levels="2">
  1388. <div class="toc-menu"></div>
  1389. </aside>
  1390. </div>
  1391. </main>
  1392. </div>
  1393. <footer class="footer">
  1394. <p>Copyright 2020 jMonkeyEngine Wiki Contributors. Licensed BSD-3.</p>
  1395. </footer>
  1396. <script src="../../../../_/js/vendor/docsearch.min.js"></script>
  1397. <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js -->
  1398. <script>
  1399. var search = docsearch({
  1400. apiKey: 'a736b6d93de805e26ec2f49b55013fbd',
  1401. indexName: 'jmonkeyengine',
  1402. inputSelector: '#search-input',
  1403. autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
  1404. algoliaOptions: { hitsPerPage: 10 }
  1405. }).autocomplete
  1406. search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
  1407. function focusSearchInput () { document.querySelector('#search-input').focus() }
  1408. if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput)
  1409. </script>
  1410. <script src="../../../../_/js/site.js"></script>
  1411. <script async src="../../../../_/js/vendor/highlight.js"></script>
  1412. </body>
  1413. </html>