faq.html 103 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559
  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>Frequently Asked Questions :: jMonkeyEngine Docs</title>
  7. <link rel="canonical" href="https://wiki.jmonkeyengine.org/docs/3.8/tutorials/concepts/faq.html">
  8. <link rel="prev" href="optimization.html">
  9. <link rel="next" href="math_for_dummies.html">
  10. <meta name="keywords" content="documentation, faq">
  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="Frequently Asked Questions">
  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.8">
  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="../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="../beginner/hello_simpleapplication.html">Hello SimpleApplication</a>
  79. </li>
  80. <li class="nav-item" data-depth="2">
  81. <a class="nav-link" href="../beginner/hello_node.html">Hello Node</a>
  82. </li>
  83. <li class="nav-item" data-depth="2">
  84. <a class="nav-link" href="../beginner/hello_asset.html">Hello Asset</a>
  85. </li>
  86. <li class="nav-item" data-depth="2">
  87. <a class="nav-link" href="../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="../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="../beginner/hello_material.html">Hello Material</a>
  94. </li>
  95. <li class="nav-item" data-depth="2">
  96. <a class="nav-link" href="../beginner/hello_animation.html">Hello Animation</a>
  97. </li>
  98. <li class="nav-item" data-depth="2">
  99. <a class="nav-link" href="../beginner/hello_picking.html">Hello Picking</a>
  100. </li>
  101. <li class="nav-item" data-depth="2">
  102. <a class="nav-link" href="../beginner/hello_collision.html">Hello Collision</a>
  103. </li>
  104. <li class="nav-item" data-depth="2">
  105. <a class="nav-link" href="../beginner/hello_terrain.html">Hello Terrain</a>
  106. </li>
  107. <li class="nav-item" data-depth="2">
  108. <a class="nav-link" href="../beginner/hello_audio.html">Hello Audio</a>
  109. </li>
  110. <li class="nav-item" data-depth="2">
  111. <a class="nav-link" href="../beginner/hello_effects.html">Hello Effects</a>
  112. </li>
  113. <li class="nav-item" data-depth="2">
  114. <a class="nav-link" href="../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="best_practices.html">Best Practices</a>
  124. </li>
  125. <li class="nav-item" data-depth="2">
  126. <a class="nav-link" href="optimization.html">Optimization</a>
  127. </li>
  128. <li class="nav-item is-current-page" data-depth="2">
  129. <a class="nav-link" href="faq.html">Frequently Asked Questions</a>
  130. </li>
  131. <li class="nav-item" data-depth="2">
  132. <a class="nav-link" href="math_for_dummies.html">Math for Dummies</a>
  133. </li>
  134. <li class="nav-item" data-depth="2">
  135. <a class="nav-link" href="math.html">Math overview</a>
  136. </li>
  137. <li class="nav-item" data-depth="2">
  138. <a class="nav-link" href="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="rotate.html">3-D Rotation</a>
  142. </li>
  143. <li class="nav-item" data-depth="2">
  144. <a class="nav-link" href="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="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="the_scene_graph.html">The Scene Graph</a>
  151. </li>
  152. <li class="nav-item" data-depth="2">
  153. <a class="nav-link" href="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="terminology.html">3D Graphics Terminology</a>
  157. </li>
  158. <li class="nav-item" data-depth="2">
  159. <a class="nav-link" href="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="../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="../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="../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="../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="../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="../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="../how-to/modeling/blender/makehuman.html">MakeHuman</a>
  192. </li>
  193. <li class="nav-item" data-depth="4">
  194. <a class="nav-link" href="../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="../how-to/modeling/blender/mixamo.html">Blender Models</a>
  210. </li>
  211. </ul>
  212. </li>
  213. </ul>
  214. </li>
  215. <li class="nav-item" data-depth="2">
  216. <a class="nav-link" href="../how-to/debugging.html">Debugging with Wireframes</a>
  217. </li>
  218. <li class="nav-item" data-depth="2">
  219. <a class="nav-link" href="../how-to/util/free_skymaps.html">How to create free skymaps</a>
  220. </li>
  221. <li class="nav-item" data-depth="2">
  222. <button class="nav-item-toggle"></button>
  223. <span class="nav-text">Java Tips</span>
  224. <ul class="nav-list">
  225. <li class="nav-item" data-depth="3">
  226. <a class="nav-link" href="../how-to/java/localization.html">Localization</a>
  227. </li>
  228. <li class="nav-item" data-depth="3">
  229. <a class="nav-link" href="../how-to/java/swing_canvas.html">Swing Canvas</a>
  230. </li>
  231. <li class="nav-item" data-depth="3">
  232. <a class="nav-link" href="../how-to/java/logging.html">Logging</a>
  233. </li>
  234. <li class="nav-item" data-depth="3">
  235. <a class="nav-link" href="../how-to/java/read_graphic_card_capabilites.html">Read Graphics Capabilities</a>
  236. </li>
  237. </ul>
  238. </li>
  239. <li class="nav-item" data-depth="2">
  240. <button class="nav-item-toggle"></button>
  241. <span class="nav-text">Articles</span>
  242. <ul class="nav-list">
  243. <li class="nav-item" data-depth="3">
  244. <button class="nav-item-toggle"></button>
  245. <span class="nav-text">Physically Based Rendering</span>
  246. <ul class="nav-list">
  247. <li class="nav-item" data-depth="4">
  248. <a class="nav-link" href="../how-to/articles/pbr/pbr_part1.html">PBR – Part one</a>
  249. </li>
  250. <li class="nav-item" data-depth="4">
  251. <a class="nav-link" href="../how-to/articles/pbr/pbr_part2.html">PBR – Part two</a>
  252. </li>
  253. <li class="nav-item" data-depth="4">
  254. <a class="nav-link" href="../how-to/articles/pbr/pbr_part3.html">PBR – Part three</a>
  255. </li>
  256. </ul>
  257. </li>
  258. </ul>
  259. </li>
  260. </ul>
  261. </li>
  262. </ul>
  263. </li>
  264. <li class="nav-item" data-depth="0">
  265. <ul class="nav-list">
  266. <li class="nav-item" data-depth="1">
  267. <button class="nav-item-toggle"></button>
  268. <span class="nav-text">Core Engine</span>
  269. <ul class="nav-list">
  270. <li class="nav-item" data-depth="2">
  271. <a class="nav-link" href="../../core/app/simpleapplication.html">SimpleApplication</a>
  272. </li>
  273. <li class="nav-item" data-depth="2">
  274. <a class="nav-link" href="../../core/system/appsettings.html">AppSettings</a>
  275. </li>
  276. </ul>
  277. </li>
  278. <li class="nav-item" data-depth="1">
  279. <button class="nav-item-toggle"></button>
  280. <span class="nav-text">Controlling Game Logic</span>
  281. <ul class="nav-list">
  282. <li class="nav-item" data-depth="2">
  283. <a class="nav-link" href="../../core/app/update_loop.html">Update Loop</a>
  284. </li>
  285. <li class="nav-item" data-depth="2">
  286. <a class="nav-link" href="../../core/app/state/application_states.html">Application States</a>
  287. </li>
  288. <li class="nav-item" data-depth="2">
  289. <button class="nav-item-toggle"></button>
  290. <a class="nav-link" href="../../core/scene/control/custom_controls.html">Custom Controls</a>
  291. <ul class="nav-list">
  292. <li class="nav-item" data-depth="3">
  293. <button class="nav-item-toggle"></button>
  294. <span class="nav-text">Video</span>
  295. <ul class="nav-list">
  296. <li class="nav-item" data-depth="4">
  297. <a class="nav-link" href="https://www.youtube.com/watch?v=MNDiZ9YHIpM">Control any scene node</a>
  298. </li>
  299. <li class="nav-item" data-depth="4">
  300. <a class="nav-link" href="https://www.youtube.com/watch?v=-OzRZscLlHY">Control a character</a>
  301. </li>
  302. <li class="nav-item" data-depth="4">
  303. <a class="nav-link" href="https://wiki.jmonkeyengine.org/Scenes/SDK-UsecaseDemo_1.zip">Video Source Code</a>
  304. </li>
  305. </ul>
  306. </li>
  307. </ul>
  308. </li>
  309. <li class="nav-item" data-depth="2">
  310. <a class="nav-link" href="../../core/app/multithreading.html">Multithreading</a>
  311. </li>
  312. </ul>
  313. </li>
  314. <li class="nav-item" data-depth="1">
  315. <button class="nav-item-toggle"></button>
  316. <span class="nav-text">Scene Graph</span>
  317. <ul class="nav-list">
  318. <li class="nav-item" data-depth="2">
  319. <a class="nav-link" href="../../core/scene/traverse_scenegraph.html">Traverse SceneGraph</a>
  320. </li>
  321. <li class="nav-item" data-depth="2">
  322. <a class="nav-link" href="../../core/scene/spatial.html">Spatial: Node vs Geometry</a>
  323. </li>
  324. <li class="nav-item" data-depth="2">
  325. <button class="nav-item-toggle"></button>
  326. <a class="nav-link" href="../../core/scene/mesh.html">Mesh</a>
  327. <ul class="nav-list">
  328. <li class="nav-item" data-depth="3">
  329. <a class="nav-link" href="../../core/scene/custom_meshes.html">Custom Meshes</a>
  330. </li>
  331. <li class="nav-item" data-depth="3">
  332. <a class="nav-link" href="../../core/scene/shape/shape.html">Shape</a>
  333. </li>
  334. <li class="nav-item" data-depth="3">
  335. <a class="nav-link" href="../../core/scene/3d_models.html">3D Models</a>
  336. </li>
  337. </ul>
  338. </li>
  339. <li class="nav-item" data-depth="2">
  340. <a class="nav-link" href="../../core/asset/asset_manager.html">Asset Manager</a>
  341. </li>
  342. <li class="nav-item" data-depth="2">
  343. <a class="nav-link" href="../../core/export/save_and_load.html">Saving and Loading Nodes</a>
  344. </li>
  345. <li class="nav-item" data-depth="2">
  346. <a class="nav-link" href="../../core/collision/collision_and_intersection.html">Collision and Intersection</a>
  347. </li>
  348. <li class="nav-item" data-depth="2">
  349. <a class="nav-link" href="../../core/scene/control/level_of_detail.html">Level of Detail</a>
  350. </li>
  351. </ul>
  352. </li>
  353. <li class="nav-item" data-depth="1">
  354. <button class="nav-item-toggle"></button>
  355. <span class="nav-text">Animation, Scene</span>
  356. <ul class="nav-list">
  357. <li class="nav-item" data-depth="2">
  358. <a class="nav-link" href="../../core/animation/animation_new.html">Animation with AnimComposer</a>
  359. </li>
  360. <li class="nav-item" data-depth="2">
  361. <a class="nav-link" href="../../core/animation/animation.html">Animation-Old (AnimControl)</a>
  362. </li>
  363. <li class="nav-item" data-depth="2">
  364. <a class="nav-link" href="../../core/cinematic/cinematics.html">Cinematics (cutscenes, fake destruction physics)</a>
  365. </li>
  366. <li class="nav-item" data-depth="2">
  367. <a class="nav-link" href="../../core/cinematic/motionpath.html">MotionPaths and Waypoints</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">Material, Light, Shadow</span>
  374. <ul class="nav-list">
  375. <li class="nav-item" data-depth="2">
  376. <a class="nav-link" href="../../core/material/how_to_use_materials.html">How to use Materials</a>
  377. </li>
  378. <li class="nav-item" data-depth="2">
  379. <a class="nav-link" href="../../core/material/j3m_material_files.html">.j3m Material Files</a>
  380. </li>
  381. <li class="nav-item" data-depth="2">
  382. <a class="nav-link" href="../../core/material/material_definitions.html">.j3md Material Definitions</a>
  383. </li>
  384. <li class="nav-item" data-depth="2">
  385. <a class="nav-link" href="../../core/material/materials_overview.html">.j3md Properties</a>
  386. </li>
  387. <li class="nav-item" data-depth="2">
  388. <a class="nav-link" href="../../core/shader/jme3_shaders.html">Shaders and JME3</a>
  389. </li>
  390. <li class="nav-item" data-depth="2">
  391. <a class="nav-link" href="../../core/shader/jme3_shadernodes.html">Shader Node System</a>
  392. </li>
  393. <li class="nav-item" data-depth="2">
  394. <a class="nav-link" href="../../core/shader/shader_video_tutorials.html">Shader Video Tutorials</a>
  395. </li>
  396. <li class="nav-item" data-depth="2">
  397. <a class="nav-link" href="../../core/light/light_and_shadow.html">Light and Shadow</a>
  398. </li>
  399. <li class="nav-item" data-depth="2">
  400. <a class="nav-link" href="../../core/texture/anisotropic_filtering.html">Anisotropic Filtering</a>
  401. </li>
  402. <li class="nav-item" data-depth="2">
  403. <a class="nav-link" href="../../core/system/jme3_srgbpipeline.html">Gamma Correction</a>
  404. </li>
  405. <li class="nav-item" data-depth="2">
  406. <a class="nav-link" href="../../core/material/normal_types.html">Normal Map Conventions</a>
  407. </li>
  408. </ul>
  409. </li>
  410. <li class="nav-item" data-depth="1">
  411. <button class="nav-item-toggle"></button>
  412. <span class="nav-text">Audio, Video</span>
  413. <ul class="nav-list">
  414. <li class="nav-item" data-depth="2">
  415. <a class="nav-link" href="../../core/audio/audio.html">Playing Sounds</a>
  416. </li>
  417. <li class="nav-item" data-depth="2">
  418. <a class="nav-link" href="../../core/audio/audio_environment_presets.html">Audio Environment Presets</a>
  419. </li>
  420. <li class="nav-item" data-depth="2">
  421. <a class="nav-link" href="../../core/app/state/screenshots.html">Capture Screenshots</a>
  422. </li>
  423. <li class="nav-item" data-depth="2">
  424. <a class="nav-link" href="../../core/app/state/capture_audio_video_to_a_file.html">Capture Audio/Video</a>
  425. </li>
  426. </ul>
  427. </li>
  428. <li class="nav-item" data-depth="1">
  429. <button class="nav-item-toggle"></button>
  430. <span class="nav-text">Filter, Effect</span>
  431. <ul class="nav-list">
  432. <li class="nav-item" data-depth="2">
  433. <a class="nav-link" href="../../core/effect/effects_overview.html">Overview</a>
  434. </li>
  435. <li class="nav-item" data-depth="2">
  436. <a class="nav-link" href="../../core/effect/bloom_and_glow.html">Bloom and Glow</a>
  437. </li>
  438. <li class="nav-item" data-depth="2">
  439. <a class="nav-link" href="../../core/effect/particle_emitters.html">Particle Emitters</a>
  440. </li>
  441. </ul>
  442. </li>
  443. <li class="nav-item" data-depth="1">
  444. <button class="nav-item-toggle"></button>
  445. <span class="nav-text">Landscapes</span>
  446. <ul class="nav-list">
  447. <li class="nav-item" data-depth="2">
  448. <a class="nav-link" href="../../core/util/sky.html">Sky</a>
  449. </li>
  450. <li class="nav-item" data-depth="2">
  451. <a class="nav-link" href="../../core/terrain/terrain.html">Terrain (TerraMonkey)</a>
  452. </li>
  453. <li class="nav-item" data-depth="2">
  454. <a class="nav-link" href="../../core/collision/terrain_collision.html">Terrain Collision</a>
  455. </li>
  456. <li class="nav-item" data-depth="2">
  457. <a class="nav-link" href="../../core/effect/water.html">Simple Water</a>
  458. </li>
  459. <li class="nav-item" data-depth="2">
  460. <a class="nav-link" href="../../core/effect/post-processor_water.html">Post-Processor Water</a>
  461. </li>
  462. </ul>
  463. </li>
  464. <li class="nav-item" data-depth="1">
  465. <button class="nav-item-toggle"></button>
  466. <span class="nav-text">Camera</span>
  467. <ul class="nav-list">
  468. <li class="nav-item" data-depth="2">
  469. <a class="nav-link" href="../../core/renderer/camera.html">Camera</a>
  470. </li>
  471. <li class="nav-item" data-depth="2">
  472. <a class="nav-link" href="../../core/renderer/making_the_camera_follow_a_character.html">Follow a Character</a>
  473. </li>
  474. <li class="nav-item" data-depth="2">
  475. <a class="nav-link" href="../../core/renderer/remote-controlling_the_camera.html">Remote-Controlling</a>
  476. </li>
  477. <li class="nav-item" data-depth="2">
  478. <a class="nav-link" href="../../core/renderer/multiple_camera_views.html">Multiple Camera Views</a>
  479. </li>
  480. <li class="nav-item" data-depth="2">
  481. <a class="nav-link" href="../../core/renderer/jme3_renderbuckets.html">Render Buckets</a>
  482. </li>
  483. </ul>
  484. </li>
  485. <li class="nav-item" data-depth="1">
  486. <button class="nav-item-toggle"></button>
  487. <span class="nav-text">Rendering</span>
  488. <ul class="nav-list">
  489. <li class="nav-item" data-depth="2">
  490. <a class="nav-link" href="../../core/renderer/render_pipeline.html">Render Pipelines</a>
  491. </li>
  492. </ul>
  493. </li>
  494. <li class="nav-item" data-depth="1">
  495. <button class="nav-item-toggle"></button>
  496. <span class="nav-text">User Interaction</span>
  497. <ul class="nav-list">
  498. <li class="nav-item" data-depth="2">
  499. <a class="nav-link" href="../../core/input/input_handling.html">Input Handling</a>
  500. </li>
  501. <li class="nav-item" data-depth="2">
  502. <a class="nav-link" href="../../core/input/combo_moves.html">Combo Moves</a>
  503. </li>
  504. <li class="nav-item" data-depth="2">
  505. <a class="nav-link" href="../../core/input/mouse_picking.html">Mouse Picking</a>
  506. </li>
  507. </ul>
  508. </li>
  509. <li class="nav-item" data-depth="1">
  510. <button class="nav-item-toggle"></button>
  511. <a class="nav-link" href="../../core/gui/topic_gui.html">Graphical User Interface</a>
  512. <ul class="nav-list">
  513. <li class="nav-item" data-depth="2">
  514. <button class="nav-item-toggle"></button>
  515. <span class="nav-text">Nifty GUI</span>
  516. <ul class="nav-list">
  517. <li class="nav-item" data-depth="3">
  518. <a class="nav-link" href="../../core/gui/nifty_gui.html">Integration Tutorial</a>
  519. </li>
  520. <li class="nav-item" data-depth="3">
  521. <a class="nav-link" href="../../core/gui/nifty_gui_best_practices.html">Best Practices</a>
  522. </li>
  523. <li class="nav-item" data-depth="3">
  524. <a class="nav-link" href="../../core/gui/nifty_gui_scenarios.html">Scenarios</a>
  525. </li>
  526. </ul>
  527. </li>
  528. <li class="nav-item" data-depth="2">
  529. <a class="nav-link" href="../../core/ui/hud.html">Head-Up Display (HUD)</a>
  530. </li>
  531. </ul>
  532. </li>
  533. <li class="nav-item" data-depth="1">
  534. <button class="nav-item-toggle"></button>
  535. <span class="nav-text">Virtual Reality</span>
  536. <ul class="nav-list">
  537. <li class="nav-item" data-depth="2">
  538. <a class="nav-link" href="../../core/vr/virtualreality.html">Virtual Reality</a>
  539. </li>
  540. <li class="nav-item" data-depth="2">
  541. <a class="nav-link" href="../../core/vr/legacyOpenVr.html">Virtual Reality Legacy Support</a>
  542. </li>
  543. <li class="nav-item" data-depth="2">
  544. <a class="nav-link" href="../../core/vr/virtualrealitycontrollers.html">Virtual Reality Legacy Controller Support</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. <a class="nav-link" href="../../contributions/vr/topic_contributions_vr.html">Virtual Reality (And augmented reality)</a>
  702. <ul class="nav-list">
  703. <li class="nav-item" data-depth="3">
  704. <a class="nav-link" href="../../contributions/contributions.html#tamarin-openxr">Tamarin OpenXR</a>
  705. </li>
  706. </ul>
  707. </li>
  708. <li class="nav-item" data-depth="2">
  709. <button class="nav-item-toggle"></button>
  710. <span class="nav-text">Projects</span>
  711. <ul class="nav-list">
  712. <li class="nav-item" data-depth="3">
  713. <a class="nav-link" href="../../contributions/projects/rise_of_mutants_project.html">Rise of Mutants Project</a>
  714. </li>
  715. </ul>
  716. </li>
  717. </ul>
  718. </li>
  719. </ul>
  720. </li>
  721. <li class="nav-item" data-depth="0">
  722. <ul class="nav-list">
  723. <li class="nav-item" data-depth="1">
  724. <button class="nav-item-toggle"></button>
  725. <a class="nav-link" href="../../sdk/sdk.html">SDK</a>
  726. <ul class="nav-list">
  727. <li class="nav-item" data-depth="2">
  728. <button class="nav-item-toggle"></button>
  729. <span class="nav-text">Video Tutorials</span>
  730. <ul class="nav-list">
  731. <li class="nav-item" data-depth="3">
  732. <button class="nav-item-toggle"></button>
  733. <span class="nav-text">SDK Use Case Tutorials</span>
  734. <ul class="nav-list">
  735. <li class="nav-item" data-depth="4">
  736. <a class="nav-link" href="http://www.youtube.com/watch?v=-OzRZscLlHY">Demo 1 (Quixote demo)</a>
  737. </li>
  738. <li class="nav-item" data-depth="4">
  739. <a class="nav-link" href="http://www.youtube.com/watch?v=6-YWxD3JByE">Demo 2 (Models and Materials)</a>
  740. </li>
  741. </ul>
  742. </li>
  743. <li class="nav-item" data-depth="3">
  744. <button class="nav-item-toggle"></button>
  745. <span class="nav-text">SDK Tutorials</span>
  746. <ul class="nav-list">
  747. <li class="nav-item" data-depth="4">
  748. <a class="nav-link" href="http://www.youtube.com/watch?v=M1_0pbeyJzI">Basics</a>
  749. </li>
  750. <li class="nav-item" data-depth="4">
  751. <a class="nav-link" href="http://www.youtube.com/watch?v=nL7woH40i5c">Importing Models</a>
  752. </li>
  753. <li class="nav-item" data-depth="4">
  754. <a class="nav-link" href="http://www.youtube.com/watch?v=DUmgAjiNzhY">Dragging&amp;Dropping Nodes</a>
  755. </li>
  756. <li class="nav-item" data-depth="4">
  757. <a class="nav-link" href="http://www.youtube.com/watch?v=ntPAmtsQ6eM">Scene Composing</a>
  758. </li>
  759. <li class="nav-item" data-depth="4">
  760. <a class="nav-link" href="http://www.youtube.com/watch?v=zgPV3W6dD4s">Terrain with Collision Shape</a>
  761. </li>
  762. <li class="nav-item" data-depth="4">
  763. <a class="nav-link" href="http://www.youtube.com/watch?v=Feu3-mrpolc">Working with Materials</a>
  764. </li>
  765. <li class="nav-item" data-depth="4">
  766. <a class="nav-link" href="http://www.youtube.com/watch?v=MNDiZ9YHIpM">Custom Controls</a>
  767. </li>
  768. <li class="nav-item" data-depth="4">
  769. <a class="nav-link" href="http://www.youtube.com/watch?v=oZnssg8TBWQ">WebStart Deployment</a>
  770. </li>
  771. <li class="nav-item" data-depth="4">
  772. <a class="nav-link" href="http://www.youtube.com/watch?v=D7JM4VMKqPc">Animation and Effect TrackEditing</a>
  773. </li>
  774. </ul>
  775. </li>
  776. </ul>
  777. </li>
  778. <li class="nav-item" data-depth="2">
  779. <button class="nav-item-toggle"></button>
  780. <span class="nav-text">Getting Started</span>
  781. <ul class="nav-list">
  782. <li class="nav-item" data-depth="3">
  783. <a class="nav-link" href="../../sdk/update_center.html">Updating jMonkeyEngine SDK</a>
  784. </li>
  785. <li class="nav-item" data-depth="3">
  786. <a class="nav-link" href="../../sdk/troubleshooting.html">Troubleshooting</a>
  787. </li>
  788. </ul>
  789. </li>
  790. <li class="nav-item" data-depth="2">
  791. <button class="nav-item-toggle"></button>
  792. <span class="nav-text">Java Development Features</span>
  793. <ul class="nav-list">
  794. <li class="nav-item" data-depth="3">
  795. <a class="nav-link" href="../../sdk/project_creation.html">Project Creation</a>
  796. </li>
  797. <li class="nav-item" data-depth="3">
  798. <a class="nav-link" href="../../sdk/code_editor.html">Code Editor and Palette</a>
  799. </li>
  800. <li class="nav-item" data-depth="3">
  801. <a class="nav-link" href="../../sdk/version_control.html">File Version Control</a>
  802. </li>
  803. <li class="nav-item" data-depth="3">
  804. <a class="nav-link" href="../../sdk/debugging_profiling_testing.html">Debug, Profile, Test</a>
  805. </li>
  806. <li class="nav-item" data-depth="3">
  807. <button class="nav-item-toggle"></button>
  808. <a class="nav-link" href="../../sdk/application_deployment.html">Application Deployment</a>
  809. <ul class="nav-list">
  810. <li class="nav-item" data-depth="4">
  811. <a class="nav-link" href="../../sdk/default_build_script.html">Default Build Script</a>
  812. </li>
  813. <li class="nav-item" data-depth="4">
  814. <a class="nav-link" href="../../sdk/android.html">Android</a>
  815. </li>
  816. <li class="nav-item" data-depth="4">
  817. <a class="nav-link" href="../../sdk/android_cheat_sheet.html">Android Cheat Sheet</a>
  818. </li>
  819. <li class="nav-item" data-depth="4">
  820. <a class="nav-link" href="../../sdk/ios.html">iOS</a>
  821. </li>
  822. </ul>
  823. </li>
  824. </ul>
  825. </li>
  826. <li class="nav-item" data-depth="2">
  827. <button class="nav-item-toggle"></button>
  828. <span class="nav-text">Unique Features</span>
  829. <ul class="nav-list">
  830. <li class="nav-item" data-depth="3">
  831. <button class="nav-item-toggle"></button>
  832. <a class="nav-link" href="../../sdk/model_loader_and_viewer.html">Import, View, Convert Models</a>
  833. <ul class="nav-list">
  834. <li class="nav-item" data-depth="4">
  835. <a class="nav-link" href="../../sdk/asset_packs.html">Asset Packs</a>
  836. </li>
  837. </ul>
  838. </li>
  839. <li class="nav-item" data-depth="3">
  840. <a class="nav-link" href="../../sdk/scene_explorer.html">The SceneExplorer</a>
  841. </li>
  842. <li class="nav-item" data-depth="3">
  843. <a class="nav-link" href="../../sdk/scene_composer.html">Composing a Scene</a>
  844. </li>
  845. <li class="nav-item" data-depth="3">
  846. <a class="nav-link" href="../../sdk/terrain_editor.html">Terrain Editor</a>
  847. </li>
  848. <li class="nav-item" data-depth="3">
  849. <a class="nav-link" href="../../sdk/sample_code.html">Sample Code</a>
  850. </li>
  851. <li class="nav-item" data-depth="3">
  852. <a class="nav-link" href="../../sdk/material_editing.html">Material Editing</a>
  853. </li>
  854. <li class="nav-item" data-depth="3">
  855. <a class="nav-link" href="../../sdk/font_creation.html">Creating Bitmap Fonts</a>
  856. </li>
  857. <li class="nav-item" data-depth="3">
  858. <button class="nav-item-toggle"></button>
  859. <a class="nav-link" href="https://hub.jmonkeyengine.org/t/effecttrack-and-audiotrack-editing-in-the-sdk/23378">Audio and Effect Track Editing</a>
  860. <ul class="nav-list">
  861. <li class="nav-item" data-depth="4">
  862. <a class="nav-link" href="https://www.youtube.com/watch?v=D7JM4VMKqPc">Video: Effect and AudioTrack editing in jMonkeyEngine 3 sdk</a>
  863. </li>
  864. </ul>
  865. </li>
  866. <li class="nav-item" data-depth="3">
  867. <a class="nav-link" href="../../sdk/filters.html">Post-Processor Filter Editor and Viewer</a>
  868. </li>
  869. <li class="nav-item" data-depth="3">
  870. <a class="nav-link" href="../../core/app/state/application_states.html">Application States</a>
  871. </li>
  872. <li class="nav-item" data-depth="3">
  873. <a class="nav-link" href="../../core/scene/control/custom_controls.html">Custom Controls</a>
  874. </li>
  875. <li class="nav-item" data-depth="3">
  876. <a class="nav-link" href="../../sdk/vehicle_creator.html">Vehicle Creator</a>
  877. </li>
  878. <li class="nav-item" data-depth="3">
  879. <a class="nav-link" href="../../sdk/assetbrowser.html">Asset Browser</a>
  880. </li>
  881. <li class="nav-item" data-depth="3">
  882. <a class="nav-link" href="../../sdk/animations.html">Animations</a>
  883. </li>
  884. </ul>
  885. </li>
  886. <li class="nav-item" data-depth="2">
  887. <button class="nav-item-toggle"></button>
  888. <span class="nav-text">Advanced Usage</span>
  889. <ul class="nav-list">
  890. <li class="nav-item" data-depth="3">
  891. <a class="nav-link" href="../../sdk/build_platform.html">Building jMonkeyEngine SDK</a>
  892. </li>
  893. <li class="nav-item" data-depth="3">
  894. <a class="nav-link" href="../../sdk/use_own_jme.html#.adoc">Using your own (modified) version of jME3 in jMonkeyEngine SDK</a>
  895. </li>
  896. <li class="nav-item" data-depth="3">
  897. <a class="nav-link" href="../../sdk/increasing_heap_memory.html">Increasing Heap Memory</a>
  898. </li>
  899. <li class="nav-item" data-depth="3">
  900. <a class="nav-link" href="../../sdk/log_files.html">Log Files</a>
  901. </li>
  902. </ul>
  903. </li>
  904. <li class="nav-item" data-depth="2">
  905. <button class="nav-item-toggle"></button>
  906. <span class="nav-text">Available external plugins</span>
  907. <ul class="nav-list">
  908. <li class="nav-item" data-depth="3">
  909. <a class="nav-link" href="../../contributions/contributions.html">Contributions</a>
  910. </li>
  911. <li class="nav-item" data-depth="3">
  912. <a class="nav-link" href="../../sdk/neotexture.html">Neo Texture Editor for procedural textures</a>
  913. </li>
  914. <li class="nav-item" data-depth="3">
  915. <a class="nav-link" href="http://www.youtube.com/watch?v=yS9a9o4WzL8">Video: Mesh Tool &amp; Physics Editor</a>
  916. </li>
  917. </ul>
  918. </li>
  919. <li class="nav-item" data-depth="2">
  920. <button class="nav-item-toggle"></button>
  921. <a class="nav-link" href="../../sdk/development.html">Developing plugins for jMonkeyEngine SDK</a>
  922. <ul class="nav-list">
  923. <li class="nav-item" data-depth="3">
  924. <a class="nav-link" href="../../sdk/development/setup.html">Creating a plugin</a>
  925. </li>
  926. <li class="nav-item" data-depth="3">
  927. <a class="nav-link" href="../../sdk/development/general.html">Creating components</a>
  928. </li>
  929. <li class="nav-item" data-depth="3">
  930. <a class="nav-link" href="../../sdk/development/scene.html">The Main Scene</a>
  931. </li>
  932. <li class="nav-item" data-depth="3">
  933. <a class="nav-link" href="../../sdk/development/sceneexplorer.html">The Scene Explorer</a>
  934. </li>
  935. <li class="nav-item" data-depth="3">
  936. <a class="nav-link" href="../../sdk/development/projects_assets.html">Projects and Assets</a>
  937. </li>
  938. <li class="nav-item" data-depth="3">
  939. <a class="nav-link" href="../../sdk/development/extension_library.html">Create a library plugin from a jar file</a>
  940. </li>
  941. <li class="nav-item" data-depth="3">
  942. <a class="nav-link" href="../../sdk/development/model_loader.html">Create a new or custom model filetype and loader</a>
  943. </li>
  944. </ul>
  945. </li>
  946. </ul>
  947. </li>
  948. </ul>
  949. </li>
  950. </ul>
  951. </nav>
  952. </div>
  953. <div class="nav-panel-explore" data-panel="explore">
  954. <div class="context">
  955. <span class="title">JME</span>
  956. <span class="version">3.8</span>
  957. </div>
  958. <ul class="components">
  959. <li class="component is-current">
  960. <span class="title">JME</span>
  961. <ul class="versions">
  962. <li class="version is-current">
  963. <a href="../../documentation.html">3.8</a>
  964. </li>
  965. <li class="version">
  966. <a href="../../../3.4/documentation.html">3.4</a>
  967. </li>
  968. <li class="version">
  969. <a href="../../../3.3/documentation.html">3.3</a>
  970. </li>
  971. <li class="version">
  972. <a href="../../../3.2/documentation.html">3.2</a>
  973. </li>
  974. </ul>
  975. </li>
  976. <li class="component">
  977. <span class="title">Wiki Contribution</span>
  978. <ul class="versions">
  979. <li class="version">
  980. <a href="../../../../docs-wiki/3.8/wiki_contributor.html">3.8</a>
  981. </li>
  982. </ul>
  983. </li>
  984. <li class="component">
  985. <span class="title">Wiki UI</span>
  986. <ul class="versions">
  987. <li class="version">
  988. <a href="../../../../wiki-ui/index.html">master</a>
  989. </li>
  990. </ul>
  991. </li>
  992. </ul>
  993. </div>
  994. </div>
  995. </aside>
  996. </div>
  997. <main class="article">
  998. <div class="toolbar" role="navigation">
  999. <button class="nav-toggle"></button>
  1000. <nav class="breadcrumbs" aria-label="breadcrumbs">
  1001. <ul>
  1002. <li><a href="../../documentation.html">JME</a></li>
  1003. <li>Key Concepts</li>
  1004. <li><a href="faq.html">Frequently Asked Questions</a></li>
  1005. </ul>
  1006. </nav>
  1007. <div class="page-versions">
  1008. <button class="version-menu-toggle" title="Show other versions of page">3.8</button>
  1009. <div class="version-menu">
  1010. <a class="version is-current" href="faq.html">3.8</a>
  1011. <a class="version" href="../../../3.4/tutorials/concepts/faq.html">3.4</a>
  1012. <a class="version" href="../../../3.3/tutorials/concepts/faq.html">3.3</a>
  1013. <a class="version" href="../../../3.2/tutorials/concepts/faq.html">3.2</a>
  1014. </div>
  1015. </div>
  1016. <div class="edit-this-page"><a href="https://github.com/jMonkeyEngine/wiki/edit/master/docs/modules/tutorials/pages/concepts/faq.adoc">Edit this Page</a></div>
  1017. </div>
  1018. <div class="content">
  1019. <article class="doc">
  1020. <h1 class="page">Frequently Asked Questions</h1>
  1021. <div class="sect1">
  1022. <h2 id="i-want-to-create-and-configure-a-jme3-application"><a class="anchor" href="#i-want-to-create-and-configure-a-jme3-application"></a>I want to create and configure a jME3 Application</h2>
  1023. <div class="sectionbody">
  1024. <div class="sect2">
  1025. <h3 id="how-do-i-start-writing-a-preconfigured-jme-game"><a class="anchor" href="#how-do-i-start-writing-a-preconfigured-jme-game"></a>How do I start writing a preconfigured jME game?</h3>
  1026. <div class="paragraph">
  1027. <p>Write a Java class that extends <a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/app/SimpleApplication.java">com.jme3.app.SimpleApplication</a>.</p>
  1028. </div>
  1029. <div class="paragraph">
  1030. <p><strong>Learn more:</strong></p>
  1031. </div>
  1032. <div class="ulist">
  1033. <ul>
  1034. <li>
  1035. <p><a href="../beginner/hello_simpleapplication.html" class="xref page">Hello SimpleApplication</a></p>
  1036. </li>
  1037. <li>
  1038. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/app/TestAppStateLifeCycle.java">TestAppStateLifeCycle</a>.</p>
  1039. </li>
  1040. </ul>
  1041. </div>
  1042. </div>
  1043. <div class="sect2">
  1044. <h3 id="how-do-i-change-the-background-color"><a class="anchor" href="#how-do-i-change-the-background-color"></a>How do I change the background color?</h3>
  1045. <div class="listingblock">
  1046. <div class="content">
  1047. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">viewPort.setBackgroundColor(ColorRGBA.Blue);</code></pre>
  1048. </div>
  1049. </div>
  1050. </div>
  1051. <div class="sect2">
  1052. <h3 id="can-i-customize-the-simpleapplication-class"><a class="anchor" href="#can-i-customize-the-simpleapplication-class"></a>Can I customize the SimpleApplication class?</h3>
  1053. <div class="paragraph">
  1054. <p>Yes! Actually, you MUST customize it! For your own games, you always create a custom base class that extends <a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/app/SimpleApplication.java">com.jme3.app.SimpleApplication</a> class. From now on it&#8217;s no longer a <code>simple application</code> – it&#8217;s now your game. Configure your <a href="../../core/system/appsettings.html" class="xref page">application settings</a>, implement methods, and customize away!</p>
  1055. </div>
  1056. <div class="paragraph">
  1057. <p><strong>Learn more:</strong></p>
  1058. </div>
  1059. <div class="ulist">
  1060. <ul>
  1061. <li>
  1062. <p><a href="../../core/app/simpleapplication.html" class="xref page">SimpleApplication</a></p>
  1063. </li>
  1064. <li>
  1065. <p><a href="../../core/system/appsettings.html" class="xref page">AppSettings</a></p>
  1066. </li>
  1067. </ul>
  1068. </div>
  1069. </div>
  1070. <div class="sect2">
  1071. <h3 id="how-can-i-switch-between-screens-or-states"><a class="anchor" href="#how-can-i-switch-between-screens-or-states"></a>How can I switch between screens or states?</h3>
  1072. <div class="paragraph">
  1073. <p>You should break down your application logic into components by spreading it out over individual AppStates. AppStates can be attached to and detached from the game. AppStates have access to all objects (rootNode, PhysicsSpace, inputManager, etc) and methods in your main application. So each AppState can bring its own subset of input handlers, <abbr title="Graphical User Interface">GUI</abbr> nodes, spatial nodes, and even its own subset of game mechanics in the update() loop.</p>
  1074. </div>
  1075. <div class="paragraph">
  1076. <p><strong>Learn more:</strong></p>
  1077. </div>
  1078. <div class="ulist">
  1079. <ul>
  1080. <li>
  1081. <p><a href="../../core/app/state/application_states.html" class="xref page">Application States</a></p>
  1082. </li>
  1083. </ul>
  1084. </div>
  1085. </div>
  1086. <div class="sect2">
  1087. <h3 id="how-do-i-pauseunpause-a-game"><a class="anchor" href="#how-do-i-pauseunpause-a-game"></a>How do I pause/unpause a game?</h3>
  1088. <div class="paragraph">
  1089. <p>You split up your application into several AppStates and implement the setEnabled() methods for each state. Then you create, for example, a GameRunningAppState and a GamePausedAppState. GamePausedAppState&#8217;s job is to attach all your AppStates that contain the logic and <abbr title="Graphical User Interface">GUI</abbr> of the pause screen, and to detach all the AppStates that contain logic and <abbr title="Graphical User Interface">GUI</abbr> of the running game. GameRunningAppState does the opposite. By attaching one or the other to the game, you switch between the paused and unpaused states.</p>
  1090. </div>
  1091. <div class="paragraph">
  1092. <p><strong>Learn more:</strong></p>
  1093. </div>
  1094. <div class="ulist">
  1095. <ul>
  1096. <li>
  1097. <p><a href="../../core/app/state/application_states.html" class="xref page">Application States</a></p>
  1098. </li>
  1099. </ul>
  1100. </div>
  1101. </div>
  1102. <div class="sect2">
  1103. <h3 id="how-do-i-disable-logger-output-to-the-console"><a class="anchor" href="#how-do-i-disable-logger-output-to-the-console"></a>How do I disable logger output to the console?</h3>
  1104. <div class="paragraph">
  1105. <p>During development, you can switch the severity level of the default logger to no longer print FINE warnings, but only WARNINGs.</p>
  1106. </div>
  1107. <div class="listingblock">
  1108. <div class="content">
  1109. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">java.util.logging.Logger.getLogger("").setLevel(Level.WARNING);</code></pre>
  1110. </div>
  1111. </div>
  1112. <div class="paragraph">
  1113. <p>For the release, switch the severity level of the default logger to print only SEVERE errors.</p>
  1114. </div>
  1115. <div class="listingblock">
  1116. <div class="content">
  1117. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">java.util.logging.Logger.getLogger("").setLevel(Level.SEVERE);</code></pre>
  1118. </div>
  1119. </div>
  1120. <div class="paragraph">
  1121. <p><strong>Learn more:</strong></p>
  1122. </div>
  1123. <div class="ulist">
  1124. <ul>
  1125. <li>
  1126. <p><a href="../how-to/java/logging.html" class="xref page">Logging</a></p>
  1127. </li>
  1128. </ul>
  1129. </div>
  1130. </div>
  1131. <div class="sect2">
  1132. <h3 id="why-does-the-executable-crash-with-cannot-locate-resource"><a class="anchor" href="#why-does-the-executable-crash-with-cannot-locate-resource"></a>Why does the executable crash with "Cannot locate resource"?</h3>
  1133. <div class="paragraph">
  1134. <p>Make sure to only load() models converted to .j3o binary format, not the original Ogre or Wavefront formats. If you load assets from zip files, make sure to amend the build script to copy them to the build directory.</p>
  1135. </div>
  1136. <div class="paragraph">
  1137. <p><strong>Learn more:</strong></p>
  1138. </div>
  1139. <div class="ulist">
  1140. <ul>
  1141. <li>
  1142. <p><a href="../../core/asset/asset_manager.html" class="xref page">Asset Manager</a></p>
  1143. </li>
  1144. </ul>
  1145. </div>
  1146. </div>
  1147. <div class="sect2">
  1148. <h3 id="what-is-java-lang-linkageerror-version-mismatch"><a class="anchor" href="#what-is-java-lang-linkageerror-version-mismatch"></a>What is java.lang.LinkageError: Version mismatch?</h3>
  1149. <div class="paragraph">
  1150. <p>This rare exception shows a message similar to the following: <code>Exception in thread "LWJGL" Renderer Thread java.lang.LinkageError: Version mismatch: jar version is (number), native library version is (another number)</code>. jME3 needs native libraries (.dll, .jnilib, lib*.so files) to run LWJGL and jBullet. The correct versions of these libraries are included when you install the SDK or download the binaries. However there are circumstances where jME3 cannot determine which copy of the native library it should use:</p>
  1151. </div>
  1152. <div class="ulist">
  1153. <div class="title">Possible Causes</div>
  1154. <ul>
  1155. <li>
  1156. <p>If you install another application that needs a different version of a native library, and this app globally installs its version over jME3&#8217;s.</p>
  1157. </li>
  1158. <li>
  1159. <p>If an old copy of a native library is in your project directory, your home directory, or Java library path, or in the classpath.</p>
  1160. </li>
  1161. <li>
  1162. <p>If you permanently linked an old copy in your IDE&#8217;s settings.</p>
  1163. </li>
  1164. </ul>
  1165. </div>
  1166. <div class="paragraph">
  1167. <p>Java then assumes you prefer these native libraries over the bundled ones, and your jME3 application ends up running with the wrong version.</p>
  1168. </div>
  1169. <div class="paragraph">
  1170. <p>To fix this, search for .dll (Windows), .jnilib (Mac), and .so (Linux) files for jBullet and LWJGL on your harddrive and in your path and IDE settings, and verify they don&#8217;t interfere. (If you have other jME versions installed and linked somehow, the outdated natives may also be in a lwjgl.jar or jbullet.jar file!)</p>
  1171. </div>
  1172. </div>
  1173. </div>
  1174. </div>
  1175. <div class="sect1">
  1176. <h2 id="i-want-to-load-my-scene"><a class="anchor" href="#i-want-to-load-my-scene"></a>I want to load my scene</h2>
  1177. <div class="sectionbody">
  1178. <div class="sect2">
  1179. <h3 id="how-do-i-make-objects-appear-disappear-in-the-3d-scene"><a class="anchor" href="#how-do-i-make-objects-appear-disappear-in-the-3d-scene"></a>How do I make objects appear / disappear in the 3D scene?</h3>
  1180. <div class="paragraph">
  1181. <p>To make a spatial appear in the scene, you attach it to the rootNode (or to a node that is attached to the rootnode). To remove a spatial, you detach it from its parent node.</p>
  1182. </div>
  1183. <div class="listingblock">
  1184. <div class="content">
  1185. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">rootNode.attachChild(spatial); // appear in scene</code></pre>
  1186. </div>
  1187. </div>
  1188. <div class="listingblock">
  1189. <div class="content">
  1190. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">rootNode.detachChild(spatial); // remove from scene</code></pre>
  1191. </div>
  1192. </div>
  1193. <div class="paragraph">
  1194. <p><strong>Learn more:</strong></p>
  1195. </div>
  1196. <div class="ulist">
  1197. <ul>
  1198. <li>
  1199. <p><a href="the_scene_graph.html" class="xref page">The Scene Graph</a></p>
  1200. </li>
  1201. <li>
  1202. <p><a href="../beginner/hello_node.html" class="xref page">Hello Node</a></p>
  1203. </li>
  1204. <li>
  1205. <p><a href="../beginner/hello_asset.html" class="xref page">Hello Asset</a></p>
  1206. </li>
  1207. <li>
  1208. <p><a href="../../core/scene/spatial.html" class="xref page">Spatial</a></p>
  1209. </li>
  1210. <li>
  1211. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/scene/Node.java">com.jme3.scene.Node</a></p>
  1212. </li>
  1213. <li>
  1214. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/scene/Geometry.java">com.jme3.scene.Geometry</a></p>
  1215. </li>
  1216. </ul>
  1217. </div>
  1218. </div>
  1219. <div class="sect2">
  1220. <h3 id="why-do-i-get-assetnotfoundexception-when-loading-x"><a class="anchor" href="#why-do-i-get-assetnotfoundexception-when-loading-x"></a>Why do I get AssetNotFoundException when loading X ?</h3>
  1221. <div class="paragraph">
  1222. <p>First check whether the file path of the asset is correct. By default it is relative to your project&#8217;s assets directory:</p>
  1223. </div>
  1224. <div class="listingblock">
  1225. <div class="content">
  1226. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">// To load .../jMonkeyProjects/MyGame/assets/Models/Ninja/Ninja.j3o
  1227. Spatial ninja = assetManager.loadModel("Models/Ninja/Ninja.j3o");</code></pre>
  1228. </div>
  1229. </div>
  1230. <div class="paragraph">
  1231. <p>If you are not using the default <code>assets</code> directory, verify that you have registered a locator to the AssetManager. <a href="https://javadoc.jmonkeyengine.org/v3.4.1-stable/com/jme3/asset/plugins/package-summary.html">Different Locator types</a> are available.</p>
  1232. </div>
  1233. <div class="listingblock">
  1234. <div class="content">
  1235. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">this.assetManager.registerLocator("assets/", FileLocator.class); // default
  1236. this.assetManager.registerLocator("c:/jme3User/JMEisSoCool/myAwesomeFolder/", FileLocator.class);
  1237. this.assetManager.registerLocator("town.zip", ZipLocator.class);</code></pre>
  1238. </div>
  1239. </div>
  1240. <div class="paragraph">
  1241. <p>Note that you should not register every single folder containing a texture as the assetmanager will not be able to discern between images with the same name anymore.</p>
  1242. </div>
  1243. <div class="paragraph">
  1244. <p><strong>Learn more:</strong> <a href="../../core/asset/asset_manager.html" class="xref page">Asset Manager</a></p>
  1245. </div>
  1246. </div>
  1247. <div class="sect2">
  1248. <h3 id="how-do-i-create-3-d-models-textures-sounds"><a class="anchor" href="#how-do-i-create-3-d-models-textures-sounds"></a>How do I Create 3-D models, textures, sounds?</h3>
  1249. <div class="paragraph">
  1250. <p>Follow our best practices for the <a href="multi-media_asset_pipeline.html" class="xref page">multi-media asset pipeline</a>.<br>
  1251. You create 3-D models in a 3-D mesh editor, for example Blender, and export it in one of the 3D model <a href="../../getting-started/features.html#supported-external-file-types" class="xref page">Supported External File Types</a> such as GLTF (animated objects, scenes) or Wavefront OBJ format (static objects, scenes).
  1252. You create textures in a graphic editor, for example Gimp, and export them as PNG or JPG.
  1253. You create sounds in an audio editor, for example, Audacity, and export them as WAVE or OGG.</p>
  1254. </div>
  1255. <div class="paragraph">
  1256. <p><strong>Learn more:</strong></p>
  1257. </div>
  1258. <div class="ulist">
  1259. <ul>
  1260. <li>
  1261. <p><a href="../../core/scene/3d_models.html" class="xref page">3D Models</a></p>
  1262. </li>
  1263. <li>
  1264. <p><a href="multi-media_asset_pipeline.html" class="xref page">multi-media asset pipeline</a></p>
  1265. </li>
  1266. <li>
  1267. <p><a href="../how-to/modeling/blender/blender.html" class="xref page">Creating assets in Blender3D</a></p>
  1268. </li>
  1269. <li>
  1270. <p><a href="https://www.blender.org">Download Blender</a></p>
  1271. </li>
  1272. <li>
  1273. <p><a href="http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro">Blender intro tutorial</a></p>
  1274. </li>
  1275. <li>
  1276. <p><a href="http://en.wikipedia.org/wiki/Comparison_of_3D_computer_graphics_software#Features">Comparison of 3D graphic software features (Wikipedia)</a>.</p>
  1277. </li>
  1278. </ul>
  1279. </div>
  1280. </div>
  1281. <div class="sect2">
  1282. <h3 id="how-do-i-load-a-3-d-model-into-the-scene"><a class="anchor" href="#how-do-i-load-a-3-d-model-into-the-scene"></a>How do I load a 3-D model into the scene?</h3>
  1283. <div class="paragraph">
  1284. <p>Export your model using one of the <a href="../../getting-started/features.html#supported-external-file-types" class="xref page">Supported External File Types</a> for 3D models. Convert to .j3o binary format. Load the .j3o file using the AssetManager.</p>
  1285. </div>
  1286. <div class="listingblock">
  1287. <div class="content">
  1288. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">// To load .../jMonkeyProjects/MyGame/assets/Models/Ninja/Ninja.j3o
  1289. Spatial ninja = assetManager.loadModel("Models/Ninja/Ninja.j3o");</code></pre>
  1290. </div>
  1291. </div>
  1292. <div class="paragraph">
  1293. <p><strong>Learn more:</strong></p>
  1294. </div>
  1295. <div class="ulist">
  1296. <ul>
  1297. <li>
  1298. <p><a href="../beginner/hello_asset.html" class="xref page">Hello Asset</a></p>
  1299. </li>
  1300. <li>
  1301. <p><a href="../../core/asset/asset_manager.html" class="xref page">Asset Manager</a></p>
  1302. </li>
  1303. <li>
  1304. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/asset/AssetManager.java">com.jme3.assets.AssetManager</a></p>
  1305. </li>
  1306. <li>
  1307. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/scene/Geometry.java">com.jme3.scene.Geometry</a></p>
  1308. </li>
  1309. <li>
  1310. <p><a href="../../sdk/model_loader_and_viewer.html" class="xref page">jMonkeyEngine SDK j3o converter</a></p>
  1311. </li>
  1312. </ul>
  1313. </div>
  1314. <div class="paragraph">
  1315. <p><strong>Code sample:</strong></p>
  1316. </div>
  1317. <div class="ulist">
  1318. <ul>
  1319. <li>
  1320. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/model/TestOgreLoading.java">TestOgreLoading.java</a></p>
  1321. </li>
  1322. <li>
  1323. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/export/TestOgreConvert.java">TestOgreConvert.java</a></p>
  1324. </li>
  1325. <li>
  1326. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/2124e3e86bf898d6c7a7bc90a191cf639e39bacb/jme3-examples/src/main/java/jme3test/model/TestGltfLoading.java">TestGltfLoading.java</a></p>
  1327. </li>
  1328. </ul>
  1329. </div>
  1330. </div>
  1331. <div class="sect2">
  1332. <h3 id="how-to-initialize-the-scene"><a class="anchor" href="#how-to-initialize-the-scene"></a>How to initialize the scene?</h3>
  1333. <div class="paragraph">
  1334. <p>Use the simpleInitApp() method in SimpleApplication (or initApp() in Application).</p>
  1335. </div>
  1336. <div class="paragraph">
  1337. <p><strong>Learn more:</strong></p>
  1338. </div>
  1339. <div class="ulist">
  1340. <ul>
  1341. <li>
  1342. <p><a href="../beginner/hello_simpleapplication.html" class="xref page">Hello SimpleApplication</a></p>
  1343. </li>
  1344. <li>
  1345. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/app/SimpleApplication.java">SimpleApplication.java</a></p>
  1346. </li>
  1347. </ul>
  1348. </div>
  1349. </div>
  1350. </div>
  1351. </div>
  1352. <div class="sect1">
  1353. <h2 id="i-want-to-transform-objects-in-the-scene"><a class="anchor" href="#i-want-to-transform-objects-in-the-scene"></a>I want to transform objects in the scene</h2>
  1354. <div class="sectionbody">
  1355. <div class="sect2">
  1356. <h3 id="how-do-i-move-or-turn-or-resize-a-spatial"><a class="anchor" href="#how-do-i-move-or-turn-or-resize-a-spatial"></a>How do I move or turn or resize a spatial?</h3>
  1357. <div class="paragraph">
  1358. <p>To move or turn or resize a spatial you use transformations. You can concatenate transformations (e.g. perform rotations around several axes in one step using a <a href="rotate.html" class="xref page">Quaternion</a> with <code>slerp()</code> or a com.jme3.math.Transform with interpolateTransforms().</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.setLocalTranslation(1,-3,2.5f); spatial.rotate(0,3.14f,0); spatial.scale(2,2,2);</code></pre>
  1363. </div>
  1364. </div>
  1365. <div class="paragraph">
  1366. <p><strong>Learn more:</strong></p>
  1367. </div>
  1368. <div class="ulist">
  1369. <ul>
  1370. <li>
  1371. <p><a href="../beginner/hello_node.html" class="xref page">Hello Node</a></p>
  1372. </li>
  1373. <li>
  1374. <p><a href="../../core/scene/spatial.html" class="xref page">Spatial</a></p>
  1375. </li>
  1376. <li>
  1377. <p><a href="math_for_dummies.html" class="xref page">Math For Dummies</a></p>
  1378. </li>
  1379. </ul>
  1380. </div>
  1381. </div>
  1382. <div class="sect2">
  1383. <h3 id="how-do-i-make-a-spatial-move-by-itself"><a class="anchor" href="#how-do-i-make-a-spatial-move-by-itself"></a>How do I make a spatial move by itself?</h3>
  1384. <div class="paragraph">
  1385. <p>Change the geometry&#8217;s translation (position) live in the update loop using setLocalTranslation() for non-physical and applyForce() or setWalkDirection() for physical objects. You can also define and remote-control a spatial&#8217;s motion using <a href="../../core/cinematic/cinematics.html" class="xref page">Cinematics</a>, e.g. to record cutscenes, or to implement mobile platforms, elevators, airships, etc.</p>
  1386. </div>
  1387. <div class="paragraph">
  1388. <p><strong>Learn more:</strong></p>
  1389. </div>
  1390. <div class="ulist">
  1391. <ul>
  1392. <li>
  1393. <p><a href="../beginner/hello_main_event_loop.html" class="xref page">Hello Loop</a></p>
  1394. </li>
  1395. <li>
  1396. <p><a href="../../core/app/update_loop.html" class="xref page">Update Loop</a>&gt;</p>
  1397. </li>
  1398. <li>
  1399. <p><a href="../../core/scene/control/custom_controls.html" class="xref page">Custom Controls</a></p>
  1400. </li>
  1401. <li>
  1402. <p><a href="../../core/cinematic/cinematics.html" class="xref page">Cinematics</a></p>
  1403. </li>
  1404. </ul>
  1405. </div>
  1406. <div class="paragraph">
  1407. <p><strong>Code sample:</strong></p>
  1408. </div>
  1409. <div class="ulist">
  1410. <ul>
  1411. <li>
  1412. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/material/TestBumpModel.java">TestBumpModel.java</a></p>
  1413. </li>
  1414. <li>
  1415. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/model/TestOgreLoading.java">TestOgreLoading.java</a></p>
  1416. </li>
  1417. </ul>
  1418. </div>
  1419. </div>
  1420. <div class="sect2">
  1421. <h3 id="how-do-i-access-a-named-sub-mesh-in-model"><a class="anchor" href="#how-do-i-access-a-named-sub-mesh-in-model"></a>How do I access a named sub-mesh in Model?</h3>
  1422. <div class="listingblock">
  1423. <div class="content">
  1424. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">Geometry submesh = (Geometry) model.getChild("door 12");</code></pre>
  1425. </div>
  1426. </div>
  1427. <div class="paragraph">
  1428. <p><strong>Learn more:</strong></p>
  1429. </div>
  1430. <div class="ulist">
  1431. <ul>
  1432. <li>
  1433. <p><a href="../../core/scene/spatial.html" class="xref page">Spatial</a></p>
  1434. </li>
  1435. </ul>
  1436. </div>
  1437. </div>
  1438. <div class="sect2">
  1439. <h3 id="how-do-i-make-procedural-or-custom-shapes"><a class="anchor" href="#how-do-i-make-procedural-or-custom-shapes"></a>How do I make procedural or custom shapes?</h3>
  1440. <div class="paragraph">
  1441. <p>You can programmatically create com.jme3.scene.Mesh&#8217;es.</p>
  1442. </div>
  1443. <div class="paragraph">
  1444. <p><strong>Learn more:</strong></p>
  1445. </div>
  1446. <div class="ulist">
  1447. <ul>
  1448. <li>
  1449. <p><a href="../../core/scene/custom_meshes.html" class="xref page">Custom Meshes</a></p>
  1450. </li>
  1451. </ul>
  1452. </div>
  1453. </div>
  1454. </div>
  1455. </div>
  1456. <div class="sect1">
  1457. <h2 id="i-want-to-change-the-surface-of-objects-in-the-scene"><a class="anchor" href="#i-want-to-change-the-surface-of-objects-in-the-scene"></a>I want to change the surface of objects in the scene</h2>
  1458. <div class="sectionbody">
  1459. <div class="sect2">
  1460. <h3 id="why-is-my-uv-wrapping-texture-appearance-all-wrong"><a class="anchor" href="#why-is-my-uv-wrapping-texture-appearance-all-wrong"></a>Why is my UV wrapping / texture appearance all wrong?</h3>
  1461. <div class="paragraph">
  1462. <p>The most likely reason is the flipping of textures. You may be using the following default method:</p>
  1463. </div>
  1464. <div class="listingblock">
  1465. <div class="content">
  1466. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">material.setTexture("ColorMap", assetManager.loadTexture("myTexture.jpg"));</code></pre>
  1467. </div>
  1468. </div>
  1469. <div class="paragraph">
  1470. <p>You can set the boolean value in the constructor of TextureKey to flipped or not flipped. Toggle the boolean to see if it fixes your UV wrapping/texture problem:</p>
  1471. </div>
  1472. <div class="listingblock">
  1473. <div class="content">
  1474. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">material.setTexture("ColorMap", this.assetManager.loadTexture(new TextureKey("myTexture.jpg", false)));</code></pre>
  1475. </div>
  1476. </div>
  1477. </div>
  1478. <div class="sect2">
  1479. <h3 id="how-do-i-scale-mirror-or-wrap-a-texture"><a class="anchor" href="#how-do-i-scale-mirror-or-wrap-a-texture"></a>How do I scale, mirror, or wrap a texture?</h3>
  1480. <div class="paragraph">
  1481. <p>You cannot scale a texture, but you scale the texture coordinates of the mesh the texture is applied to:</p>
  1482. </div>
  1483. <div class="listingblock">
  1484. <div class="content">
  1485. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">mesh.scaleTextureCoordinates(new Vector2f(2,2));</code></pre>
  1486. </div>
  1487. </div>
  1488. <div class="paragraph">
  1489. <p>You can choose among various <code>com.jme3.texture.Texture.WrapMode</code>s for individual texture maps of a material: BorderClamp, EdgeClamp, Clamp; MirrorBorderClamp, MirrorEdgeClamp, MirrorClamp; Repeat, MirroredRepeat.</p>
  1490. </div>
  1491. <div class="listingblock">
  1492. <div class="content">
  1493. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">material.getTextureParam("DiffuseMap").getTextureValue().setWrap(WrapMode.Repeat);</code></pre>
  1494. </div>
  1495. </div>
  1496. </div>
  1497. <div class="sect2">
  1498. <h3 id="how-do-i-change-color-or-shininess-of-an-material"><a class="anchor" href="#how-do-i-change-color-or-shininess-of-an-material"></a>How do I change color or shininess of an material?</h3>
  1499. <div class="paragraph">
  1500. <p>Use the AssetManager to load Materials, and change material settings.</p>
  1501. </div>
  1502. <div class="paragraph">
  1503. <p><strong>Learn more:</strong></p>
  1504. </div>
  1505. <div class="ulist">
  1506. <ul>
  1507. <li>
  1508. <p><a href="../beginner/hello_material.html" class="xref page">Hello Material</a></p>
  1509. </li>
  1510. <li>
  1511. <p><a href="../../core/material/how_to_use_materials.html" class="xref page">How To Use Materials</a></p>
  1512. </li>
  1513. <li>
  1514. <p><a href="../../core/material/materials_overview.html" class="xref page">Materials Overview</a>, <a href="../../core/asset/asset_manager.html" class="xref page">Asset Manager</a></p>
  1515. </li>
  1516. </ul>
  1517. </div>
  1518. <div class="paragraph">
  1519. <p><strong>Code sample:</strong></p>
  1520. </div>
  1521. <div class="ulist">
  1522. <ul>
  1523. <li>
  1524. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/material/TestNormalMapping.java">TestNormalMapping.java</a></p>
  1525. </li>
  1526. <li>
  1527. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/model/shape/TestSphere.java">TestSphere.java</a>.</p>
  1528. </li>
  1529. </ul>
  1530. </div>
  1531. </div>
  1532. <div class="sect2">
  1533. <h3 id="how-do-i-make-a-surface-wood-stone-metal-etc"><a class="anchor" href="#how-do-i-make-a-surface-wood-stone-metal-etc"></a>How do I make a surface wood, stone, metal, etc?</h3>
  1534. <div class="paragraph">
  1535. <p>Create Textures as image files. Use the AssetManager to load a Material and use texture mapping for improved looks.</p>
  1536. </div>
  1537. <div class="paragraph">
  1538. <p><strong>Learn more:</strong></p>
  1539. </div>
  1540. <div class="ulist">
  1541. <ul>
  1542. <li>
  1543. <p><a href="../beginner/hello_material.html" class="xref page">Hello Material</a></p>
  1544. </li>
  1545. <li>
  1546. <p><a href="../../core/material/how_to_use_materials.html" class="xref page">How To Use Materials</a></p>
  1547. </li>
  1548. <li>
  1549. <p><a href="../../core/material/materials_overview.html" class="xref page">Materials Overview</a></p>
  1550. </li>
  1551. <li>
  1552. <p><a href="../../core/asset/asset_manager.html" class="xref page">Asset Manager</a></p>
  1553. </li>
  1554. <li>
  1555. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/asset/AssetManager.java">com.jme3.assets.AssetManager</a></p>
  1556. </li>
  1557. <li>
  1558. <p><a href="https://archive.blender.org/wiki/index.php/Doc:Manual/Textures/Maps/Bump_and_Normal_Maps/">Blender: Creating Bump Maps and Normal Maps</a></p>
  1559. </li>
  1560. </ul>
  1561. </div>
  1562. <div class="paragraph">
  1563. <p><strong>Code sample:</strong></p>
  1564. </div>
  1565. <div class="paragraph">
  1566. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/material/TestSimpleBumps.java">TestSimpleBumps.java</a></p>
  1567. </div>
  1568. </div>
  1569. <div class="sect2">
  1570. <h3 id="why-are-materials-too-bright-too-dark-or-flickering"><a class="anchor" href="#why-are-materials-too-bright-too-dark-or-flickering"></a>Why are materials too bright, too dark, or flickering?</h3>
  1571. <div class="paragraph">
  1572. <p>If you use a lit material (based on Lighting.j3md) then you must attach a light source to the rootNode, otherwise you see nothing. If you use lit material colors, make sure you have specified an Ambient color (can be the same as the Diffuse color) if you use an AmbientLight. If you see objects, but they are gray or too dark, set the light color to white, or make it brighter (you can multiply the color value with a scalar), or add a global white light source (AmbientLight). Similarly, if everything is too white, tune down the lights. If materials flicker under a directional light, change the light direction vector. Change the background color (which is independent of light sources) to get a better contrast while debugging a light problem.</p>
  1573. </div>
  1574. </div>
  1575. <div class="sect2">
  1576. <h3 id="how-do-i-make-geometries-cast-a-shadow"><a class="anchor" href="#how-do-i-make-geometries-cast-a-shadow"></a>How do I make geometries cast a shadow?</h3>
  1577. <div class="paragraph">
  1578. <p>Use com.jme3.shadow.BasicShadowRenderer together with com.jme3.light.DirectionalLight, and setShadowMode().</p>
  1579. </div>
  1580. <div class="paragraph">
  1581. <p><strong>Learn more:</strong></p>
  1582. </div>
  1583. <div class="ulist">
  1584. <ul>
  1585. <li>
  1586. <p><a href="../../core/light/light_and_shadow.html" class="xref page">Light and Shadow</a></p>
  1587. </li>
  1588. </ul>
  1589. </div>
  1590. <div class="paragraph">
  1591. <p><strong>Code sample:</strong></p>
  1592. </div>
  1593. <div class="ulist">
  1594. <ul>
  1595. <li>
  1596. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/effect/TestEverything.java">TestEverything.java</a></p>
  1597. </li>
  1598. </ul>
  1599. </div>
  1600. </div>
  1601. <div class="sect2">
  1602. <h3 id="how-do-i-make-materials-transparent"><a class="anchor" href="#how-do-i-make-materials-transparent"></a>How do I make materials transparent?</h3>
  1603. <div class="paragraph">
  1604. <p>Assign a texture with an alpha channel to a Material and set the Material&#8217;s blend mode to alpha. Use this to create transparent or translucent materials such as glass, window panes, water, tree leaves, etc.</p>
  1605. </div>
  1606. <div class="listingblock">
  1607. <div class="content">
  1608. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">material.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);</code></pre>
  1609. </div>
  1610. </div>
  1611. <div class="paragraph">
  1612. <p><strong>Learn more:</strong></p>
  1613. </div>
  1614. <div class="ulist">
  1615. <ul>
  1616. <li>
  1617. <p><a href="../beginner/hello_material.html" class="xref page">Hello Material</a></p>
  1618. </li>
  1619. <li>
  1620. <p><a href="../../core/material/how_to_use_materials.html" class="xref page">How To Use Materials</a></p>
  1621. </li>
  1622. </ul>
  1623. </div>
  1624. </div>
  1625. <div class="sect2">
  1626. <h3 id="how-do-i-force-or-disable-culling"><a class="anchor" href="#how-do-i-force-or-disable-culling"></a>How do I force or disable culling?</h3>
  1627. <div class="paragraph">
  1628. <p>While debugging custom meshes, you can switch the <code>com.jme3.material.RenderState.FaceCullMode</code> off to see the inside and outside of the mesh.</p>
  1629. </div>
  1630. <div class="listingblock">
  1631. <div class="content">
  1632. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">someMaterial.getAdditionalRenderState().setFaceCullMode(FaceCullMode.Off);</code></pre>
  1633. </div>
  1634. </div>
  1635. <div class="paragraph">
  1636. <p>You can also deactivate the <code>com.jme3.scene.Spatial.CullHint</code> of a whole spatial to force jme to calculate it even if it is behind the camera and outside of view.</p>
  1637. </div>
  1638. <div class="listingblock">
  1639. <div class="content">
  1640. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">someNode.setCullHint(CullHint.Never);</code></pre>
  1641. </div>
  1642. </div>
  1643. <div class="paragraph">
  1644. <p><strong>Learn more:</strong></p>
  1645. </div>
  1646. <div class="ulist">
  1647. <ul>
  1648. <li>
  1649. <p><a href="../../core/scene/spatial.html" class="xref page">Spatial</a></p>
  1650. </li>
  1651. </ul>
  1652. </div>
  1653. </div>
  1654. <div class="sect2">
  1655. <h3 id="can-i-draw-only-an-outline-of-the-scene"><a class="anchor" href="#can-i-draw-only-an-outline-of-the-scene"></a>Can I draw only an outline of the scene?</h3>
  1656. <div class="paragraph">
  1657. <p>Add a renders state to the material&#8217;s and activate <code>Wireframe</code>.</p>
  1658. </div>
  1659. <div class="listingblock">
  1660. <div class="content">
  1661. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">material.getAdditionalRenderState().setWireframe(true);</code></pre>
  1662. </div>
  1663. </div>
  1664. <div class="paragraph">
  1665. <p><strong>Learn more:</strong></p>
  1666. </div>
  1667. <div class="ulist">
  1668. <ul>
  1669. <li>
  1670. <p><a href="../how-to/debugging.html" class="xref page">Debugging</a></p>
  1671. </li>
  1672. </ul>
  1673. </div>
  1674. </div>
  1675. </div>
  1676. </div>
  1677. <div class="sect1">
  1678. <h2 id="i-want-to-control-the-camera"><a class="anchor" href="#i-want-to-control-the-camera"></a>I want to control the camera</h2>
  1679. <div class="sectionbody">
  1680. <div class="paragraph">
  1681. <p>The default camera <code>cam</code> is an instance of the <code>Camera</code> class.</p>
  1682. </div>
  1683. <div class="paragraph">
  1684. <p><strong>Learn more:</strong></p>
  1685. </div>
  1686. <div class="ulist">
  1687. <ul>
  1688. <li>
  1689. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/renderer/Camera.java">com.jme3.renderer.Camera</a></p>
  1690. </li>
  1691. </ul>
  1692. </div>
  1693. <div class="sect2">
  1694. <h3 id="how-do-i-keep-the-camera-from-moving"><a class="anchor" href="#how-do-i-keep-the-camera-from-moving"></a>How do I keep the camera from moving?</h3>
  1695. <div class="paragraph">
  1696. <p>SimpleApplication activates <code>flyCam</code> (an instance of <code>FlyByCamera</code>) by default. <code>flyCam</code> causes the camera to move with the mouse and the WASD keys. You can disable flyCam as follows:</p>
  1697. </div>
  1698. <div class="listingblock">
  1699. <div class="content">
  1700. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">flyCam.setEnabled(false);</code></pre>
  1701. </div>
  1702. </div>
  1703. </div>
  1704. <div class="sect2">
  1705. <h3 id="how-do-i-switch-between-third-person-and-first-person-view"><a class="anchor" href="#how-do-i-switch-between-third-person-and-first-person-view"></a>How do I switch between third-person and first-person view ?</h3>
  1706. <div class="paragraph">
  1707. <p>You can activate the FlyBy Cam as a first-person camera.</p>
  1708. </div>
  1709. <div class="listingblock">
  1710. <div class="content">
  1711. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">flyCam.setEnabled(true);</code></pre>
  1712. </div>
  1713. </div>
  1714. <div class="paragraph">
  1715. <p><strong>Learn more:</strong></p>
  1716. </div>
  1717. <div class="ulist">
  1718. <ul>
  1719. <li>
  1720. <p><a href="../beginner/hello_collision.html" class="xref page">Hello Collision</a></p>
  1721. </li>
  1722. </ul>
  1723. </div>
  1724. <div class="paragraph">
  1725. <p><strong>Code sample:</strong></p>
  1726. </div>
  1727. <div class="ulist">
  1728. <ul>
  1729. <li>
  1730. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/input/FlyByCamera.java">com.jme3.input.FlyByCamera</a></p>
  1731. </li>
  1732. </ul>
  1733. </div>
  1734. <div class="paragraph">
  1735. <p>You can also create a third-person chase cam.</p>
  1736. </div>
  1737. <div class="listingblock">
  1738. <div class="content">
  1739. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">flyCam.setEnabled(false);
  1740. chaseCam = new ChaseCamera(cam, spatial, inputManager);</code></pre>
  1741. </div>
  1742. </div>
  1743. <div class="paragraph">
  1744. <p><strong>Learn more:</strong></p>
  1745. </div>
  1746. <div class="ulist">
  1747. <ul>
  1748. <li>
  1749. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/input/ChaseCamera.java">com.jme3.input.ChaseCamera</a></p>
  1750. </li>
  1751. </ul>
  1752. </div>
  1753. <div class="paragraph">
  1754. <p><strong>Code sample:</strong></p>
  1755. </div>
  1756. <div class="paragraph">
  1757. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/input/TestChaseCamera.java">jme3test/input/TestChaseCamera.java</a></p>
  1758. </div>
  1759. </div>
  1760. <div class="sect2">
  1761. <h3 id="how-do-i-increase-camera-speed"><a class="anchor" href="#how-do-i-increase-camera-speed"></a>How do I increase camera speed?</h3>
  1762. <div class="listingblock">
  1763. <div class="content">
  1764. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">flyCam.setMoveSpeed(50f);</code></pre>
  1765. </div>
  1766. </div>
  1767. </div>
  1768. </div>
  1769. </div>
  1770. <div class="sect1">
  1771. <h2 id="actions-interactions-physics"><a class="anchor" href="#actions-interactions-physics"></a>Actions, Interactions, Physics</h2>
  1772. <div class="sectionbody">
  1773. <div class="sect2">
  1774. <h3 id="how-do-i-implement-game-logic-game-mechanics"><a class="anchor" href="#how-do-i-implement-game-logic-game-mechanics"></a>How do I implement game logic / game mechanics?</h3>
  1775. <div class="paragraph">
  1776. <p>Use Controls to define the behaviour of types of Spatials. Use Application States to implement global behaviour, to group subsets of input handlers or <abbr title="Graphical User Interface">GUI</abbr> screens, etc. Use the <code>simpleUpdate()</code> and <code>update()</code> loops for tests and interactions. Use Cinematics to remote-control objects in scenes.</p>
  1777. </div>
  1778. <div class="paragraph">
  1779. <p><strong>Learn more:</strong></p>
  1780. </div>
  1781. <div class="ulist">
  1782. <ul>
  1783. <li>
  1784. <p><a href="../beginner/hello_main_event_loop.html" class="xref page">Hello Loop</a></p>
  1785. </li>
  1786. <li>
  1787. <p><a href="../../core/app/update_loop.html" class="xref page">Update Loop</a></p>
  1788. </li>
  1789. <li>
  1790. <p><a href="../../core/scene/control/custom_controls.html" class="xref page">Custom Controls</a></p>
  1791. </li>
  1792. <li>
  1793. <p><a href="../../core/app/state/application_states.html" class="xref page">Application States</a></p>
  1794. </li>
  1795. <li>
  1796. <p><a href="../../core/cinematic/cinematics.html" class="xref page">Cinematics</a></p>
  1797. </li>
  1798. </ul>
  1799. </div>
  1800. </div>
  1801. <div class="sect2">
  1802. <h3 id="how-do-i-let-players-interact-via-keyboard"><a class="anchor" href="#how-do-i-let-players-interact-via-keyboard"></a>How do I let players interact via keyboard?</h3>
  1803. <div class="paragraph">
  1804. <p>Use com.jme3.input.KeyInput and a Input Listener.</p>
  1805. </div>
  1806. <div class="paragraph">
  1807. <p><strong>Learn more:</strong></p>
  1808. </div>
  1809. <div class="ulist">
  1810. <ul>
  1811. <li>
  1812. <p><a href="../beginner/hello_input_system.html" class="xref page">Hello Input</a></p>
  1813. </li>
  1814. <li>
  1815. <p><a href="../../core/input/input_handling.html" class="xref page">Input Handling</a></p>
  1816. </li>
  1817. </ul>
  1818. </div>
  1819. </div>
  1820. <div class="sect2">
  1821. <h3 id="how-do-i-let-players-interact-by-clicking"><a class="anchor" href="#how-do-i-let-players-interact-by-clicking"></a>How do I let players interact by clicking?</h3>
  1822. <div class="paragraph">
  1823. <p>Players typically click the mouse to pick up objects, to open doors, to shoot a weapon, etc. Use an Input Listener to respond to mouse clicks, then cast a ray from the player; if it intersects with the bounding volume of a spatial, this is the selected target. The links below contain code samples for both <code>fixed</code> crosshair picking and <code>free</code> mouse pointer picking.</p>
  1824. </div>
  1825. <div class="paragraph">
  1826. <p><strong>Learn more:</strong></p>
  1827. </div>
  1828. <div class="ulist">
  1829. <ul>
  1830. <li>
  1831. <p><a href="../beginner/hello_picking.html" class="xref page">Hello Picking</a></p>
  1832. </li>
  1833. <li>
  1834. <p><a href="../../core/input/mouse_picking.html" class="xref page">Mouse Picking</a></p>
  1835. </li>
  1836. <li>
  1837. <p><a href="../../core/collision/collision_and_intersection.html" class="xref page">Collision and Intersection</a></p>
  1838. </li>
  1839. <li>
  1840. <p><a href="../../core/input/input_handling.html" class="xref page">Input Handling</a></p>
  1841. </li>
  1842. <li>
  1843. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-core/src/main/java/com/jme3/bounding">com.jme3.bounding.</a></p>
  1844. </li>
  1845. <li>
  1846. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/math/Ray.java">com.jme3.math.Ray.java</a></p>
  1847. </li>
  1848. <li>
  1849. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/math/Ray.java">com.jme3.collision.CollisionResults.java</a></p>
  1850. </li>
  1851. </ul>
  1852. </div>
  1853. <div class="paragraph">
  1854. <p><strong>Code sample:</strong></p>
  1855. </div>
  1856. <div class="ulist">
  1857. <ul>
  1858. <li>
  1859. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/bounding/TestRayCollision.java">TestRayCollision.java</a></p>
  1860. </li>
  1861. </ul>
  1862. </div>
  1863. </div>
  1864. <div class="sect2">
  1865. <h3 id="how-do-i-animate-characters"><a class="anchor" href="#how-do-i-animate-characters"></a>How do I animate characters?</h3>
  1866. <div class="paragraph">
  1867. <p>Create an animated OgreMesh model with bones in a 3-D mesh editor (e.g. Blender).</p>
  1868. </div>
  1869. <div class="paragraph">
  1870. <p><strong>Learn more:</strong></p>
  1871. </div>
  1872. <div class="ulist">
  1873. <ul>
  1874. <li>
  1875. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-core/src/main/java/com/jme3/animation">com.jme3.animation.</a></p>
  1876. </li>
  1877. <li>
  1878. <p><a href="../beginner/hello_animation.html" class="xref page">Hello Animation</a></p>
  1879. </li>
  1880. <li>
  1881. <p><a href="../../core/animation/animation.html" class="xref page">Animation</a></p>
  1882. </li>
  1883. <li>
  1884. <p><a href="https://archive.blender.org/wiki/index.php/Doc:Tutorials/Animation/BSoD/Character_Animation/">Blender animation tutorial</a></p>
  1885. </li>
  1886. </ul>
  1887. </div>
  1888. <div class="paragraph">
  1889. <p><strong>Code sample:</strong></p>
  1890. </div>
  1891. <div class="ulist">
  1892. <ul>
  1893. <li>
  1894. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-examples/src/main/java/jme3test/model/anim">animation</a></p>
  1895. </li>
  1896. </ul>
  1897. </div>
  1898. </div>
  1899. <div class="sect2">
  1900. <h3 id="how-do-i-keep-players-from-falling-through-walls-and-floors"><a class="anchor" href="#how-do-i-keep-players-from-falling-through-walls-and-floors"></a>How do I keep players from falling through walls and floors?</h3>
  1901. <div class="paragraph">
  1902. <p>Use collision detection. The most common solution is to use jme&#8217;s physics integration, jBullet.</p>
  1903. </div>
  1904. <div class="paragraph">
  1905. <p><strong>Learn more:</strong></p>
  1906. </div>
  1907. <div class="ulist">
  1908. <ul>
  1909. <li>
  1910. <p><a href="../beginner/hello_collision.html" class="xref page">Hello Collision</a></p>
  1911. </li>
  1912. <li>
  1913. <p><a href="../../physics/physics.html" class="xref page">Physics</a></p>
  1914. </li>
  1915. <li>
  1916. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-bullet/src/common/java/com/jme3/bullet">com.jme3.bullet.</a></p>
  1917. </li>
  1918. <li>
  1919. <p>CapsuleCollisionShape versus CompoundCollisionShape, CharacterControl versus RigidBodyControl.</p>
  1920. </li>
  1921. </ul>
  1922. </div>
  1923. </div>
  1924. <div class="sect2">
  1925. <h3 id="how-do-i-make-ballswheelsetc-bounce-and-roll"><a class="anchor" href="#how-do-i-make-ballswheelsetc-bounce-and-roll"></a>How do I make balls/wheels/etc bounce and roll?</h3>
  1926. <div class="paragraph">
  1927. <p>Add physics controls to Spatials and give them spherical or cylindrical bounding volumes.</p>
  1928. </div>
  1929. <div class="paragraph">
  1930. <p><strong>Learn more:</strong></p>
  1931. </div>
  1932. <div class="ulist">
  1933. <ul>
  1934. <li>
  1935. <p><a href="../beginner/hello_physics.html" class="xref page">Hello Physics</a></p>
  1936. </li>
  1937. <li>
  1938. <p><a href="../../physics/physics.html" class="xref page">Physics</a></p>
  1939. </li>
  1940. <li>
  1941. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-core/src/main/java/com/jme3/bounding">com.jme3.bounding.</a></p>
  1942. </li>
  1943. <li>
  1944. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-bullet/src/main/java/com/jme3/bullet/collision">com.jme3.bullet.collisions</a></p>
  1945. </li>
  1946. <li>
  1947. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-bullet/src/common/java/com/jme3/bullet/control/RigidBodyControl.java">com.jme3.bullet.control.RigidBodyControl.java</a></p>
  1948. </li>
  1949. </ul>
  1950. </div>
  1951. <div class="paragraph">
  1952. <p><strong>Code sample:</strong></p>
  1953. </div>
  1954. <div class="ulist">
  1955. <ul>
  1956. <li>
  1957. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/bullet/TestSimplePhysics.java">TestSimplePhysics.java</a></p>
  1958. </li>
  1959. <li>
  1960. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-examples/src/main/java/jme3test/bullet">more physics samples</a></p>
  1961. </li>
  1962. </ul>
  1963. </div>
  1964. </div>
  1965. <div class="sect2">
  1966. <h3 id="how-do-i-debug-weird-physics-behaviour"><a class="anchor" href="#how-do-i-debug-weird-physics-behaviour"></a>How do I debug weird Physics behaviour?</h3>
  1967. <div class="paragraph">
  1968. <p>Maybe your collision shapes overlap – or they are not where you think they are. Make the collision shapes visible by adding the following line after the bulletAppState initialization:</p>
  1969. </div>
  1970. <div class="listingblock">
  1971. <div class="content">
  1972. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">bulletAppState.getPhysicsSpace().enableDebug(assetManager);</code></pre>
  1973. </div>
  1974. </div>
  1975. </div>
  1976. <div class="sect2">
  1977. <h3 id="how-do-i-make-a-walking-character"><a class="anchor" href="#how-do-i-make-a-walking-character"></a>How do I make a walking character?</h3>
  1978. <div class="paragraph">
  1979. <p>You can use jBullet&#8217;s CharacterControl that locks a physical object upright, so it does not tip over when moving/walking (as tall physical objects are typically wanted to).</p>
  1980. </div>
  1981. <div class="paragraph">
  1982. <p><strong>Learn more:</strong></p>
  1983. </div>
  1984. <div class="ulist">
  1985. <ul>
  1986. <li>
  1987. <p><a href="../../physics/control/walking_character.html#bettercharactercontrol" class="xref page">BetterCharacterControl</a></p>
  1988. </li>
  1989. </ul>
  1990. </div>
  1991. <div class="paragraph">
  1992. <p><strong>Code Sample:</strong></p>
  1993. </div>
  1994. <div class="ulist">
  1995. <ul>
  1996. <li>
  1997. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/bullet/TestQ3.java">TestQ3.java</a> (first-person)</p>
  1998. </li>
  1999. <li>
  2000. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/bullet/TestPhysicsCharacter.java">TestPhysicsCharacter.java</a> (third-person)</p>
  2001. </li>
  2002. </ul>
  2003. </div>
  2004. </div>
  2005. <div class="sect2">
  2006. <h3 id="how-do-i-steer-vehicles"><a class="anchor" href="#how-do-i-steer-vehicles"></a>How do I steer vehicles?</h3>
  2007. <div class="paragraph">
  2008. <p>Use a VehicleControl that supports suspension behavior.</p>
  2009. </div>
  2010. <div class="paragraph">
  2011. <p><strong>Learn more:</strong></p>
  2012. </div>
  2013. <div class="ulist">
  2014. <ul>
  2015. <li>
  2016. <p><a href="../../physics/control/vehicles.html" class="xref page">Vehicles</a></p>
  2017. </li>
  2018. <li>
  2019. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-bullet/src/common/java/com/jme3/bullet/control/">com.jme3.bullet.control.VehicleControl</a></p>
  2020. </li>
  2021. </ul>
  2022. </div>
  2023. <div class="paragraph">
  2024. <p><strong>Code Sample:</strong></p>
  2025. </div>
  2026. <div class="ulist">
  2027. <ul>
  2028. <li>
  2029. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/bullet/TestFancyCar.java">TestFancyCar.java</a> (Press HUJK keys to steer, spacebar to jump.)</p>
  2030. </li>
  2031. </ul>
  2032. </div>
  2033. </div>
  2034. <div class="sect2">
  2035. <h3 id="can-objects-swing-like-a-pendulums-chains-ropebridges"><a class="anchor" href="#can-objects-swing-like-a-pendulums-chains-ropebridges"></a>Can objects swing like a pendulums, chains, ropebridges?</h3>
  2036. <div class="paragraph">
  2037. <p>Use a PhysicsControl&#8217;s hinges and joints.</p>
  2038. </div>
  2039. <div class="paragraph">
  2040. <p><strong>Learn more:</strong></p>
  2041. </div>
  2042. <div class="ulist">
  2043. <ul>
  2044. <li>
  2045. <p><a href="../../physics/joint/hinges_and_joints.html" class="xref page">Hinges and Joints</a></p>
  2046. </li>
  2047. <li>
  2048. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/bullet/TestPhysicsHingeJoint.java">TestPhysicsHingeJoint.java</a> (Press HK keys to turn, spacebar to swing.)</p>
  2049. </li>
  2050. </ul>
  2051. </div>
  2052. </div>
  2053. </div>
  2054. </div>
  2055. <div class="sect1">
  2056. <h2 id="default-gui-display"><a class="anchor" href="#default-gui-display"></a>Default GUI Display</h2>
  2057. <div class="sectionbody">
  2058. <div class="sect2">
  2059. <h3 id="what-are-these-fpsobjectsverticestriangles-statistics"><a class="anchor" href="#what-are-these-fpsobjectsverticestriangles-statistics"></a>What are these FPS/Objects/Vertices/Triangles statistics?</h3>
  2060. <div class="paragraph">
  2061. <p>At the bottom left of every default SimpleGame, you see the <a href="../../core/app/statsview.html" class="xref page">StatsView</a> and the FPS (frames per seconds) view. These views provide you with extra information during the development phase. For example, if you notice the object count is increasing and the FPS is decreasing, then you know that your code attaches too many objects and does not detach enough of them again (maybe a loop gone wild?).</p>
  2062. </div>
  2063. </div>
  2064. <div class="sect2">
  2065. <h3 id="how-do-i-get-rid-of-the-fpsobjects-statistics"><a class="anchor" href="#how-do-i-get-rid-of-the-fpsobjects-statistics"></a>How do I get rid of the FPS/Objects statistics?</h3>
  2066. <div class="paragraph">
  2067. <p>In the application&#8217;s simpleInitApp() method, call:</p>
  2068. </div>
  2069. <div class="listingblock">
  2070. <div class="content">
  2071. <pre class="highlightjs highlight"><code class="language-none hljs">setDisplayFps(false); // to hide the FPS
  2072. setDisplayStatView(false); // to hide the statistics</code></pre>
  2073. </div>
  2074. </div>
  2075. </div>
  2076. <div class="sect2">
  2077. <h3 id="how-do-i-display-score-health-mini-maps-status-icons"><a class="anchor" href="#how-do-i-display-score-health-mini-maps-status-icons"></a>How do I display score, health, mini-maps, status icons?</h3>
  2078. <div class="paragraph">
  2079. <p>Attach text and pictures to the orthogonal <code>guiNode</code> to create a heads-up display (<a href="http://en.wikipedia.org/wiki/HUD_%28video_gaming%29">HUD</a>).</p>
  2080. </div>
  2081. <div class="paragraph">
  2082. <p><strong>Learn more:</strong></p>
  2083. </div>
  2084. <div class="ulist">
  2085. <ul>
  2086. <li>
  2087. <p><a href="../../core/ui/hud.html" class="xref page">HUD</a></p>
  2088. </li>
  2089. <li>
  2090. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-core/src/main/java/com/jme3/font">com.jme3.font.</a></p>
  2091. </li>
  2092. <li>
  2093. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/ui/Picture.java">com.jme3.ui.Picture</a> guiNode.attachChild()</p>
  2094. </li>
  2095. </ul>
  2096. </div>
  2097. <div class="paragraph">
  2098. <p><strong>Code Sample:</strong></p>
  2099. </div>
  2100. <div class="ulist">
  2101. <ul>
  2102. <li>
  2103. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/gui/TestOrtho.java">TestOrtho.java</a></p>
  2104. </li>
  2105. <li>
  2106. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/gui/TestBitmapFont.java">TestBitmapFont.java</a></p>
  2107. </li>
  2108. </ul>
  2109. </div>
  2110. </div>
  2111. <div class="sect2">
  2112. <h3 id="how-do-i-display-buttons-and-ui-controls"><a class="anchor" href="#how-do-i-display-buttons-and-ui-controls"></a>How do I display buttons and UI controls?</h3>
  2113. <div class="paragraph">
  2114. <p>You may want to display buttons to let the player switch between the game, settings screen, and score screens. For buttons and other more advanced UI controls, jME supports the Nifty <abbr title="Graphical User Interface">GUI</abbr> library.</p>
  2115. </div>
  2116. <div class="paragraph">
  2117. <p><strong>Learn more:</strong></p>
  2118. </div>
  2119. <div class="ulist">
  2120. <ul>
  2121. <li>
  2122. <p><a href="../../core/gui/nifty_gui.html" class="xref page">Nifty GUI</a></p>
  2123. </li>
  2124. </ul>
  2125. </div>
  2126. <div class="paragraph">
  2127. <p><strong>Code Sample:</strong></p>
  2128. </div>
  2129. <div class="ulist">
  2130. <ul>
  2131. <li>
  2132. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/niftygui/TestNiftyGui.java">TestNiftyGui.java</a></p>
  2133. </li>
  2134. </ul>
  2135. </div>
  2136. </div>
  2137. <div class="sect2">
  2138. <h3 id="how-do-i-display-a-loading-screen"><a class="anchor" href="#how-do-i-display-a-loading-screen"></a>How do i display a loading screen?</h3>
  2139. <div class="paragraph">
  2140. <p>Instead of having a frozen frame while your games loads, you can have a loading screen while it loads.</p>
  2141. </div>
  2142. <div class="paragraph">
  2143. <p><strong>Learn more:</strong></p>
  2144. </div>
  2145. <div class="ulist">
  2146. <ul>
  2147. <li>
  2148. <p><a href="../../core/gui/loading_screen.html" class="xref page">Loading screen</a></p>
  2149. </li>
  2150. </ul>
  2151. </div>
  2152. </div>
  2153. </div>
  2154. </div>
  2155. <div class="sect1">
  2156. <h2 id="nifty-gui"><a class="anchor" href="#nifty-gui"></a>Nifty GUI</h2>
  2157. <div class="sectionbody">
  2158. <div class="sect2">
  2159. <h3 id="i-get-nosuchelementexception-when-adding-controls-buttons-etc"><a class="anchor" href="#i-get-nosuchelementexception-when-adding-controls-buttons-etc"></a>I get NoSuchElementException when adding controls (buttons etc)!</h3>
  2160. <div class="paragraph">
  2161. <p>Verify that you include a controls definition file link in your XML: This is the default:</p>
  2162. </div>
  2163. <div class="listingblock">
  2164. <div class="content">
  2165. <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;useControls filename="nifty-default-controls.xml"/&gt;</code></pre>
  2166. </div>
  2167. </div>
  2168. </div>
  2169. <div class="sect2">
  2170. <h3 id="where-can-i-find-example-code-of-nifty-guis-xml-and-java-classes"><a class="anchor" href="#where-can-i-find-example-code-of-nifty-guis-xml-and-java-classes"></a>Where can I find example code of Nifty GUI&#8217;s XML and Java classes?</h3>
  2171. <div class="paragraph">
  2172. <p><a href="https://github.com/nifty-gui/nifty-gui">https://github.com/nifty-gui/nifty-gui</a></p>
  2173. </div>
  2174. </div>
  2175. <div class="sect2">
  2176. <h3 id="is-there-java-doc-for-nifty-gui"><a class="anchor" href="#is-there-java-doc-for-nifty-gui"></a>Is there Java Doc for Nifty GUI?</h3>
  2177. <div class="paragraph">
  2178. <p><a href="../../core/gui/nifty_gui_java_interaction.html#useful_links" class="xref page">Nifty GUI 1.3 Java docs</a></p>
  2179. </div>
  2180. </div>
  2181. </div>
  2182. </div>
  2183. <div class="sect1">
  2184. <h2 id="i-want-to-create-an-environment-with-sounds-effects-and-landscapes"><a class="anchor" href="#i-want-to-create-an-environment-with-sounds-effects-and-landscapes"></a>I want to create an environment with sounds, effects, and landscapes</h2>
  2185. <div class="sectionbody">
  2186. <div class="sect2">
  2187. <h3 id="how-do-i-play-sounds-and-noises"><a class="anchor" href="#how-do-i-play-sounds-and-noises"></a>How do I play sounds and noises?</h3>
  2188. <div class="paragraph">
  2189. <p>Use AudioRenderer, Listener, and AudioNode from com.jme3.audio..</p>
  2190. </div>
  2191. <div class="paragraph">
  2192. <p><strong>Learn more:</strong></p>
  2193. </div>
  2194. <div class="ulist">
  2195. <ul>
  2196. <li>
  2197. <p><a href="../beginner/hello_audio.html" class="xref page">Hello Audio</a></p>
  2198. </li>
  2199. <li>
  2200. <p><a href="../../core/audio/audio.html" class="xref page">Audio</a></p>
  2201. </li>
  2202. </ul>
  2203. </div>
  2204. <div class="paragraph">
  2205. <p><strong>Code sample:</strong></p>
  2206. </div>
  2207. <div class="ulist">
  2208. <ul>
  2209. <li>
  2210. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/tree/master/jme3-examples/src/main/java/jme3test/audio">audio</a></p>
  2211. </li>
  2212. </ul>
  2213. </div>
  2214. </div>
  2215. <div class="sect2">
  2216. <h3 id="how-do-i-make-fire-smoke-explosions-swarms-magic-spells"><a class="anchor" href="#how-do-i-make-fire-smoke-explosions-swarms-magic-spells"></a>How do I make fire, smoke, explosions, swarms, magic spells?</h3>
  2217. <div class="paragraph">
  2218. <p>For swarm like effects you use particle emitters.</p>
  2219. </div>
  2220. <div class="paragraph">
  2221. <p><strong>Learn more:</strong></p>
  2222. </div>
  2223. <div class="ulist">
  2224. <ul>
  2225. <li>
  2226. <p><a href="../beginner/hello_effects.html" class="xref page">Hello Effects</a></p>
  2227. </li>
  2228. <li>
  2229. <p><a href="../../core/effect/particle_emitters.html" class="xref page">Particle Emitters</a></p>
  2230. </li>
  2231. <li>
  2232. <p><a href="../../core/effect/bloom_and_glow.html" class="xref page">Bloom and Glow</a></p>
  2233. </li>
  2234. <li>
  2235. <p><a href="../../core/effect/effects_overview.html" class="xref page">Effects Overview</a></p>
  2236. </li>
  2237. <li>
  2238. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/effect/shapes/EmitterSphereShape.java">com.jme3.effect.EmitterSphereShape.java</a></p>
  2239. </li>
  2240. <li>
  2241. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/java/com/jme3/effect/ParticleEmitter.java">com.jme3.effect.ParticleEmitter.java</a></p>
  2242. </li>
  2243. </ul>
  2244. </div>
  2245. <div class="paragraph">
  2246. <p><strong>Code sample:</strong></p>
  2247. </div>
  2248. <div class="ulist">
  2249. <ul>
  2250. <li>
  2251. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/effect/TestExplosionEffect.java">TestExplosionEffect.java</a></p>
  2252. </li>
  2253. <li>
  2254. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/effect/TestMovingParticle.java">TestMovingParticle.java</a></p>
  2255. </li>
  2256. <li>
  2257. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/effect/TestSoftParticles.java">TestSoftParticle.java</a></p>
  2258. </li>
  2259. </ul>
  2260. </div>
  2261. </div>
  2262. <div class="sect2">
  2263. <h3 id="how-do-i-make-water-waves-reflections"><a class="anchor" href="#how-do-i-make-water-waves-reflections"></a>How do I make water, waves, reflections?</h3>
  2264. <div class="paragraph">
  2265. <p>Use a special post-processor renderer from com.jme3.water..</p>
  2266. </div>
  2267. <div class="paragraph">
  2268. <p><strong>Learn more:</strong></p>
  2269. </div>
  2270. <div class="ulist">
  2271. <ul>
  2272. <li>
  2273. <p><a href="../../core/effect/water.html" class="xref page">Water</a></p>
  2274. </li>
  2275. <li>
  2276. <p><a href="../../core/effect/post-processor_water.html" class="xref page">Post-Processor Water</a></p>
  2277. </li>
  2278. </ul>
  2279. </div>
  2280. <div class="paragraph">
  2281. <p><strong>Code sample:</strong></p>
  2282. </div>
  2283. <div class="ulist">
  2284. <ul>
  2285. <li>
  2286. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/water/TestSimpleWater.java">TestSimpleWater.java</a></p>
  2287. </li>
  2288. <li>
  2289. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/water/TestSceneWater.java">TestSceneWater.java</a></p>
  2290. </li>
  2291. <li>
  2292. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/water/TestPostWaterLake.java">TestPostWaterLake.java</a></p>
  2293. </li>
  2294. <li>
  2295. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/water/TestPostWater.java">TestPostWater.java</a></p>
  2296. </li>
  2297. </ul>
  2298. </div>
  2299. </div>
  2300. <div class="sect2">
  2301. <h3 id="how-do-i-make-fog-bloom-blur-light-scattering"><a class="anchor" href="#how-do-i-make-fog-bloom-blur-light-scattering"></a>How do I make fog, bloom, blur, light scattering?</h3>
  2302. <div class="paragraph">
  2303. <p>Use special post-processor renderers from com.jme3.post..</p>
  2304. </div>
  2305. <div class="paragraph">
  2306. <p><strong>Learn more:</strong></p>
  2307. </div>
  2308. <div class="ulist">
  2309. <ul>
  2310. <li>
  2311. <p><a href="../../core/effect/effects_overview.html" class="xref page">Effects Overview</a></p>
  2312. </li>
  2313. </ul>
  2314. </div>
  2315. </div>
  2316. <div class="sect2">
  2317. <h3 id="how-do-i-generate-a-terrain"><a class="anchor" href="#how-do-i-generate-a-terrain"></a>How do I generate a terrain?</h3>
  2318. <div class="paragraph">
  2319. <p>Use com.jme3.terrain.. The JMonkeyEngine also provides you with a Terrain Editor plugin.</p>
  2320. </div>
  2321. <div class="paragraph">
  2322. <p><strong>Learn more:</strong></p>
  2323. </div>
  2324. <div class="ulist">
  2325. <ul>
  2326. <li>
  2327. <p><a href="../beginner/hello_terrain.html" class="xref page">Hello Terrain</a></p>
  2328. </li>
  2329. <li>
  2330. <p><a href="../../core/terrain/terrain.html" class="xref page">Terrain</a></p>
  2331. </li>
  2332. <li>
  2333. <p><a href="../../sdk/terrain_editor.html" class="xref page">Terrain Editor</a></p>
  2334. </li>
  2335. </ul>
  2336. </div>
  2337. <div class="paragraph">
  2338. <p><strong>Code sample:</strong></p>
  2339. </div>
  2340. <div class="ulist">
  2341. <ul>
  2342. <li>
  2343. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/terrain/TerrainTest.java">TerrainTest.java</a></p>
  2344. </li>
  2345. </ul>
  2346. </div>
  2347. </div>
  2348. <div class="sect2">
  2349. <h3 id="how-do-i-make-a-sky"><a class="anchor" href="#how-do-i-make-a-sky"></a>How do I make a sky?</h3>
  2350. <div class="paragraph">
  2351. <p><strong>Code sample:</strong></p>
  2352. </div>
  2353. <div class="ulist">
  2354. <ul>
  2355. <li>
  2356. <p><a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/texture/TestSkyLoading.java">TestSkyLoading.java</a></p>
  2357. </li>
  2358. </ul>
  2359. </div>
  2360. <div class="listingblock">
  2361. <div class="content">
  2362. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">rootNode.attachChild(SkyFactory.createSky( assetManager,
  2363. "Textures/Sky/Bright/BrightSky.dds", false));
  2364. skyGeo.setQueueBucket(Bucket.Sky)</code></pre>
  2365. </div>
  2366. </div>
  2367. <div class="paragraph">
  2368. <p><strong>Learn more:</strong></p>
  2369. </div>
  2370. <div class="ulist">
  2371. <ul>
  2372. <li>
  2373. <p><a href="../../core/util/sky.html" class="xref page">Sky</a></p>
  2374. </li>
  2375. </ul>
  2376. </div>
  2377. </div>
  2378. </div>
  2379. </div>
  2380. <div class="sect1">
  2381. <h2 id="i-want-to-access-to-back-end-properties"><a class="anchor" href="#i-want-to-access-to-back-end-properties"></a>I want to access to back-end properties</h2>
  2382. <div class="sectionbody">
  2383. <div class="sect2">
  2384. <h3 id="how-do-i-read-out-graphic-card-capabilities"><a class="anchor" href="#how-do-i-read-out-graphic-card-capabilities"></a>How do I read out graphic card capabilities?</h3>
  2385. <div class="paragraph">
  2386. <p>If your game is heavily using features that older cards do not support, you can <a href="../how-to/java/read_graphic_card_capabilites.html" class="xref page">Read Graphic Card Capabilities</a> in the beginning before starting the app, and then decide how to proceed.</p>
  2387. </div>
  2388. <div class="listingblock">
  2389. <div class="content">
  2390. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">Collection&lt;com.jme3.renderer.Caps&gt; caps = renderer.getCaps();
  2391. Logger.getLogger(HelloJME3.class.getName()).log(Level.INFO, "Capabilities: {0}", caps.toString());</code></pre>
  2392. </div>
  2393. </div>
  2394. </div>
  2395. <div class="sect2">
  2396. <h3 id="how-do-i-run-jmonkeyengine-3-with-opengl1"><a class="anchor" href="#how-do-i-run-jmonkeyengine-3-with-opengl1"></a>How do I Run jMonkeyEngine 3 with OpenGL1?</h3>
  2397. <div class="paragraph">
  2398. <p>In your game, add</p>
  2399. </div>
  2400. <div class="listingblock">
  2401. <div class="content">
  2402. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">settings.setRenderer(AppSettings.LWJGL_OPENGL1)</code></pre>
  2403. </div>
  2404. </div>
  2405. <div class="paragraph">
  2406. <p>to the <a href="../../core/system/appsettings.html" class="xref page">AppSettings</a> (see details there).<br>
  2407. For the jMonkeyEngine SDK itself, choose Options &gt; OpenGL, and check OpenGL1.</p>
  2408. </div>
  2409. </div>
  2410. <div class="sect2">
  2411. <h3 id="how-do-i-optimize-the-heck-out-of-the-scene-graph"><a class="anchor" href="#how-do-i-optimize-the-heck-out-of-the-scene-graph"></a>How do I optimize the heck out of the Scene Graph?</h3>
  2412. <div class="paragraph">
  2413. <p>You can batch all Geometries in a scene (or a subnode) that remains static.</p>
  2414. </div>
  2415. <div class="listingblock">
  2416. <div class="content">
  2417. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">jme3tools.optimize.GeometryBatchFactory.optimize(rootNode);</code></pre>
  2418. </div>
  2419. </div>
  2420. <div class="paragraph">
  2421. <p>Batching means that all Geometries with the same Material are combined into one mesh. This optimization only has an effect if you use only few (roughly up to 32) Materials total. The pay-off is that batching takes extra time when the game is initialized.</p>
  2422. </div>
  2423. </div>
  2424. <div class="sect2">
  2425. <h3 id="how-do-i-prevent-users-from-unzipping-my-jar"><a class="anchor" href="#how-do-i-prevent-users-from-unzipping-my-jar"></a>How do I prevent users from unzipping my JAR?</h3>
  2426. <div class="paragraph">
  2427. <p>Add an <a href="https://github.com/Guardsquare/proguard">obfuscator to the Ant script</a>. The SDK comes with a basic obfuscation script that you can enable in the project settings.</p>
  2428. </div>
  2429. </div>
  2430. </div>
  2431. </div>
  2432. <div class="sect1">
  2433. <h2 id="i-want-to-do-maths"><a class="anchor" href="#i-want-to-do-maths"></a>I want to do maths</h2>
  2434. <div class="sectionbody">
  2435. <div class="sect2">
  2436. <h3 id="what-does-addlocal-multlocal-etc-mean"><a class="anchor" href="#what-does-addlocal-multlocal-etc-mean"></a>What does addLocal() / multLocal() etc mean?</h3>
  2437. <div class="paragraph">
  2438. <p>Many maths functions (mult(), add(), subtract(), etc) come as local and a non-local variant (multLocal(), addLocal(), subtractLocal(), etc).</p>
  2439. </div>
  2440. <div class="olist arabic">
  2441. <ol class="arabic">
  2442. <li>
  2443. <p>Non-local means a new independent object is created (similar to clone()) as a return value. Use non-local methods if you want to keep using the old value of the object calling the method.</p>
  2444. <div class="ulist">
  2445. <ul>
  2446. <li>
  2447. <p>Example 1: <code>Quaternion q1 = q2.mult(q3);</code></p>
  2448. <div class="ulist">
  2449. <ul>
  2450. <li>
  2451. <p>Returns the result as a new <a href="rotate.html" class="xref page">Quaternion</a> q1.</p>
  2452. </li>
  2453. <li>
  2454. <p>The involved objects q2 and q3 stay as they are and can be reused.</p>
  2455. </li>
  2456. </ul>
  2457. </div>
  2458. </li>
  2459. <li>
  2460. <p>Example 2: <code>v.mult(b).add(b);</code></p>
  2461. <div class="ulist">
  2462. <ul>
  2463. <li>
  2464. <p><strong>Watch out:</strong> This calculates the expected result, but unless you actually use the return value, it is discarded!</p>
  2465. </li>
  2466. </ul>
  2467. </div>
  2468. </li>
  2469. </ul>
  2470. </div>
  2471. </li>
  2472. <li>
  2473. <p>Local means that no new objects are created, instead, the calling object is modified. Use this if you are sure you no longer need the old value of the calling object.</p>
  2474. <div class="ulist">
  2475. <ul>
  2476. <li>
  2477. <p>Example 1: <code>q2.multLocal(q3)</code></p>
  2478. <div class="ulist">
  2479. <ul>
  2480. <li>
  2481. <p>Calculates q2*q3 without creating temp objects.</p>
  2482. </li>
  2483. <li>
  2484. <p>The result is stored in the calling object q2. The old value of q2 is gone.</p>
  2485. </li>
  2486. <li>
  2487. <p>Object q3 stays as it was.</p>
  2488. </li>
  2489. </ul>
  2490. </div>
  2491. </li>
  2492. <li>
  2493. <p>Example 2: <code>v.multLocal(a).addLocal(b);</code></p>
  2494. <div class="ulist">
  2495. <ul>
  2496. <li>
  2497. <p>Calculates the expected result without creating temp objects.</p>
  2498. </li>
  2499. <li>
  2500. <p>The result is stored in the calling object v. The old value of v is gone.</p>
  2501. </li>
  2502. <li>
  2503. <p>The objects a and b stay as they were.</p>
  2504. </li>
  2505. </ul>
  2506. </div>
  2507. </li>
  2508. </ul>
  2509. </div>
  2510. </li>
  2511. </ol>
  2512. </div>
  2513. </div>
  2514. <div class="sect2">
  2515. <h3 id="what-is-the-difference-between-world-and-local-coordinates"><a class="anchor" href="#what-is-the-difference-between-world-and-local-coordinates"></a>What is the difference between World and Local coordinates?</h3>
  2516. <div class="paragraph">
  2517. <p>World coordinates of a Spatial are its absolute coordinates in the 3D scene (this is like giving GPS coordinates). Local coordinates are relative to the Spatial&#8217;s parent Spatial (this is like saying, <code>I&#8217;m ten meters left of the entrance</code>).</p>
  2518. </div>
  2519. </div>
  2520. <div class="sect2">
  2521. <h3 id="how-do-i-convert-degrees-to-radians"><a class="anchor" href="#how-do-i-convert-degrees-to-radians"></a>How do I convert Degrees to Radians?</h3>
  2522. <div class="paragraph">
  2523. <p>Multiply degree value by FastMath.DEG_TO_RAD to convert it to radians.</p>
  2524. </div>
  2525. </div>
  2526. </div>
  2527. </div>
  2528. <nav class="pagination">
  2529. <span class="prev"><a href="optimization.html">Optimization</a></span>
  2530. <span class="next"><a href="math_for_dummies.html">Math for Dummies</a></span>
  2531. </nav>
  2532. </article>
  2533. <aside class="toc sidebar" data-title="Contents" data-levels="2">
  2534. <div class="toc-menu"></div>
  2535. </aside>
  2536. </div>
  2537. </main>
  2538. </div>
  2539. <footer class="footer">
  2540. <p>Copyright 2020 jMonkeyEngine Wiki Contributors. Licensed BSD-3.</p>
  2541. </footer>
  2542. <script src="../../../../_/js/vendor/docsearch.min.js"></script>
  2543. <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js -->
  2544. <script>
  2545. var search = docsearch({
  2546. apiKey: 'a736b6d93de805e26ec2f49b55013fbd',
  2547. indexName: 'jmonkeyengine',
  2548. inputSelector: '#search-input',
  2549. autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
  2550. algoliaOptions: { hitsPerPage: 10 }
  2551. }).autocomplete
  2552. search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
  2553. function focusSearchInput () { document.querySelector('#search-input').focus() }
  2554. if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput)
  2555. </script>
  2556. <script src="../../../../_/js/site.js"></script>
  2557. <script async src="../../../../_/js/vendor/highlight.js"></script>
  2558. </body>
  2559. </html>