blender.html 84 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170
  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>Creating assets in Blender3D :: jMonkeyEngine Docs</title>
  7. <link rel="canonical" href="https://wiki.jmonkeyengine.org/docs/3.8/tutorials/how-to/modeling/blender/blender.html">
  8. <link rel="prev" href="../3dsmax/3dsmax.html">
  9. <link rel="next" href="blender_buffer_clearing.html">
  10. <meta name="generator" content="Antora 3.0.1">
  11. <link rel="stylesheet" href="../../../../../../_/css/site.css">
  12. <meta property="og:image" content="https://wiki.jmonkeyengine.org/_/img/iconx128.png">
  13. <meta property="og:description" content="Creating assets in Blender3D">
  14. <meta property="og:title" content="jMonkeyEngine Docs">
  15. <link rel="stylesheet" href="../../../../../../_/css/site-extra.css">
  16. <link rel="stylesheet" href="../../../../../../_/css/vendor/docsearch.min.css">
  17. <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css -->
  18. <link rel="icon" href="../../../../../../_/img/favicon.ico" type="image/x-icon">
  19. </head>
  20. <body class="article">
  21. <header class="header">
  22. <nav class="navbar">
  23. <div class="navbar-brand">
  24. <a class="navbar-item" href="https://wiki.jmonkeyengine.org">
  25. <img alt="" src="../../../../../../_/img/jme-logo.png" height="32" type="image/x-icon">
  26. </a>
  27. <div class="navbar-item hide-for-print">
  28. <input id="search-input" type="text" placeholder="Search docs">
  29. </div>
  30. <button class="navbar-burger" data-target="topbar-nav">
  31. <span></span>
  32. <span></span>
  33. <span></span>
  34. </button>
  35. </div>
  36. <div id="topbar-nav" class="navbar-menu">
  37. <div class="navbar-end">
  38. <div class="navbar-item theme-switch-wrapper">
  39. <label class="theme-switch" for="checkbox">
  40. <input type="checkbox" id="checkbox" />
  41. <div class="slider round"></div>
  42. </label>
  43. </div>
  44. <a class="navbar-item" href="https://github.com/jmonkeyengine/wiki">Github</a>
  45. </div>
  46. </div>
  47. </nav>
  48. </header>
  49. <div class="body">
  50. <div class="nav-container" data-component="docs" data-version="3.8">
  51. <aside class="nav">
  52. <div class="panels">
  53. <div class="nav-panel-menu is-active" data-panel="menu">
  54. <nav class="nav-menu">
  55. <h3 class="title"><a href="../../../../documentation.html">JME</a></h3>
  56. <ul class="nav-list">
  57. <li class="nav-item" data-depth="0">
  58. <ul class="nav-list">
  59. <li class="nav-item" data-depth="1">
  60. <a class="nav-link" href="../../../../documentation.html">Getting Started</a>
  61. </li>
  62. <li class="nav-item" data-depth="1">
  63. <a class="nav-link" href="https://javadoc.jmonkeyengine.org/v3.4.1-stable">JavaDoc</a>
  64. </li>
  65. <li class="nav-item" data-depth="1">
  66. <a class="nav-link" href="../../../../release.html">Release Guide</a>
  67. </li>
  68. </ul>
  69. </li>
  70. <li class="nav-item" data-depth="0">
  71. <ul class="nav-list">
  72. <li class="nav-item" data-depth="1">
  73. <button class="nav-item-toggle"></button>
  74. <a class="nav-link" href="../../../beginner/beginner.html">Beginner Tutorials</a>
  75. <ul class="nav-list">
  76. <li class="nav-item" data-depth="2">
  77. <a class="nav-link" href="../../../beginner/hello_simpleapplication.html">Hello SimpleApplication</a>
  78. </li>
  79. <li class="nav-item" data-depth="2">
  80. <a class="nav-link" href="../../../beginner/hello_node.html">Hello Node</a>
  81. </li>
  82. <li class="nav-item" data-depth="2">
  83. <a class="nav-link" href="../../../beginner/hello_asset.html">Hello Asset</a>
  84. </li>
  85. <li class="nav-item" data-depth="2">
  86. <a class="nav-link" href="../../../beginner/hello_main_event_loop.html">Hello Update Loop</a>
  87. </li>
  88. <li class="nav-item" data-depth="2">
  89. <a class="nav-link" href="../../../beginner/hello_input_system.html">Hello Input System</a>
  90. </li>
  91. <li class="nav-item" data-depth="2">
  92. <a class="nav-link" href="../../../beginner/hello_material.html">Hello Material</a>
  93. </li>
  94. <li class="nav-item" data-depth="2">
  95. <a class="nav-link" href="../../../beginner/hello_animation.html">Hello Animation</a>
  96. </li>
  97. <li class="nav-item" data-depth="2">
  98. <a class="nav-link" href="../../../beginner/hello_picking.html">Hello Picking</a>
  99. </li>
  100. <li class="nav-item" data-depth="2">
  101. <a class="nav-link" href="../../../beginner/hello_collision.html">Hello Collision</a>
  102. </li>
  103. <li class="nav-item" data-depth="2">
  104. <a class="nav-link" href="../../../beginner/hello_terrain.html">Hello Terrain</a>
  105. </li>
  106. <li class="nav-item" data-depth="2">
  107. <a class="nav-link" href="../../../beginner/hello_audio.html">Hello Audio</a>
  108. </li>
  109. <li class="nav-item" data-depth="2">
  110. <a class="nav-link" href="../../../beginner/hello_effects.html">Hello Effects</a>
  111. </li>
  112. <li class="nav-item" data-depth="2">
  113. <a class="nav-link" href="../../../beginner/hello_physics.html">Hello Physics</a>
  114. </li>
  115. </ul>
  116. </li>
  117. <li class="nav-item" data-depth="1">
  118. <button class="nav-item-toggle"></button>
  119. <span class="nav-text">Key Concepts</span>
  120. <ul class="nav-list">
  121. <li class="nav-item" data-depth="2">
  122. <a class="nav-link" href="../../../concepts/best_practices.html">Best Practices</a>
  123. </li>
  124. <li class="nav-item" data-depth="2">
  125. <a class="nav-link" href="../../../concepts/optimization.html">Optimization</a>
  126. </li>
  127. <li class="nav-item" data-depth="2">
  128. <a class="nav-link" href="../../../concepts/faq.html">Frequently Asked Questions</a>
  129. </li>
  130. <li class="nav-item" data-depth="2">
  131. <a class="nav-link" href="../../../concepts/math_for_dummies.html">Math for Dummies</a>
  132. </li>
  133. <li class="nav-item" data-depth="2">
  134. <a class="nav-link" href="../../../concepts/math.html">Math overview</a>
  135. </li>
  136. <li class="nav-item" data-depth="2">
  137. <a class="nav-link" href="../../../concepts/math_cheet_sheet.html">3D math "cheat sheet"</a>
  138. </li>
  139. <li class="nav-item" data-depth="2">
  140. <a class="nav-link" href="../../../concepts/rotate.html">3-D Rotation</a>
  141. </li>
  142. <li class="nav-item" data-depth="2">
  143. <a class="nav-link" href="../../../concepts/math_video_tutorials.html">Math video tutorial series</a>
  144. </li>
  145. <li class="nav-item" data-depth="2">
  146. <a class="nav-link" href="../../../concepts/multi-media_asset_pipeline.html">Multi-Media Asset Pipeline</a>
  147. </li>
  148. <li class="nav-item" data-depth="2">
  149. <a class="nav-link" href="../../../concepts/the_scene_graph.html">The Scene Graph</a>
  150. </li>
  151. <li class="nav-item" data-depth="2">
  152. <a class="nav-link" href="../../../concepts/scenegraph_for_dummies.html">Scene Graph for Dummies</a>
  153. </li>
  154. <li class="nav-item" data-depth="2">
  155. <a class="nav-link" href="../../../concepts/terminology.html">3D Graphics Terminology</a>
  156. </li>
  157. <li class="nav-item" data-depth="2">
  158. <a class="nav-link" href="../../../concepts/transparency_sorting.html">Transparency Sorting</a>
  159. </li>
  160. </ul>
  161. </li>
  162. <li class="nav-item" data-depth="1">
  163. <button class="nav-item-toggle"></button>
  164. <span class="nav-text">Articles and How-to&#8217;s</span>
  165. <ul class="nav-list">
  166. <li class="nav-item" data-depth="2">
  167. <button class="nav-item-toggle"></button>
  168. <span class="nav-text">How to Model</span>
  169. <ul class="nav-list">
  170. <li class="nav-item" data-depth="3">
  171. <a class="nav-link" href="../3dsmax/3dsmax.html">3dsmax</a>
  172. </li>
  173. <li class="nav-item is-current-page" data-depth="3">
  174. <button class="nav-item-toggle"></button>
  175. <a class="nav-link" href="blender.html">Blender</a>
  176. <ul class="nav-list">
  177. <li class="nav-item" data-depth="4">
  178. <a class="nav-link" href="blender_buffer_clearing.html">Buffer Clearing</a>
  179. </li>
  180. <li class="nav-item" data-depth="4">
  181. <a class="nav-link" href="blender_gltf.html">Export as GlTF</a>
  182. </li>
  183. <li class="nav-item" data-depth="4">
  184. <a class="nav-link" href="blender_ogre_export.html">Export as Ogre XML</a>
  185. </li>
  186. <li class="nav-item" data-depth="4">
  187. <a class="nav-link" href="blender_ogre_compatibility.html">Ogre Compatibility</a>
  188. </li>
  189. <li class="nav-item" data-depth="4">
  190. <a class="nav-link" href="makehuman.html">MakeHuman</a>
  191. </li>
  192. <li class="nav-item" data-depth="4">
  193. <a class="nav-link" href="makehuman_blender_ogrexml_toolchain.html">MakeHuman toolchain</a>
  194. </li>
  195. </ul>
  196. </li>
  197. </ul>
  198. </li>
  199. <li class="nav-item" data-depth="2">
  200. <button class="nav-item-toggle"></button>
  201. <span class="nav-text">How to Animate</span>
  202. <ul class="nav-list">
  203. <li class="nav-item" data-depth="3">
  204. <button class="nav-item-toggle"></button>
  205. <span class="nav-text">Mixamo</span>
  206. <ul class="nav-list">
  207. <li class="nav-item" data-depth="4">
  208. <a class="nav-link" href="mixamo.html">Blender Models</a>
  209. </li>
  210. </ul>
  211. </li>
  212. </ul>
  213. </li>
  214. <li class="nav-item" data-depth="2">
  215. <a class="nav-link" href="../../debugging.html">Debugging with Wireframes</a>
  216. </li>
  217. <li class="nav-item" data-depth="2">
  218. <a class="nav-link" href="../../util/free_skymaps.html">How to create free skymaps</a>
  219. </li>
  220. <li class="nav-item" data-depth="2">
  221. <button class="nav-item-toggle"></button>
  222. <span class="nav-text">Java Tips</span>
  223. <ul class="nav-list">
  224. <li class="nav-item" data-depth="3">
  225. <a class="nav-link" href="../../java/localization.html">Localization</a>
  226. </li>
  227. <li class="nav-item" data-depth="3">
  228. <a class="nav-link" href="../../java/swing_canvas.html">Swing Canvas</a>
  229. </li>
  230. <li class="nav-item" data-depth="3">
  231. <a class="nav-link" href="../../java/logging.html">Logging</a>
  232. </li>
  233. <li class="nav-item" data-depth="3">
  234. <a class="nav-link" href="../../java/read_graphic_card_capabilites.html">Read Graphics Capabilities</a>
  235. </li>
  236. </ul>
  237. </li>
  238. <li class="nav-item" data-depth="2">
  239. <button class="nav-item-toggle"></button>
  240. <span class="nav-text">Articles</span>
  241. <ul class="nav-list">
  242. <li class="nav-item" data-depth="3">
  243. <button class="nav-item-toggle"></button>
  244. <span class="nav-text">Physically Based Rendering</span>
  245. <ul class="nav-list">
  246. <li class="nav-item" data-depth="4">
  247. <a class="nav-link" href="../../articles/pbr/pbr_part1.html">PBR – Part one</a>
  248. </li>
  249. <li class="nav-item" data-depth="4">
  250. <a class="nav-link" href="../../articles/pbr/pbr_part2.html">PBR – Part two</a>
  251. </li>
  252. <li class="nav-item" data-depth="4">
  253. <a class="nav-link" href="../../articles/pbr/pbr_part3.html">PBR – Part three</a>
  254. </li>
  255. </ul>
  256. </li>
  257. </ul>
  258. </li>
  259. </ul>
  260. </li>
  261. </ul>
  262. </li>
  263. <li class="nav-item" data-depth="0">
  264. <ul class="nav-list">
  265. <li class="nav-item" data-depth="1">
  266. <button class="nav-item-toggle"></button>
  267. <span class="nav-text">Core Engine</span>
  268. <ul class="nav-list">
  269. <li class="nav-item" data-depth="2">
  270. <a class="nav-link" href="../../../../core/app/simpleapplication.html">SimpleApplication</a>
  271. </li>
  272. <li class="nav-item" data-depth="2">
  273. <a class="nav-link" href="../../../../core/system/appsettings.html">AppSettings</a>
  274. </li>
  275. </ul>
  276. </li>
  277. <li class="nav-item" data-depth="1">
  278. <button class="nav-item-toggle"></button>
  279. <span class="nav-text">Controlling Game Logic</span>
  280. <ul class="nav-list">
  281. <li class="nav-item" data-depth="2">
  282. <a class="nav-link" href="../../../../core/app/update_loop.html">Update Loop</a>
  283. </li>
  284. <li class="nav-item" data-depth="2">
  285. <a class="nav-link" href="../../../../core/app/state/application_states.html">Application States</a>
  286. </li>
  287. <li class="nav-item" data-depth="2">
  288. <button class="nav-item-toggle"></button>
  289. <a class="nav-link" href="../../../../core/scene/control/custom_controls.html">Custom Controls</a>
  290. <ul class="nav-list">
  291. <li class="nav-item" data-depth="3">
  292. <button class="nav-item-toggle"></button>
  293. <span class="nav-text">Video</span>
  294. <ul class="nav-list">
  295. <li class="nav-item" data-depth="4">
  296. <a class="nav-link" href="https://www.youtube.com/watch?v=MNDiZ9YHIpM">Control any scene node</a>
  297. </li>
  298. <li class="nav-item" data-depth="4">
  299. <a class="nav-link" href="https://www.youtube.com/watch?v=-OzRZscLlHY">Control a character</a>
  300. </li>
  301. <li class="nav-item" data-depth="4">
  302. <a class="nav-link" href="https://wiki.jmonkeyengine.org/Scenes/SDK-UsecaseDemo_1.zip">Video Source Code</a>
  303. </li>
  304. </ul>
  305. </li>
  306. </ul>
  307. </li>
  308. <li class="nav-item" data-depth="2">
  309. <a class="nav-link" href="../../../../core/app/multithreading.html">Multithreading</a>
  310. </li>
  311. </ul>
  312. </li>
  313. <li class="nav-item" data-depth="1">
  314. <button class="nav-item-toggle"></button>
  315. <span class="nav-text">Scene Graph</span>
  316. <ul class="nav-list">
  317. <li class="nav-item" data-depth="2">
  318. <a class="nav-link" href="../../../../core/scene/traverse_scenegraph.html">Traverse SceneGraph</a>
  319. </li>
  320. <li class="nav-item" data-depth="2">
  321. <a class="nav-link" href="../../../../core/scene/spatial.html">Spatial: Node vs Geometry</a>
  322. </li>
  323. <li class="nav-item" data-depth="2">
  324. <button class="nav-item-toggle"></button>
  325. <a class="nav-link" href="../../../../core/scene/mesh.html">Mesh</a>
  326. <ul class="nav-list">
  327. <li class="nav-item" data-depth="3">
  328. <a class="nav-link" href="../../../../core/scene/custom_meshes.html">Custom Meshes</a>
  329. </li>
  330. <li class="nav-item" data-depth="3">
  331. <a class="nav-link" href="../../../../core/scene/shape/shape.html">Shape</a>
  332. </li>
  333. <li class="nav-item" data-depth="3">
  334. <a class="nav-link" href="../../../../core/scene/3d_models.html">3D Models</a>
  335. </li>
  336. </ul>
  337. </li>
  338. <li class="nav-item" data-depth="2">
  339. <a class="nav-link" href="../../../../core/asset/asset_manager.html">Asset Manager</a>
  340. </li>
  341. <li class="nav-item" data-depth="2">
  342. <a class="nav-link" href="../../../../core/export/save_and_load.html">Saving and Loading Nodes</a>
  343. </li>
  344. <li class="nav-item" data-depth="2">
  345. <a class="nav-link" href="../../../../core/collision/collision_and_intersection.html">Collision and Intersection</a>
  346. </li>
  347. <li class="nav-item" data-depth="2">
  348. <a class="nav-link" href="../../../../core/scene/control/level_of_detail.html">Level of Detail</a>
  349. </li>
  350. </ul>
  351. </li>
  352. <li class="nav-item" data-depth="1">
  353. <button class="nav-item-toggle"></button>
  354. <span class="nav-text">Animation, Scene</span>
  355. <ul class="nav-list">
  356. <li class="nav-item" data-depth="2">
  357. <a class="nav-link" href="../../../../core/animation/animation_new.html">Animation with AnimComposer</a>
  358. </li>
  359. <li class="nav-item" data-depth="2">
  360. <a class="nav-link" href="../../../../core/animation/animation.html">Animation-Old (AnimControl)</a>
  361. </li>
  362. <li class="nav-item" data-depth="2">
  363. <a class="nav-link" href="../../../../core/cinematic/cinematics.html">Cinematics (cutscenes, fake destruction physics)</a>
  364. </li>
  365. <li class="nav-item" data-depth="2">
  366. <a class="nav-link" href="../../../../core/cinematic/motionpath.html">MotionPaths and Waypoints</a>
  367. </li>
  368. </ul>
  369. </li>
  370. <li class="nav-item" data-depth="1">
  371. <button class="nav-item-toggle"></button>
  372. <span class="nav-text">Material, Light, Shadow</span>
  373. <ul class="nav-list">
  374. <li class="nav-item" data-depth="2">
  375. <a class="nav-link" href="../../../../core/material/how_to_use_materials.html">How to use Materials</a>
  376. </li>
  377. <li class="nav-item" data-depth="2">
  378. <a class="nav-link" href="../../../../core/material/j3m_material_files.html">.j3m Material Files</a>
  379. </li>
  380. <li class="nav-item" data-depth="2">
  381. <a class="nav-link" href="../../../../core/material/material_definitions.html">.j3md Material Definitions</a>
  382. </li>
  383. <li class="nav-item" data-depth="2">
  384. <a class="nav-link" href="../../../../core/material/materials_overview.html">.j3md Properties</a>
  385. </li>
  386. <li class="nav-item" data-depth="2">
  387. <a class="nav-link" href="../../../../core/shader/jme3_shaders.html">Shaders and JME3</a>
  388. </li>
  389. <li class="nav-item" data-depth="2">
  390. <a class="nav-link" href="../../../../core/shader/jme3_shadernodes.html">Shader Node System</a>
  391. </li>
  392. <li class="nav-item" data-depth="2">
  393. <a class="nav-link" href="../../../../core/shader/shader_video_tutorials.html">Shader Video Tutorials</a>
  394. </li>
  395. <li class="nav-item" data-depth="2">
  396. <a class="nav-link" href="../../../../core/light/light_and_shadow.html">Light and Shadow</a>
  397. </li>
  398. <li class="nav-item" data-depth="2">
  399. <a class="nav-link" href="../../../../core/texture/anisotropic_filtering.html">Anisotropic Filtering</a>
  400. </li>
  401. <li class="nav-item" data-depth="2">
  402. <a class="nav-link" href="../../../../core/system/jme3_srgbpipeline.html">Gamma Correction</a>
  403. </li>
  404. <li class="nav-item" data-depth="2">
  405. <a class="nav-link" href="../../../../core/material/normal_types.html">Normal Map Conventions</a>
  406. </li>
  407. </ul>
  408. </li>
  409. <li class="nav-item" data-depth="1">
  410. <button class="nav-item-toggle"></button>
  411. <span class="nav-text">Audio, Video</span>
  412. <ul class="nav-list">
  413. <li class="nav-item" data-depth="2">
  414. <a class="nav-link" href="../../../../core/audio/audio.html">Playing Sounds</a>
  415. </li>
  416. <li class="nav-item" data-depth="2">
  417. <a class="nav-link" href="../../../../core/audio/audio_environment_presets.html">Audio Environment Presets</a>
  418. </li>
  419. <li class="nav-item" data-depth="2">
  420. <a class="nav-link" href="../../../../core/app/state/screenshots.html">Capture Screenshots</a>
  421. </li>
  422. <li class="nav-item" data-depth="2">
  423. <a class="nav-link" href="../../../../core/app/state/capture_audio_video_to_a_file.html">Capture Audio/Video</a>
  424. </li>
  425. </ul>
  426. </li>
  427. <li class="nav-item" data-depth="1">
  428. <button class="nav-item-toggle"></button>
  429. <span class="nav-text">Filter, Effect</span>
  430. <ul class="nav-list">
  431. <li class="nav-item" data-depth="2">
  432. <a class="nav-link" href="../../../../core/effect/effects_overview.html">Overview</a>
  433. </li>
  434. <li class="nav-item" data-depth="2">
  435. <a class="nav-link" href="../../../../core/effect/bloom_and_glow.html">Bloom and Glow</a>
  436. </li>
  437. <li class="nav-item" data-depth="2">
  438. <a class="nav-link" href="../../../../core/effect/particle_emitters.html">Particle Emitters</a>
  439. </li>
  440. </ul>
  441. </li>
  442. <li class="nav-item" data-depth="1">
  443. <button class="nav-item-toggle"></button>
  444. <span class="nav-text">Landscapes</span>
  445. <ul class="nav-list">
  446. <li class="nav-item" data-depth="2">
  447. <a class="nav-link" href="../../../../core/util/sky.html">Sky</a>
  448. </li>
  449. <li class="nav-item" data-depth="2">
  450. <a class="nav-link" href="../../../../core/terrain/terrain.html">Terrain (TerraMonkey)</a>
  451. </li>
  452. <li class="nav-item" data-depth="2">
  453. <a class="nav-link" href="../../../../core/collision/terrain_collision.html">Terrain Collision</a>
  454. </li>
  455. <li class="nav-item" data-depth="2">
  456. <a class="nav-link" href="../../../../core/effect/water.html">Simple Water</a>
  457. </li>
  458. <li class="nav-item" data-depth="2">
  459. <a class="nav-link" href="../../../../core/effect/post-processor_water.html">Post-Processor Water</a>
  460. </li>
  461. </ul>
  462. </li>
  463. <li class="nav-item" data-depth="1">
  464. <button class="nav-item-toggle"></button>
  465. <span class="nav-text">Camera</span>
  466. <ul class="nav-list">
  467. <li class="nav-item" data-depth="2">
  468. <a class="nav-link" href="../../../../core/renderer/camera.html">Camera</a>
  469. </li>
  470. <li class="nav-item" data-depth="2">
  471. <a class="nav-link" href="../../../../core/renderer/making_the_camera_follow_a_character.html">Follow a Character</a>
  472. </li>
  473. <li class="nav-item" data-depth="2">
  474. <a class="nav-link" href="../../../../core/renderer/remote-controlling_the_camera.html">Remote-Controlling</a>
  475. </li>
  476. <li class="nav-item" data-depth="2">
  477. <a class="nav-link" href="../../../../core/renderer/multiple_camera_views.html">Multiple Camera Views</a>
  478. </li>
  479. <li class="nav-item" data-depth="2">
  480. <a class="nav-link" href="../../../../core/renderer/jme3_renderbuckets.html">Render Buckets</a>
  481. </li>
  482. </ul>
  483. </li>
  484. <li class="nav-item" data-depth="1">
  485. <button class="nav-item-toggle"></button>
  486. <span class="nav-text">Rendering</span>
  487. <ul class="nav-list">
  488. <li class="nav-item" data-depth="2">
  489. <a class="nav-link" href="../../../../core/renderer/render_pipeline.html">Render Pipelines</a>
  490. </li>
  491. </ul>
  492. </li>
  493. <li class="nav-item" data-depth="1">
  494. <button class="nav-item-toggle"></button>
  495. <span class="nav-text">User Interaction</span>
  496. <ul class="nav-list">
  497. <li class="nav-item" data-depth="2">
  498. <a class="nav-link" href="../../../../core/input/input_handling.html">Input Handling</a>
  499. </li>
  500. <li class="nav-item" data-depth="2">
  501. <a class="nav-link" href="../../../../core/input/combo_moves.html">Combo Moves</a>
  502. </li>
  503. <li class="nav-item" data-depth="2">
  504. <a class="nav-link" href="../../../../core/input/mouse_picking.html">Mouse Picking</a>
  505. </li>
  506. </ul>
  507. </li>
  508. <li class="nav-item" data-depth="1">
  509. <button class="nav-item-toggle"></button>
  510. <a class="nav-link" href="../../../../core/gui/topic_gui.html">Graphical User Interface</a>
  511. <ul class="nav-list">
  512. <li class="nav-item" data-depth="2">
  513. <button class="nav-item-toggle"></button>
  514. <span class="nav-text">Nifty GUI</span>
  515. <ul class="nav-list">
  516. <li class="nav-item" data-depth="3">
  517. <a class="nav-link" href="../../../../core/gui/nifty_gui.html">Integration Tutorial</a>
  518. </li>
  519. <li class="nav-item" data-depth="3">
  520. <a class="nav-link" href="../../../../core/gui/nifty_gui_best_practices.html">Best Practices</a>
  521. </li>
  522. <li class="nav-item" data-depth="3">
  523. <a class="nav-link" href="../../../../core/gui/nifty_gui_scenarios.html">Scenarios</a>
  524. </li>
  525. </ul>
  526. </li>
  527. <li class="nav-item" data-depth="2">
  528. <a class="nav-link" href="../../../../core/ui/hud.html">Head-Up Display (HUD)</a>
  529. </li>
  530. </ul>
  531. </li>
  532. <li class="nav-item" data-depth="1">
  533. <button class="nav-item-toggle"></button>
  534. <span class="nav-text">Virtual Reality</span>
  535. <ul class="nav-list">
  536. <li class="nav-item" data-depth="2">
  537. <a class="nav-link" href="../../../../core/vr/virtualreality.html">Virtual Reality</a>
  538. </li>
  539. <li class="nav-item" data-depth="2">
  540. <a class="nav-link" href="../../../../core/vr/legacyOpenVr.html">Virtual Reality Legacy Support</a>
  541. </li>
  542. <li class="nav-item" data-depth="2">
  543. <a class="nav-link" href="../../../../core/vr/virtualrealitycontrollers.html">Virtual Reality Legacy Controller Support</a>
  544. </li>
  545. </ul>
  546. </li>
  547. </ul>
  548. </li>
  549. <li class="nav-item" data-depth="0">
  550. <ul class="nav-list">
  551. <li class="nav-item" data-depth="1">
  552. <button class="nav-item-toggle"></button>
  553. <a class="nav-link" href="../../../../physics/physics.html">Physics</a>
  554. <ul class="nav-list">
  555. <li class="nav-item" data-depth="2">
  556. <a class="nav-link" href="../../../../physics/bullet_multithreading.html">Multi-Threaded Physics</a>
  557. </li>
  558. <li class="nav-item" data-depth="2">
  559. <a class="nav-link" href="../../../../physics/collision/physics_listeners.html">Collision Detection</a>
  560. </li>
  561. <li class="nav-item" data-depth="2">
  562. <a class="nav-link" href="../../../../physics/joint/hinges_and_joints.html">Hinges and Joints</a>
  563. </li>
  564. <li class="nav-item" data-depth="2">
  565. <a class="nav-link" href="../../../../physics/control/walking_character.html">Walking Character</a>
  566. </li>
  567. <li class="nav-item" data-depth="2">
  568. <a class="nav-link" href="../../../../physics/control/ragdoll.html">Ragdoll</a>
  569. </li>
  570. <li class="nav-item" data-depth="2">
  571. <a class="nav-link" href="../../../../physics/control/vehicles.html">Vehicles</a>
  572. </li>
  573. <li class="nav-item" data-depth="2">
  574. <a class="nav-link" href="../../../../physics/control/softbody.html">Softbody</a>
  575. </li>
  576. <li class="nav-item" data-depth="2">
  577. <a class="nav-link" href="../../../../physics/bullet_pitfalls.html">Bullet Physics Pitfalls</a>
  578. </li>
  579. </ul>
  580. </li>
  581. </ul>
  582. </li>
  583. <li class="nav-item" data-depth="0">
  584. <ul class="nav-list">
  585. <li class="nav-item" data-depth="1">
  586. <button class="nav-item-toggle"></button>
  587. <span class="nav-text">Networking</span>
  588. <ul class="nav-list">
  589. <li class="nav-item" data-depth="2">
  590. <a class="nav-link" href="../../../../networking/networking.html">Networking (SpiderMonkey)</a>
  591. </li>
  592. <li class="nav-item" data-depth="2">
  593. <a class="nav-link" href="../../../../networking/headless_server.html">Headless Server</a>
  594. </li>
  595. <li class="nav-item" data-depth="2">
  596. <a class="nav-link" href="../../../../networking/monkey_zone.html">Multi-Player Demo Code</a>
  597. </li>
  598. <li class="nav-item" data-depth="2">
  599. <a class="nav-link" href="../../../../networking/networking_video_tutorials.html">Networking Video Tutorials</a>
  600. </li>
  601. </ul>
  602. </li>
  603. </ul>
  604. </li>
  605. <li class="nav-item" data-depth="0">
  606. <ul class="nav-list">
  607. <li class="nav-item" data-depth="1">
  608. <button class="nav-item-toggle"></button>
  609. <span class="nav-text">User Contributions</span>
  610. <ul class="nav-list">
  611. <li class="nav-item" data-depth="2">
  612. <a class="nav-link" href="../../../../contributions/contributions.html">User Made Utilities</a>
  613. </li>
  614. <li class="nav-item" data-depth="2">
  615. <button class="nav-item-toggle"></button>
  616. <span class="nav-text">Shader</span>
  617. <ul class="nav-list">
  618. <li class="nav-item" data-depth="3">
  619. <a class="nav-link" href="../../../../contributions/shader/shaderblow_project.html">ShaderBlow Project</a>
  620. </li>
  621. </ul>
  622. </li>
  623. <li class="nav-item" data-depth="2">
  624. <button class="nav-item-toggle"></button>
  625. <span class="nav-text">Landscapes</span>
  626. <ul class="nav-list">
  627. <li class="nav-item" data-depth="3">
  628. <a class="nav-link" href="../../../../contributions/lanscapes/vegetationsystem/vegetationsystem.html">Vegetation System</a>
  629. </li>
  630. </ul>
  631. </li>
  632. <li class="nav-item" data-depth="2">
  633. <button class="nav-item-toggle"></button>
  634. <span class="nav-text">Networking</span>
  635. <ul class="nav-list">
  636. <li class="nav-item" data-depth="3">
  637. <a class="nav-link" href="../../../../contributions/networking/open_game_finder.html">Open Game Finder</a>
  638. </li>
  639. </ul>
  640. </li>
  641. <li class="nav-item" data-depth="2">
  642. <button class="nav-item-toggle"></button>
  643. <span class="nav-text">Entity System</span>
  644. <ul class="nav-list">
  645. <li class="nav-item" data-depth="3">
  646. <a class="nav-link" href="#es/entitysystem.adoc">The Zay-ES Entity System</a>
  647. </li>
  648. </ul>
  649. </li>
  650. <li class="nav-item" data-depth="2">
  651. <button class="nav-item-toggle"></button>
  652. <span class="nav-text">Artificial Intelligence</span>
  653. <ul class="nav-list">
  654. <li class="nav-item" data-depth="3">
  655. <a class="nav-link" href="../../../../contributions/ai/recast.html">Recast Navigation</a>
  656. </li>
  657. <li class="nav-item" data-depth="3">
  658. <a class="nav-link" href="../../../../contributions/ai/building_recast.html">Updating and building Recast Native Bindings</a>
  659. </li>
  660. <li class="nav-item" data-depth="3">
  661. <a class="nav-link" href="../../../../contributions/ai/monkey_brains.html">Monkey Brains</a>
  662. </li>
  663. <li class="nav-item" data-depth="3">
  664. <a class="nav-link" href="../../../../contributions/ai/steer_behaviours.html">Steer Behaviours</a>
  665. </li>
  666. <li class="nav-item" data-depth="3">
  667. <a class="nav-link" href="../../../../contributions/ai/jme3_ai.html">jME3 Artificial Intelligence</a>
  668. </li>
  669. </ul>
  670. </li>
  671. <li class="nav-item" data-depth="2">
  672. <button class="nav-item-toggle"></button>
  673. <a class="nav-link" href="../../../../contributions/gui/topic_contributions_gui.html">GUI</a>
  674. <ul class="nav-list">
  675. <li class="nav-item" data-depth="3">
  676. <a class="nav-link" href="../../../../contributions/contributions.html#lemur-gui-library">Lemur - a native jME3 GUI library with scene graph tools</a>
  677. </li>
  678. <li class="nav-item" data-depth="3">
  679. <a class="nav-link" href="../../../../contributions/contributions.html#tonegodgui">tonegodGUI - a native jME3 GUI library</a>
  680. </li>
  681. <li class="nav-item" data-depth="3">
  682. <a class="nav-link" href="../../../../contributions/contributions.html#immediate-graphical-user-interface">Immediate graphical user interface</a>
  683. </li>
  684. </ul>
  685. </li>
  686. <li class="nav-item" data-depth="2">
  687. <button class="nav-item-toggle"></button>
  688. <span class="nav-text">Tools</span>
  689. <ul class="nav-list">
  690. <li class="nav-item" data-depth="3">
  691. <a class="nav-link" href="../../../../contributions/tools/navigation.html">Mercator Projection Tool (Marine Navigation)</a>
  692. </li>
  693. <li class="nav-item" data-depth="3">
  694. <a class="nav-link" href="../../../../contributions/tools/charts.html">Visualizing Maps in JME3 (Marine Charts)</a>
  695. </li>
  696. </ul>
  697. </li>
  698. <li class="nav-item" data-depth="2">
  699. <button class="nav-item-toggle"></button>
  700. <a class="nav-link" href="../../../../contributions/vr/topic_contributions_vr.html">Virtual Reality (And augmented reality)</a>
  701. <ul class="nav-list">
  702. <li class="nav-item" data-depth="3">
  703. <a class="nav-link" href="../../../../contributions/contributions.html#tamarin-openxr">Tamarin OpenXR</a>
  704. </li>
  705. </ul>
  706. </li>
  707. <li class="nav-item" data-depth="2">
  708. <button class="nav-item-toggle"></button>
  709. <span class="nav-text">Projects</span>
  710. <ul class="nav-list">
  711. <li class="nav-item" data-depth="3">
  712. <a class="nav-link" href="../../../../contributions/projects/rise_of_mutants_project.html">Rise of Mutants Project</a>
  713. </li>
  714. </ul>
  715. </li>
  716. </ul>
  717. </li>
  718. </ul>
  719. </li>
  720. <li class="nav-item" data-depth="0">
  721. <ul class="nav-list">
  722. <li class="nav-item" data-depth="1">
  723. <button class="nav-item-toggle"></button>
  724. <a class="nav-link" href="../../../../sdk/sdk.html">SDK</a>
  725. <ul class="nav-list">
  726. <li class="nav-item" data-depth="2">
  727. <button class="nav-item-toggle"></button>
  728. <span class="nav-text">Video Tutorials</span>
  729. <ul class="nav-list">
  730. <li class="nav-item" data-depth="3">
  731. <button class="nav-item-toggle"></button>
  732. <span class="nav-text">SDK Use Case Tutorials</span>
  733. <ul class="nav-list">
  734. <li class="nav-item" data-depth="4">
  735. <a class="nav-link" href="http://www.youtube.com/watch?v=-OzRZscLlHY">Demo 1 (Quixote demo)</a>
  736. </li>
  737. <li class="nav-item" data-depth="4">
  738. <a class="nav-link" href="http://www.youtube.com/watch?v=6-YWxD3JByE">Demo 2 (Models and Materials)</a>
  739. </li>
  740. </ul>
  741. </li>
  742. <li class="nav-item" data-depth="3">
  743. <button class="nav-item-toggle"></button>
  744. <span class="nav-text">SDK Tutorials</span>
  745. <ul class="nav-list">
  746. <li class="nav-item" data-depth="4">
  747. <a class="nav-link" href="http://www.youtube.com/watch?v=M1_0pbeyJzI">Basics</a>
  748. </li>
  749. <li class="nav-item" data-depth="4">
  750. <a class="nav-link" href="http://www.youtube.com/watch?v=nL7woH40i5c">Importing Models</a>
  751. </li>
  752. <li class="nav-item" data-depth="4">
  753. <a class="nav-link" href="http://www.youtube.com/watch?v=DUmgAjiNzhY">Dragging&amp;Dropping Nodes</a>
  754. </li>
  755. <li class="nav-item" data-depth="4">
  756. <a class="nav-link" href="http://www.youtube.com/watch?v=ntPAmtsQ6eM">Scene Composing</a>
  757. </li>
  758. <li class="nav-item" data-depth="4">
  759. <a class="nav-link" href="http://www.youtube.com/watch?v=zgPV3W6dD4s">Terrain with Collision Shape</a>
  760. </li>
  761. <li class="nav-item" data-depth="4">
  762. <a class="nav-link" href="http://www.youtube.com/watch?v=Feu3-mrpolc">Working with Materials</a>
  763. </li>
  764. <li class="nav-item" data-depth="4">
  765. <a class="nav-link" href="http://www.youtube.com/watch?v=MNDiZ9YHIpM">Custom Controls</a>
  766. </li>
  767. <li class="nav-item" data-depth="4">
  768. <a class="nav-link" href="http://www.youtube.com/watch?v=oZnssg8TBWQ">WebStart Deployment</a>
  769. </li>
  770. <li class="nav-item" data-depth="4">
  771. <a class="nav-link" href="http://www.youtube.com/watch?v=D7JM4VMKqPc">Animation and Effect TrackEditing</a>
  772. </li>
  773. </ul>
  774. </li>
  775. </ul>
  776. </li>
  777. <li class="nav-item" data-depth="2">
  778. <button class="nav-item-toggle"></button>
  779. <span class="nav-text">Getting Started</span>
  780. <ul class="nav-list">
  781. <li class="nav-item" data-depth="3">
  782. <a class="nav-link" href="../../../../sdk/update_center.html">Updating jMonkeyEngine SDK</a>
  783. </li>
  784. <li class="nav-item" data-depth="3">
  785. <a class="nav-link" href="../../../../sdk/troubleshooting.html">Troubleshooting</a>
  786. </li>
  787. </ul>
  788. </li>
  789. <li class="nav-item" data-depth="2">
  790. <button class="nav-item-toggle"></button>
  791. <span class="nav-text">Java Development Features</span>
  792. <ul class="nav-list">
  793. <li class="nav-item" data-depth="3">
  794. <a class="nav-link" href="../../../../sdk/project_creation.html">Project Creation</a>
  795. </li>
  796. <li class="nav-item" data-depth="3">
  797. <a class="nav-link" href="../../../../sdk/code_editor.html">Code Editor and Palette</a>
  798. </li>
  799. <li class="nav-item" data-depth="3">
  800. <a class="nav-link" href="../../../../sdk/version_control.html">File Version Control</a>
  801. </li>
  802. <li class="nav-item" data-depth="3">
  803. <a class="nav-link" href="../../../../sdk/debugging_profiling_testing.html">Debug, Profile, Test</a>
  804. </li>
  805. <li class="nav-item" data-depth="3">
  806. <button class="nav-item-toggle"></button>
  807. <a class="nav-link" href="../../../../sdk/application_deployment.html">Application Deployment</a>
  808. <ul class="nav-list">
  809. <li class="nav-item" data-depth="4">
  810. <a class="nav-link" href="../../../../sdk/default_build_script.html">Default Build Script</a>
  811. </li>
  812. <li class="nav-item" data-depth="4">
  813. <a class="nav-link" href="../../../../sdk/android.html">Android</a>
  814. </li>
  815. <li class="nav-item" data-depth="4">
  816. <a class="nav-link" href="../../../../sdk/android_cheat_sheet.html">Android Cheat Sheet</a>
  817. </li>
  818. <li class="nav-item" data-depth="4">
  819. <a class="nav-link" href="../../../../sdk/ios.html">iOS</a>
  820. </li>
  821. </ul>
  822. </li>
  823. </ul>
  824. </li>
  825. <li class="nav-item" data-depth="2">
  826. <button class="nav-item-toggle"></button>
  827. <span class="nav-text">Unique Features</span>
  828. <ul class="nav-list">
  829. <li class="nav-item" data-depth="3">
  830. <button class="nav-item-toggle"></button>
  831. <a class="nav-link" href="../../../../sdk/model_loader_and_viewer.html">Import, View, Convert Models</a>
  832. <ul class="nav-list">
  833. <li class="nav-item" data-depth="4">
  834. <a class="nav-link" href="../../../../sdk/asset_packs.html">Asset Packs</a>
  835. </li>
  836. </ul>
  837. </li>
  838. <li class="nav-item" data-depth="3">
  839. <a class="nav-link" href="../../../../sdk/scene_explorer.html">The SceneExplorer</a>
  840. </li>
  841. <li class="nav-item" data-depth="3">
  842. <a class="nav-link" href="../../../../sdk/scene_composer.html">Composing a Scene</a>
  843. </li>
  844. <li class="nav-item" data-depth="3">
  845. <a class="nav-link" href="../../../../sdk/terrain_editor.html">Terrain Editor</a>
  846. </li>
  847. <li class="nav-item" data-depth="3">
  848. <a class="nav-link" href="../../../../sdk/sample_code.html">Sample Code</a>
  849. </li>
  850. <li class="nav-item" data-depth="3">
  851. <a class="nav-link" href="../../../../sdk/material_editing.html">Material Editing</a>
  852. </li>
  853. <li class="nav-item" data-depth="3">
  854. <a class="nav-link" href="../../../../sdk/font_creation.html">Creating Bitmap Fonts</a>
  855. </li>
  856. <li class="nav-item" data-depth="3">
  857. <button class="nav-item-toggle"></button>
  858. <a class="nav-link" href="https://hub.jmonkeyengine.org/t/effecttrack-and-audiotrack-editing-in-the-sdk/23378">Audio and Effect Track Editing</a>
  859. <ul class="nav-list">
  860. <li class="nav-item" data-depth="4">
  861. <a class="nav-link" href="https://www.youtube.com/watch?v=D7JM4VMKqPc">Video: Effect and AudioTrack editing in jMonkeyEngine 3 sdk</a>
  862. </li>
  863. </ul>
  864. </li>
  865. <li class="nav-item" data-depth="3">
  866. <a class="nav-link" href="../../../../sdk/filters.html">Post-Processor Filter Editor and Viewer</a>
  867. </li>
  868. <li class="nav-item" data-depth="3">
  869. <a class="nav-link" href="../../../../core/app/state/application_states.html">Application States</a>
  870. </li>
  871. <li class="nav-item" data-depth="3">
  872. <a class="nav-link" href="../../../../core/scene/control/custom_controls.html">Custom Controls</a>
  873. </li>
  874. <li class="nav-item" data-depth="3">
  875. <a class="nav-link" href="../../../../sdk/vehicle_creator.html">Vehicle Creator</a>
  876. </li>
  877. <li class="nav-item" data-depth="3">
  878. <a class="nav-link" href="../../../../sdk/assetbrowser.html">Asset Browser</a>
  879. </li>
  880. <li class="nav-item" data-depth="3">
  881. <a class="nav-link" href="../../../../sdk/animations.html">Animations</a>
  882. </li>
  883. </ul>
  884. </li>
  885. <li class="nav-item" data-depth="2">
  886. <button class="nav-item-toggle"></button>
  887. <span class="nav-text">Advanced Usage</span>
  888. <ul class="nav-list">
  889. <li class="nav-item" data-depth="3">
  890. <a class="nav-link" href="../../../../sdk/build_platform.html">Building jMonkeyEngine SDK</a>
  891. </li>
  892. <li class="nav-item" data-depth="3">
  893. <a class="nav-link" href="../../../../sdk/use_own_jme.html#.adoc">Using your own (modified) version of jME3 in jMonkeyEngine SDK</a>
  894. </li>
  895. <li class="nav-item" data-depth="3">
  896. <a class="nav-link" href="../../../../sdk/increasing_heap_memory.html">Increasing Heap Memory</a>
  897. </li>
  898. <li class="nav-item" data-depth="3">
  899. <a class="nav-link" href="../../../../sdk/log_files.html">Log Files</a>
  900. </li>
  901. </ul>
  902. </li>
  903. <li class="nav-item" data-depth="2">
  904. <button class="nav-item-toggle"></button>
  905. <span class="nav-text">Available external plugins</span>
  906. <ul class="nav-list">
  907. <li class="nav-item" data-depth="3">
  908. <a class="nav-link" href="../../../../contributions/contributions.html">Contributions</a>
  909. </li>
  910. <li class="nav-item" data-depth="3">
  911. <a class="nav-link" href="../../../../sdk/neotexture.html">Neo Texture Editor for procedural textures</a>
  912. </li>
  913. <li class="nav-item" data-depth="3">
  914. <a class="nav-link" href="http://www.youtube.com/watch?v=yS9a9o4WzL8">Video: Mesh Tool &amp; Physics Editor</a>
  915. </li>
  916. </ul>
  917. </li>
  918. <li class="nav-item" data-depth="2">
  919. <button class="nav-item-toggle"></button>
  920. <a class="nav-link" href="../../../../sdk/development.html">Developing plugins for jMonkeyEngine SDK</a>
  921. <ul class="nav-list">
  922. <li class="nav-item" data-depth="3">
  923. <a class="nav-link" href="../../../../sdk/development/setup.html">Creating a plugin</a>
  924. </li>
  925. <li class="nav-item" data-depth="3">
  926. <a class="nav-link" href="../../../../sdk/development/general.html">Creating components</a>
  927. </li>
  928. <li class="nav-item" data-depth="3">
  929. <a class="nav-link" href="../../../../sdk/development/scene.html">The Main Scene</a>
  930. </li>
  931. <li class="nav-item" data-depth="3">
  932. <a class="nav-link" href="../../../../sdk/development/sceneexplorer.html">The Scene Explorer</a>
  933. </li>
  934. <li class="nav-item" data-depth="3">
  935. <a class="nav-link" href="../../../../sdk/development/projects_assets.html">Projects and Assets</a>
  936. </li>
  937. <li class="nav-item" data-depth="3">
  938. <a class="nav-link" href="../../../../sdk/development/extension_library.html">Create a library plugin from a jar file</a>
  939. </li>
  940. <li class="nav-item" data-depth="3">
  941. <a class="nav-link" href="../../../../sdk/development/model_loader.html">Create a new or custom model filetype and loader</a>
  942. </li>
  943. </ul>
  944. </li>
  945. </ul>
  946. </li>
  947. </ul>
  948. </li>
  949. </ul>
  950. </nav>
  951. </div>
  952. <div class="nav-panel-explore" data-panel="explore">
  953. <div class="context">
  954. <span class="title">JME</span>
  955. <span class="version">3.8</span>
  956. </div>
  957. <ul class="components">
  958. <li class="component is-current">
  959. <span class="title">JME</span>
  960. <ul class="versions">
  961. <li class="version is-current">
  962. <a href="../../../../documentation.html">3.8</a>
  963. </li>
  964. <li class="version">
  965. <a href="../../../../../3.4/documentation.html">3.4</a>
  966. </li>
  967. <li class="version">
  968. <a href="../../../../../3.3/documentation.html">3.3</a>
  969. </li>
  970. <li class="version">
  971. <a href="../../../../../3.2/documentation.html">3.2</a>
  972. </li>
  973. </ul>
  974. </li>
  975. <li class="component">
  976. <span class="title">Wiki Contribution</span>
  977. <ul class="versions">
  978. <li class="version">
  979. <a href="../../../../../../docs-wiki/3.8/wiki_contributor.html">3.8</a>
  980. </li>
  981. </ul>
  982. </li>
  983. <li class="component">
  984. <span class="title">Wiki UI</span>
  985. <ul class="versions">
  986. <li class="version">
  987. <a href="../../../../../../wiki-ui/index.html">master</a>
  988. </li>
  989. </ul>
  990. </li>
  991. </ul>
  992. </div>
  993. </div>
  994. </aside>
  995. </div>
  996. <main class="article">
  997. <div class="toolbar" role="navigation">
  998. <button class="nav-toggle"></button>
  999. <nav class="breadcrumbs" aria-label="breadcrumbs">
  1000. <ul>
  1001. <li><a href="../../../../documentation.html">JME</a></li>
  1002. <li>Articles and How-to&#8217;s</li>
  1003. <li>How to Model</li>
  1004. <li><a href="blender.html">Blender</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="blender.html">3.8</a>
  1011. <a class="version" href="../../../../../3.4/tutorials/how-to/modeling/blender/blender.html">3.4</a>
  1012. <a class="version" href="../../../../../3.3/tutorials/how-to/modeling/blender/blender.html">3.3</a>
  1013. <a class="version" href="../../../../../3.2/tutorials/how-to/modeling/blender/blender.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/how-to/modeling/blender/blender.adoc">Edit this Page</a></div>
  1017. </div>
  1018. <div class="content">
  1019. <article class="doc">
  1020. <h1 class="page">Creating assets in Blender3D</h1>
  1021. <div id="preamble">
  1022. <div class="sectionbody">
  1023. <div class="paragraph">
  1024. <p>This section discusses how to create and import models from Blender3D (2.78+, see bottom of page for Blender 2.49 and before) to jME3. Furthermore, it explains how you can create various typical game-related assets like &#8220;Normal&#8221; maps of high-poly models and &#8220;Baked Lighting&#8221; maps.</p>
  1025. </div>
  1026. </div>
  1027. </div>
  1028. <div class="sect1">
  1029. <h2 id="asset-management"><a class="anchor" href="#asset-management"></a>Asset Management</h2>
  1030. <div class="sectionbody">
  1031. <div class="paragraph">
  1032. <p>For the managing of assets in general, be sure to read the <a href="../../../concepts/multi-media_asset_pipeline.html" class="xref page">Asset Pipeline Documentation</a>. It contains vital information on how to manage your asset files.</p>
  1033. </div>
  1034. </div>
  1035. </div>
  1036. <div class="sect1">
  1037. <h2 id="creating-models"><a class="anchor" href="#creating-models"></a>Creating Models</h2>
  1038. <div class="sectionbody">
  1039. <div class="paragraph">
  1040. <p>Game-compatible models are models that basically only consist of a mesh and UV-mapped textures, in some cases animations. All other material parameters or effects (like particles, etc.) cannot be expected to be transferred properly and probably would not translate to live rendering very well anyway.</p>
  1041. </div>
  1042. <div class="sect2">
  1043. <h3 id="uv-mapped-textures"><a class="anchor" href="#uv-mapped-textures"></a>UV Mapped Textures</h3>
  1044. <div class="paragraph">
  1045. <p>To successfully import a texture, the texture <strong>has to</strong> be UV-mapped to the model. Here&#8217;s how to assign &#8220;Diffuse&#8221;, &#8220;Normal&#8221; and &#8220;Specular&#8221; maps:</p>
  1046. </div>
  1047. <div class="imageblock">
  1048. <div class="content">
  1049. <img src="../../../_images/how-to/modeling/blender/blender-material-4.png" alt="blender-material-4.png" width="" height="">
  1050. </div>
  1051. </div>
  1052. <div class="imageblock">
  1053. <div class="content">
  1054. <img src="../../../_images/how-to/modeling/blender/blender-material-3.png" alt="blender-material-3.png" width="" height="">
  1055. </div>
  1056. </div>
  1057. <div class="imageblock">
  1058. <div class="content">
  1059. <img src="../../../_images/how-to/modeling/blender/blender-material-2.png" alt="blender-material-2.png" width="" height="">
  1060. </div>
  1061. </div>
  1062. <div class="imageblock">
  1063. <div class="content">
  1064. <img src="../../../_images/how-to/modeling/blender/blender-material-1.png" alt="blender-material-1.png" width="" height="">
  1065. </div>
  1066. </div>
  1067. <div class="paragraph">
  1068. <p>It&#8217;s important to note that each used texture will create one separate geometry. So it&#8217;s best to either combine the UV maps or use a pre-made atlas with different texture types from the start and then map the uv coords of the models to the atlas instead of painting on the texture. This works best for large models like cities and space ships.</p>
  1069. </div>
  1070. </div>
  1071. <div class="sect2">
  1072. <h3 id="animations"><a class="anchor" href="#animations"></a>Animations</h3>
  1073. <div class="paragraph">
  1074. <p>Animations for jME3 have to be bone animations, mesh deformation or other forms of animation are not supported.</p>
  1075. </div>
  1076. <div class="paragraph">
  1077. <p>To create an animation from scratch do the following:</p>
  1078. </div>
  1079. <div class="olist arabic">
  1080. <ol class="arabic">
  1081. <li>
  1082. <p>Create the model.</p>
  1083. <div class="olist loweralpha">
  1084. <ol class="loweralpha" type="a">
  1085. <li>
  1086. <p>Make sure your models location, rotation and scale is applied and zero / one (see &#8220;Model Checklist&#8221; below).</p>
  1087. <div class="admonitionblock tip">
  1088. <table>
  1089. <tr>
  1090. <td class="icon">
  1091. <i class="fa icon-tip" title="Tip"></i>
  1092. </td>
  1093. <td class="content">
  1094. Did you know? You can make any model from a box by only using extrusion, this creates very clean meshes.
  1095. </td>
  1096. </tr>
  1097. </table>
  1098. </div>
  1099. </li>
  1100. </ol>
  1101. </div>
  1102. </li>
  1103. <li>
  1104. <p>Create the armature bones, don&#8217;t forget to have one root bone!</p>
  1105. <div class="olist loweralpha">
  1106. <ol class="loweralpha" type="a">
  1107. <li>
  1108. <p>Start by placing the cursor at zero.</p>
  1109. </li>
  1110. <li>
  1111. <p>Go to the <code><span class="menuseq"><b class="menu">Add</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="submenu">Armature</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="menuitem">Single Bone</b></span></code> menu and create the root bone.</p>
  1112. <div class="imageblock">
  1113. <div class="content">
  1114. <img src="../../../_images/how-to/modeling/blender/blender-add-bone.png" alt="blender-add-bone.png" width="" height="">
  1115. </div>
  1116. </div>
  1117. </li>
  1118. <li>
  1119. <p>Select the bone and go to edit mode (press <kbd>Tab</kbd>).</p>
  1120. </li>
  1121. <li>
  1122. <p>Select the root bone end and press <kbd>E</kbd> to extrude the bone, then start rigging your model this way.</p>
  1123. <div class="admonitionblock important">
  1124. <table>
  1125. <tr>
  1126. <td class="icon">
  1127. <i class="fa icon-important" title="Important"></i>
  1128. </td>
  1129. <td class="content">
  1130. Make sure your armature&#8217;s location, rotation and scale is applied (see &#8220;Model Checklist&#8221; below) before continuing.
  1131. </td>
  1132. </tr>
  1133. </table>
  1134. </div>
  1135. </li>
  1136. </ol>
  1137. </div>
  1138. </li>
  1139. <li>
  1140. <p>Make the armature the parent of the model.</p>
  1141. <div class="olist loweralpha">
  1142. <ol class="loweralpha" type="a">
  1143. <li>
  1144. <p>Make sure you are back in object mode (press <kbd>Tab</kbd> again).</p>
  1145. </li>
  1146. <li>
  1147. <p>First select the model object then select the armature object with <kbd>Shift</kbd> pressed, then press <kbd>Ctrl</kbd> + <kbd>P</kbd>.</p>
  1148. </li>
  1149. <li>
  1150. <p>When you do this, you can select how the bone groups will be mapped to the model vertices initially. Select <b class="button">With Automatic Weights</b>.</p>
  1151. <div class="admonitionblock note">
  1152. <table>
  1153. <tr>
  1154. <td class="icon">
  1155. <i class="fa icon-note" title="Note"></i>
  1156. </td>
  1157. <td class="content">
  1158. <div class="paragraph">
  1159. <p>When you parent your mesh to the armature, Blender automatically adds the <code>Armature</code> modifier to the mesh.</p>
  1160. </div>
  1161. <div class="paragraph">
  1162. <p><span class="image"><img src="../../../_images/how-to/modeling/blender/blender-make-armature.png" alt="blender-make-armature.png" width="" height=""></span></p>
  1163. </div>
  1164. </td>
  1165. </tr>
  1166. </table>
  1167. </div>
  1168. <div class="paragraph">
  1169. <p>Voila, your model should move when you move the bones in pose mode.</p>
  1170. </div>
  1171. </li>
  1172. </ol>
  1173. </div>
  1174. </li>
  1175. <li>
  1176. <p>From the <code>Info</code> header, press the <b class="button">Choose Screen Layout</b> button and select the <code>Animation</code> layout.</p>
  1177. </li>
  1178. <li>
  1179. <p>In the <code>Dope Sheet Editor</code> window, press the <b class="button">Context</b> button and select <code>Action Editor</code>.</p>
  1180. <div class="imageblock">
  1181. <div class="content">
  1182. <img src="../../../_images/how-to/modeling/blender/blender-action-editor.png" alt="blender-action-editor.png" width="" height="">
  1183. </div>
  1184. </div>
  1185. </li>
  1186. <li>
  1187. <p>Add an action by pressing the <b class="button">+</b> button.</p>
  1188. </li>
  1189. <li>
  1190. <p>Set the &#8220;Rotation Mode&#8221; of the bone to <code>Quaternion</code> or switch later from your &#8220;Rotation Mode&#8221; to <code>Quaternion</code> and make a <code>Keyframe</code>.</p>
  1191. <div class="imageblock">
  1192. <div class="content">
  1193. <img src="../../../_images/how-to/modeling/blender/blender-switch-rotationmode.png" alt="blender-switch-rotationmode.png" width="" height="">
  1194. </div>
  1195. </div>
  1196. </li>
  1197. <li>
  1198. <p>Create the <code>Keyframe</code>s (select the model armature and press <kbd>I</kbd>) along the timeline.</p>
  1199. <div class="openblock">
  1200. <div class="content">
  1201. <div class="imageblock">
  1202. <div class="content">
  1203. <img src="../../../_images/how-to/modeling/blender/blender-add-keyframes.png" alt="blender-add-keyframes.png" width="" height="">
  1204. </div>
  1205. </div>
  1206. <div class="paragraph">
  1207. <p>Each action will be an animation available via the animation control in jME after the import.</p>
  1208. </div>
  1209. <div class="admonitionblock important">
  1210. <table>
  1211. <tr>
  1212. <td class="icon">
  1213. <i class="fa icon-important" title="Important"></i>
  1214. </td>
  1215. <td class="content">
  1216. Press the <b class="button">F</b> button next to the action so it will be saved even if there&#8217;s no references. The animation would else be deleted if its not the active animation on the armature and the file is saved.
  1217. </td>
  1218. </tr>
  1219. </table>
  1220. </div>
  1221. </div>
  1222. </div>
  1223. </li>
  1224. </ol>
  1225. </div>
  1226. </div>
  1227. <div class="sect2">
  1228. <h3 id="model-checklist"><a class="anchor" href="#model-checklist"></a>Model Checklist</h3>
  1229. <div class="paragraph">
  1230. <p>Sometimes you do not create the model yourself and often models from the web are not really made for OpenGL live rendering or not completely compatible with the bone system in jME.</p>
  1231. </div>
  1232. <div class="paragraph">
  1233. <p>To export an animated model in Blender make sure the following conditions are met:</p>
  1234. </div>
  1235. <div class="admonitionblock tip">
  1236. <table>
  1237. <tr>
  1238. <td class="icon">
  1239. <i class="fa icon-tip" title="Tip"></i>
  1240. </td>
  1241. <td class="content">
  1242. This checklist is interactive for your convenience.
  1243. </td>
  1244. </tr>
  1245. </table>
  1246. </div>
  1247. <div class="ulist checklist">
  1248. <ul class="checklist">
  1249. <li>
  1250. <p><input type="checkbox" data-item-complete="0"> The animation has to be a <strong>bone animation</strong>.</p>
  1251. </li>
  1252. <li>
  1253. <p><input type="checkbox" data-item-complete="0"> Apply Location, Rotation and Scale to the mesh in Blender: In the <code>3D Viewport</code> in Blender, select the mesh in <code>Object Mode</code>, from the <code>3D View Editor</code> header, click <code><span class="menuseq"><b class="menu">Object</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="submenu">Apply</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="menuitem">Location / Rotation / Scale</b></span></code>.</p>
  1254. <div class="imageblock">
  1255. <div class="content">
  1256. <img src="../../../_images/how-to/modeling/blender/blender_apply_mesh.png" alt="blender_apply_mesh.png" width="300" height="">
  1257. </div>
  1258. </div>
  1259. </li>
  1260. <li>
  1261. <p><input type="checkbox" data-item-complete="0"> Apply Location, Rotation and Scale to the armature in Blender: In the <code>3D Viewport</code> in Blender, select the armature in <code>Object Mode</code>, from the <code>3D View Editor</code> header, click <code><span class="menuseq"><b class="menu">Object</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="submenu">Apply</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="menuitem">Location / Rotation / Scale</b></span></code>.</p>
  1262. <div class="imageblock">
  1263. <div class="content">
  1264. <img src="../../../_images/how-to/modeling/blender/blender_apply_bones.png" alt="blender_apply_bones.png" width="300" height="">
  1265. </div>
  1266. </div>
  1267. </li>
  1268. <li>
  1269. <p><input type="checkbox" data-item-complete="0"> Set the mesh’s origin point in the bottom of the mesh (see the image below).</p>
  1270. </li>
  1271. <li>
  1272. <p><input type="checkbox" data-item-complete="0"> Set the armature’s origin point in the bottom of the armature (see the image below).</p>
  1273. </li>
  1274. <li>
  1275. <p><input type="checkbox" data-item-complete="0"> Armature’s origin point and mesh’s origin point must be in the same location (see the image below).</p>
  1276. </li>
  1277. <li>
  1278. <p><input type="checkbox" data-item-complete="0"> Use a root bone located in the armature’s origin. This root bone must be in vertical position (see the image below) and it is the root bone of the armature. If you rotate the root bone, the entire armature might be rotated when you import the model into jMonkey.</p>
  1279. </li>
  1280. <li>
  1281. <p><input type="checkbox" data-item-complete="0"> Uncheck:</p>
  1282. <div class="ulist checklist">
  1283. <ul class="checklist">
  1284. <li>
  1285. <p><i class="fa fa-square-o"></i> Bone Envelopes</p>
  1286. <div class="openblock">
  1287. <div class="content">
  1288. <div class="paragraph">
  1289. <p>on the Armature modifier for the mesh (see the image below).</p>
  1290. </div>
  1291. <div class="imageblock">
  1292. <div class="content">
  1293. <img src="../../../_images/how-to/modeling/blender/blender_envelopes.png" alt="blender_envelopes.png" width="300" height="">
  1294. </div>
  1295. </div>
  1296. </div>
  1297. </div>
  1298. </li>
  1299. </ul>
  1300. </div>
  1301. </li>
  1302. <li>
  1303. <p><input type="checkbox" data-item-complete="0"> Under the armature data tab, make sure the bone type is <code>Octahedral</code> (see image below).</p>
  1304. <div class="imageblock">
  1305. <div class="content">
  1306. <img src="../../../_images/how-to/modeling/blender/blender_rootbone2.png" alt="blender_rootbone2.png" width="" height="">
  1307. </div>
  1308. </div>
  1309. </li>
  1310. </ul>
  1311. </div>
  1312. <div class="paragraph">
  1313. <p>You can use <code>SkeletonDebugger</code> to show the skeleton on your game in order to check if the mesh and the skeleton are loaded correctly:</p>
  1314. </div>
  1315. <div class="listingblock">
  1316. <div class="content">
  1317. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">final Material soldier2Mat = assetManager.loadMaterial("Materials/soldier2/soldier2.j3m");
  1318. final Spatial soldier2 = assetManager.loadModel("Models/soldier2/soldier2.j3o");
  1319. TangentBinormalGenerator.generate(soldier2);
  1320. soldier2.setMaterial(soldier2Mat);
  1321. final Node soldier2Node = new Node("Soldier2 Node");
  1322. soldier2Node.attachChild(soldier2);
  1323. rootNode.attachChild(soldier2Node);
  1324. final AnimControl animControl = soldier2.getControl(AnimControl.class);
  1325. animControl.addListener(this);
  1326. final AnimChannel animChannel = animControl.createChannel();
  1327. final SkeletonDebugger skeletonDebug = new SkeletonDebugger("skeleton", animControl.getSkeleton());
  1328. final Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
  1329. mat.setColor("Color", ColorRGBA.Green);
  1330. mat.getAdditionalRenderState().setDepthTest(false);
  1331. skeletonDebug.setMaterial(mat);
  1332. soldier2Node.attachChild(skeletonDebug);</code></pre>
  1333. </div>
  1334. </div>
  1335. <div class="imageblock">
  1336. <div class="content">
  1337. <img src="../../../_images/how-to/modeling/blender/blender_finished.png" alt="blender_finished.png" width="500" height="">
  1338. </div>
  1339. </div>
  1340. <div class="paragraph">
  1341. <p>Also check out these videos and resources:</p>
  1342. </div>
  1343. <div class="ulist">
  1344. <ul>
  1345. <li>
  1346. <p><a href="https://hub.jmonkeyengine.org/t/importing-animations-from-blender-2-62-using-ogre-xml-things-to-check-if-you-are-getting-problems/22234">Forum: How to import animated models from Blender 2.6 correctly</a> (<a href="https://www.youtube.com/watch?v=QiLCs4AKh28">Video</a>)</p>
  1347. </li>
  1348. <li>
  1349. <p><a href="http://www.youtube.com/watch?v=NdjC9sCRV0s">Video tutorial for animated models from Blender 2.6</a></p>
  1350. </li>
  1351. <li>
  1352. <p><a href="https://docs.google.com/fileview?id=0B9hhZie2D-fENDBlZDU5MzgtNzlkYi00YmQzLTliNTQtNzZhYTJhYjEzNWNk&amp;hl=en">Exporting OgreXML scenes from Blender 2.49 to jME</a></p>
  1353. </li>
  1354. </ul>
  1355. </div>
  1356. </div>
  1357. </div>
  1358. </div>
  1359. <div class="sect1">
  1360. <h2 id="action-baking"><a class="anchor" href="#action-baking"></a>Action Baking</h2>
  1361. <div class="sectionbody">
  1362. <div class="paragraph">
  1363. <p>There are many 3D model <a href="../../../../getting-started/features.html#supported-external-file-types" class="xref page">Supported External File Types</a> for jMonkeyEngine. Some of them bake your actions automatically on export, others don&#8217;t. Baking is a destructive process so it is recommended that you test the animation in-game first. If your animations are all messed up, try baking them or use a different exporter.</p>
  1364. </div>
  1365. <div class="paragraph">
  1366. <p>If you find yourself in need of baking, the process is as follows.</p>
  1367. </div>
  1368. <div class="olist arabic">
  1369. <ol class="arabic">
  1370. <li>
  1371. <p>From the Blender <code>Info</code> header, select <code><span class="menuseq"><b class="menu">File</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="menuitem">Save Copy</b></span></code>.</p>
  1372. </li>
  1373. <li>
  1374. <p>Save the file somewhere other than the current folder. This will save you the effort of re-creating the animation file if you need it at some other time.</p>
  1375. </li>
  1376. <li>
  1377. <p>In the <code>Info</code> header, change the <code>Default</code> screen layout to <code>Animation</code>.</p>
  1378. </li>
  1379. <li>
  1380. <p>In the <code>Dope Sheet Editor</code>, change the <code>Dope Sheet</code> mode/context to <code>Action Editor</code>.</p>
  1381. </li>
  1382. <li>
  1383. <p>Click the <b class="button">Action to be linked</b> button and select your action.</p>
  1384. </li>
  1385. <li>
  1386. <p>In the <code>3d Viewport</code> header, select the armature.</p>
  1387. <div class="ulist">
  1388. <ul>
  1389. <li>
  1390. <p>Depending on the mode selected choose:</p>
  1391. <div class="olist loweralpha">
  1392. <ol class="loweralpha" type="a">
  1393. <li>
  1394. <p>Object Mode: <code><span class="menuseq"><b class="menu">Object</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="submenu">Animation</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="menuitem">Bake Action</b></span></code>.</p>
  1395. </li>
  1396. <li>
  1397. <p>Pose Mode: <code><span class="menuseq"><b class="menu">Pose</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="submenu">Animation</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="menuitem">Bake Action</b></span></code>.</p>
  1398. </li>
  1399. </ol>
  1400. </div>
  1401. </li>
  1402. </ul>
  1403. </div>
  1404. </li>
  1405. <li>
  1406. <p>In the <code>Bake Action</code> dialog, deselect and set the settings as follows:</p>
  1407. <div class="dlist">
  1408. <dl>
  1409. <dt class="hdlist1">Bake Action</dt>
  1410. <dd>
  1411. <div class="ulist checklist">
  1412. <ul class="checklist">
  1413. <li>
  1414. <p><i class="fa fa-square-o"></i> Selected Only</p>
  1415. </li>
  1416. <li>
  1417. <p><i class="fa fa-check-square-o"></i> Visual Keying</p>
  1418. </li>
  1419. <li>
  1420. <p><i class="fa fa-check-square-o"></i> Clear Constraints</p>
  1421. </li>
  1422. <li>
  1423. <p><i class="fa fa-square-o"></i> Clear Parents</p>
  1424. </li>
  1425. <li>
  1426. <p><i class="fa fa-square-o"></i> Overwrite Current
  1427. -  Bake Data = Pose</p>
  1428. </li>
  1429. </ul>
  1430. </div>
  1431. </dd>
  1432. </dl>
  1433. </div>
  1434. </li>
  1435. <li>
  1436. <p>When ready click <b class="button">OK</b>.</p>
  1437. </li>
  1438. <li>
  1439. <p>The <code>Linked Action</code> in the <code>Dope Sheet Editor</code> will change to the newly baked action and is named <code>Action</code>. Rename this to the name of the imported animation.</p>
  1440. </li>
  1441. <li>
  1442. <p>Select the <b class="button">F</b> button to save the action.</p>
  1443. </li>
  1444. <li>
  1445. <p>Save your file.</p>
  1446. </li>
  1447. <li>
  1448. <p>Clear the old action from the <code>Linked Action</code> buffer. See <a href="blender_buffer_clearing.html" class="xref page">Blender Buffer Clearing</a> for more information.</p>
  1449. </li>
  1450. </ol>
  1451. </div>
  1452. </div>
  1453. </div>
  1454. <div class="sect1">
  1455. <h2 id="normal-map-baking"><a class="anchor" href="#normal-map-baking"></a>Normal Map baking</h2>
  1456. <div class="sectionbody">
  1457. <div class="paragraph">
  1458. <p>Models for live rendering should have a low polygon count. To increase the perceived detail of a model, Normal maps are commonly used in games. This tutorial will show how to create a Normal map from a &#8220;HighPoly&#8221; version of your model that you can apply to a &#8220;LowPoly&#8221; version of the model in your game.</p>
  1459. </div>
  1460. <div class="sect2">
  1461. <h3 id="blender-modeling-lowpoly-highpoly"><a class="anchor" href="#blender-modeling-lowpoly-highpoly"></a>Blender Modeling LowPoly &amp; HighPoly</h3>
  1462. <div class="paragraph">
  1463. <div class="title">Method 1</div>
  1464. <p>If you use the <code>Multiresolution</code> modifier you only need one object. Let&#8217;s look at this example, the Blender object Monkey, with an applied <code>Triangulate</code> modifier:</p>
  1465. </div>
  1466. <div class="imageblock">
  1467. <div class="content">
  1468. <img src="../../../_images/how-to/modeling/blender/monkey.png" alt="monkey.png" width="50%" height="">
  1469. </div>
  1470. </div>
  1471. <div class="olist arabic">
  1472. <ol class="arabic">
  1473. <li>
  1474. <p>Add a &#8220;Monkey&#8221; object by selecting the <b class="button">Monkey</b> button located on the &#8220;Create Tab&#8221;.</p>
  1475. <div class="olist loweralpha">
  1476. <ol class="loweralpha" type="a">
  1477. <li>
  1478. <p>While in <code>Object Mode</code>, in the <code>Properties</code> panel under the <code>Modifiers</code> tab, add a <code>Triangulate</code> modifier and apply it:</p>
  1479. </li>
  1480. <li>
  1481. <p>While in <code>Object Mode</code>, in the <code>Properties</code> panel under the <code>Modifiers</code> tab, add a <code>Multiresolution</code> modifier:</p>
  1482. <div class="openblock">
  1483. <div class="content">
  1484. <div class="imageblock">
  1485. <div class="content">
  1486. <img src="../../../_images/how-to/modeling/blender/3.1.gif" alt="3.1.gif" width="300" height="">
  1487. </div>
  1488. </div>
  1489. <div class="paragraph">
  1490. <p>There are two types of modifiers: Catmull-Clark and Simple.</p>
  1491. </div>
  1492. <div class="ulist">
  1493. <ul>
  1494. <li>
  1495. <p>Simple is better for things like walls or floors.</p>
  1496. </li>
  1497. <li>
  1498. <p>Catmull-Clark is better for objects like spheres.</p>
  1499. </li>
  1500. </ul>
  1501. </div>
  1502. <div class="paragraph">
  1503. <p>When using Catmull-Clark with a higher &#8220;subdivide&#8221; value (more than 3), it&#8217;s good to have the &#8220;Preview&#8221; value above 0 and less than the subdivide level. This is because Catmull-Clark smooths the vertices, so the Normal map is not so precise.</p>
  1504. </div>
  1505. <div class="paragraph">
  1506. <p>Regardless of the choice, the larger the difference is between &#8220;Render&#8221; and &#8220;Preview&#8221;, the deeper the detail is on the Normal map.</p>
  1507. </div>
  1508. <div class="ulist">
  1509. <ul>
  1510. <li>
  1511. <p>Here is an example of <code>Preview 1</code>, it&#8217;s more smooth than the original mesh:</p>
  1512. </li>
  1513. </ul>
  1514. </div>
  1515. <div class="imageblock">
  1516. <div class="content">
  1517. <img src="../../../_images/how-to/modeling/blender/monkeyprev1.png" alt="monkkeyprev1.png" width="50%" height="">
  1518. </div>
  1519. </div>
  1520. </div>
  1521. </div>
  1522. </li>
  1523. </ol>
  1524. </div>
  1525. </li>
  1526. <li>
  1527. <p>From the <code>File</code> header at the top of the 3d View, click the <b class="button">Choose Screen layout</b> button and select &#8220;UV Editing&#8221;.</p>
  1528. </li>
  1529. <li>
  1530. <p>In the <code>3d View</code>, select the Monkey and <kbd>Tab</kbd> into &#8220;Edit Mode&#8221;.</p>
  1531. </li>
  1532. <li>
  1533. <p>If the Monkey vertices are not already highlighted, press the <kbd>A</kbd> key until all vertices are highlighted.</p>
  1534. </li>
  1535. <li>
  1536. <p>From the <code>3d View</code> header, select <code><span class="menuseq"><b class="menu">Mesh</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="submenu">UV Unwrap</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="menuitem">Smart UV Project</b></span></code>.</p>
  1537. <div class="olist loweralpha">
  1538. <ol class="loweralpha" type="a">
  1539. <li>
  1540. <p>Click the <b class="button">Island Margin</b> button once to advance the value to .03.</p>
  1541. </li>
  1542. <li>
  1543. <p>Click <b class="button">OK</b> when ready.</p>
  1544. </li>
  1545. </ol>
  1546. </div>
  1547. </li>
  1548. <li>
  1549. <p>In the <code>UV Image Editor</code>, click the <b class="button">New</b> button.</p>
  1550. <div class="olist loweralpha">
  1551. <ol class="loweralpha" type="a">
  1552. <li>
  1553. <p>Change the name to something like &#8220;monkey_bump&#8221;.</p>
  1554. </li>
  1555. <li>
  1556. <p>Optionally, change the <code>Generated Type</code> to &#8220;UV Grid&#8221;.</p>
  1557. </li>
  1558. <li>
  1559. <p>Uncheck:</p>
  1560. <div class="ulist checklist">
  1561. <ul class="checklist">
  1562. <li>
  1563. <p><i class="fa fa-square-o"></i> 32 Bit</p>
  1564. </li>
  1565. </ul>
  1566. </div>
  1567. </li>
  1568. <li>
  1569. <p>Click <b class="button">OK</b> when ready.</p>
  1570. </li>
  1571. </ol>
  1572. </div>
  1573. </li>
  1574. <li>
  1575. <p>From the <code>File</code> header at the top of the <code>UV Image Editor</code>, click the <b class="button">Choose Screen layout</b> button and select &#8220;Default&#8221;.</p>
  1576. </li>
  1577. <li>
  1578. <p>With your mouse inside the <code>3D View</code>, tab into <code>Object Mode</code>.</p>
  1579. </li>
  1580. <li>
  1581. <p>Now go into the <code>Render</code> tab, and bake a <code>Normal</code> map using the same configuration as here:</p>
  1582. <div class="openblock">
  1583. <div class="content">
  1584. <div class="imageblock">
  1585. <div class="content">
  1586. <img src="../../../_images/how-to/modeling/blender/4.gif" alt="4.gif" width="300" height="">
  1587. </div>
  1588. </div>
  1589. <div class="admonitionblock important">
  1590. <table>
  1591. <tr>
  1592. <td class="icon">
  1593. <i class="fa icon-important" title="Important"></i>
  1594. </td>
  1595. <td class="content">
  1596. Remember! The actual preview affects the baking output and mesh export!
  1597. </td>
  1598. </tr>
  1599. </table>
  1600. </div>
  1601. </div>
  1602. </div>
  1603. </li>
  1604. <li>
  1605. <p>Navigate back to the <code>UV Editing</code> layout and save your image by selecting <code><span class="menuseq"><b class="menu">Image*</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="menuitem">Save As</b></span></code> from the <code>UV Image Editor</code> header.</p>
  1606. </li>
  1607. </ol>
  1608. </div>
  1609. <div class="admonitionblock tip">
  1610. <table>
  1611. <tr>
  1612. <td class="icon">
  1613. <i class="fa icon-tip" title="Tip"></i>
  1614. </td>
  1615. <td class="content">
  1616. The asterisk <kbd>*</kbd> next to the <code>Image</code> menu item means the image has not yet been saved.
  1617. </td>
  1618. </tr>
  1619. </table>
  1620. </div>
  1621. <div class="imageblock">
  1622. <div class="content">
  1623. <img src="../../../_images/how-to/modeling/blender/monkey_bump.png" alt="monkey_bump.png" width="50%" height="">
  1624. </div>
  1625. <div class="title">Figure 1. Normal map from Method 1</div>
  1626. </div>
  1627. <div class="paragraph">
  1628. <p>This second method produces the best results by far:</p>
  1629. </div>
  1630. <div class="olist arabic">
  1631. <div class="title">Method 2</div>
  1632. <ol class="arabic">
  1633. <li>
  1634. <p>Follow the steps for &#8220;Method 1&#8221; but before baking, uncheck:</p>
  1635. <div class="ulist checklist">
  1636. <ul class="checklist">
  1637. <li>
  1638. <p><i class="fa fa-square-o"></i> Bake from Multires</p>
  1639. </li>
  1640. </ul>
  1641. </div>
  1642. </li>
  1643. <li>
  1644. <p>Make a copy of your mesh (<kbd>SHIFT</kbd>+<kbd>D</kbd>).</p>
  1645. </li>
  1646. <li>
  1647. <p>Remove the Multires modifier from the copied model.</p>
  1648. </li>
  1649. <li>
  1650. <p>Remove any materials from the copied model.</p>
  1651. </li>
  1652. <li>
  1653. <p>Remove the armature modifier from the copied model.</p>
  1654. </li>
  1655. <li>
  1656. <p>Select the original (HighPoly) model.</p>
  1657. </li>
  1658. <li>
  1659. <p>Go into pose mode, clear any pose transformations.</p>
  1660. </li>
  1661. <li>
  1662. <p>The &#8220;HighPoly&#8221; and &#8220;LowPoly&#8221; models should be on top of each other now.</p>
  1663. </li>
  1664. <li>
  1665. <p>Select the original (HighPoly) model.</p>
  1666. </li>
  1667. <li>
  1668. <p>Hold <kbd>SHIFT</kbd> and select the copied (LowPoly) model.</p>
  1669. </li>
  1670. <li>
  1671. <p>In the <code>Properties</code> panel, in the <code>Render</code> tab:</p>
  1672. <div class="olist loweralpha">
  1673. <ol class="loweralpha" type="a">
  1674. <li>
  1675. <p>Bake Mode: <code>Normal</code></p>
  1676. </li>
  1677. <li>
  1678. <p>check:</p>
  1679. <div class="ulist checklist">
  1680. <ul class="checklist">
  1681. <li>
  1682. <p><i class="fa fa-check-square-o"></i> Selected to Active</p>
  1683. </li>
  1684. </ul>
  1685. </div>
  1686. </li>
  1687. <li>
  1688. <p>Use a reasonably high value for &#8220;Margin&#8221; (4+ pixels at least for 1024x1024 maps).</p>
  1689. </li>
  1690. </ol>
  1691. </div>
  1692. </li>
  1693. <li>
  1694. <p>Bake and don&#8217;t forget to save the Normal map image.</p>
  1695. </li>
  1696. </ol>
  1697. </div>
  1698. <div class="admonitionblock important">
  1699. <table>
  1700. <tr>
  1701. <td class="icon">
  1702. <i class="fa icon-important" title="Important"></i>
  1703. </td>
  1704. <td class="content">
  1705. <div class="paragraph">
  1706. <p>Keep in mind that when you duplicate the model, you are also duplicating its UV mapping. What this means is your "HiPoly" model and &#8220;LowPoly&#8221; model are both assigned to an image.</p>
  1707. </div>
  1708. <div class="paragraph">
  1709. <p>If you ever see this error:</p>
  1710. </div>
  1711. <div class="paragraph">
  1712. <p>"No objects or images found to bake to"</p>
  1713. </div>
  1714. <div class="paragraph">
  1715. <p>You are either missing the image for the &#8220;LowPoly&#8221; model, or in the Outliner, the camera symbol (Restrict Render) is off (grayed out).</p>
  1716. </div>
  1717. </td>
  1718. </tr>
  1719. </table>
  1720. </div>
  1721. <div class="imageblock">
  1722. <div class="content">
  1723. <img src="../../../_images/how-to/modeling/blender/monkey_bump2.png" alt="monkey_bump2.png" width="50%" height="">
  1724. </div>
  1725. <div class="title">Figure 2. Normal map from Method 2</div>
  1726. </div>
  1727. </div>
  1728. <div class="sect2">
  1729. <h3 id="fixing-the-normal-colors-in-blender"><a class="anchor" href="#fixing-the-normal-colors-in-blender"></a>Fixing the Normal colors in Blender</h3>
  1730. <div class="paragraph">
  1731. <p>There are two &#8220;standards&#8221; for Normal maps:</p>
  1732. </div>
  1733. <div class="ulist">
  1734. <ul>
  1735. <li>
  1736. <p>DirectX</p>
  1737. </li>
  1738. <li>
  1739. <p>OpenGL</p>
  1740. </li>
  1741. </ul>
  1742. </div>
  1743. <div class="paragraph">
  1744. <p>The difference between them is that the green channel is inverted. One would expect that JME supports the OpenGL way, but actually JME supports the DirectX way because it’s what Blender supports and the developers of JME thought it would be easier in the Blender to JME workflow.</p>
  1745. </div>
  1746. <div class="paragraph">
  1747. <p>Because of this, you need to fix the colors to prepare the Normal map for using it with the JME Lighting Material. You should only have to invert the green channel, the red and blue channels should stay unchanged. The curve for the red and blue channels should go from bottom left to top right, the green from top left to bottom right.</p>
  1748. </div>
  1749. <div class="paragraph">
  1750. <p>To do this after baking and saving the original Normal map image:</p>
  1751. </div>
  1752. <div class="olist arabic">
  1753. <ol class="arabic">
  1754. <li>
  1755. <p>In the &#8220;UV Editing&#8221; layout, from the &#8220;UV Image Editor&#8221; header select <code><span class="menuseq"><b class="menu">Image</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="submenu">Invert</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="menuitem">Invert Green Channel</b></span></code>.</p>
  1756. </li>
  1757. <li>
  1758. <p>Save the inverted image to a destination you want and use it with the JME Lighting Material and the &#8220;LowPoly&#8221; version of the model.</p>
  1759. </li>
  1760. </ol>
  1761. </div>
  1762. <div class="imageblock">
  1763. <div class="content">
  1764. <img src="../../../_images/how-to/modeling/blender/monkey_bump2_invert.png" alt="monkey_bump2_invert.png" width="50%" height="">
  1765. </div>
  1766. <div class="title">Figure 3. Normal map invert results (Method 2 example)</div>
  1767. </div>
  1768. <div class="admonitionblock tip">
  1769. <table>
  1770. <tr>
  1771. <td class="icon">
  1772. <i class="fa icon-tip" title="Tip"></i>
  1773. </td>
  1774. <td class="content">
  1775. <div class="title">Inverting Tips</div>
  1776. <div class="paragraph">
  1777. <p>If you build the engine from source, the master branch <a href="https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-core/src/main/resources/Common/MatDefs/Light/PBRLighting.j3md#L39">PBR material</a> has a NormalType parameter that allows one to handle this in the shader instead of having to edit the Normal map.</p>
  1778. </div>
  1779. <div class="paragraph">
  1780. <p>You can also use the SDK to invert the channel:</p>
  1781. </div>
  1782. <div class="olist arabic">
  1783. <ol class="arabic">
  1784. <li>
  1785. <p>In the SDK, <b class="button">RMB</b> select the image and choose &#8220;Edit Texture&#8221;.</p>
  1786. </li>
  1787. <li>
  1788. <p>In the window header, press the <b class="button">Filters</b> button and choose <code><span class="menuseq"><b class="menu">Invert</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="menuitem">Green</b></span></code>.</p>
  1789. </li>
  1790. <li>
  1791. <p>When satisfied, save the change in the same format as the original image using <code><span class="menuseq"><b class="menu">File</b>&#160;<i class="fa fa-angle-right caret"></i> <b class="menuitem">Save</b></span></code>.</p>
  1792. </li>
  1793. </ol>
  1794. </div>
  1795. </td>
  1796. </tr>
  1797. </table>
  1798. </div>
  1799. <div class="paragraph">
  1800. <p>This is what the final outcome of Normal map baking should produce for you. A &#8220;LowPoly&#8221; model that looks like it&#8217;s a &#8220;HighPoly&#8221; model.</p>
  1801. </div>
  1802. <div class="imageblock">
  1803. <div class="content">
  1804. <img src="../../../_images/how-to/modeling/blender/monkey_final.gif" alt="monkey_final.gif" width="" height="">
  1805. </div>
  1806. <div class="title">Figure 4. Final results (Method 2 example)</div>
  1807. </div>
  1808. </div>
  1809. </div>
  1810. </div>
  1811. <div class="sect1">
  1812. <h2 id="lightmap-baking"><a class="anchor" href="#lightmap-baking"></a>LightMap baking</h2>
  1813. <div class="sectionbody">
  1814. <div class="paragraph">
  1815. <p>The goal of this tutorial is to explain briefly how to bake light map in blender with a separate set of texture coordinates and then export a model using this map in jME3.</p>
  1816. </div>
  1817. <div class="sect2">
  1818. <h3 id="blender-modeling-texturing"><a class="anchor" href="#blender-modeling-texturing"></a>Blender modeling + texturing</h3>
  1819. <div class="ulist">
  1820. <ul>
  1821. <li>
  1822. <p>create a mesh in blender and unwrap it to create uvs</p>
  1823. <div class="ulist">
  1824. <ul>
  1825. <li>
  1826. <p><span class="image"><img src="../../../_images/how-to/modeling/blender/1.jpg" alt="1.jpg" width="600" height=""></span></p>
  1827. </li>
  1828. </ul>
  1829. </div>
  1830. </li>
  1831. <li>
  1832. <p>In the mesh tab you can see the sets of Uvs, it will create the first one.</p>
  1833. <div class="ulist">
  1834. <ul>
  1835. <li>
  1836. <p>You can assign w/e texture on it, I used the built in checker of blender for the example.</p>
  1837. </li>
  1838. </ul>
  1839. </div>
  1840. </li>
  1841. <li>
  1842. <p>In this list, create a new one and click on the camera icon so that baking is made with this set. Name it LightUvMap.</p>
  1843. </li>
  1844. <li>
  1845. <p>In the 3D view in edit mode select all your mesh vertices and hit 'U'/LightMap pack then ok it will unfold the mesh for light map.</p>
  1846. </li>
  1847. <li>
  1848. <p>Create a new image, go to the render tab an all at the end check the &#8220;Bake&#8221; section and select shadows. Then click bake.</p>
  1849. </li>
  1850. <li>
  1851. <p>If all went ok it will create a light map like this.</p>
  1852. <div class="ulist">
  1853. <ul>
  1854. <li>
  1855. <p><span class="image"><img src="../../../_images/how-to/modeling/blender/2.jpg" alt="2.jpg" width="600" height=""></span></p>
  1856. </li>
  1857. </ul>
  1858. </div>
  1859. </li>
  1860. <li>
  1861. <p>Go to the material tab, create a new one for your model and go to the Texture Tab.</p>
  1862. </li>
  1863. <li>
  1864. <p>Create 2 textures one for the color map, and one for the light map.</p>
  1865. </li>
  1866. <li>
  1867. <p>In the Mapping section be sure to select coordinates : UV and select the good set of coordinates.</p>
  1868. <div class="ulist">
  1869. <ul>
  1870. <li>
  1871. <p><span class="image"><img src="../../../_images/how-to/modeling/blender/3.jpg" alt="3.jpg" width="600" height=""></span></p>
  1872. </li>
  1873. </ul>
  1874. </div>
  1875. </li>
  1876. <li>
  1877. <p>Then the light map</p>
  1878. <div class="ulist">
  1879. <ul>
  1880. <li>
  1881. <p><span class="image"><img src="../../../_images/how-to/modeling/blender/4.jpg" alt="4.jpg" width="600" height=""></span></p>
  1882. </li>
  1883. </ul>
  1884. </div>
  1885. </li>
  1886. </ul>
  1887. </div>
  1888. </div>
  1889. </div>
  1890. </div>
  1891. <div class="sect1">
  1892. <h2 id="importing-the-model-in-the-sdk-and-creating-the-appropriate-material"><a class="anchor" href="#importing-the-model-in-the-sdk-and-creating-the-appropriate-material"></a>Importing the model in the SDK and creating the appropriate material</h2>
  1893. <div class="sectionbody">
  1894. <div class="paragraph">
  1895. <p>Once this is done, export your model with one of the 3D model <a href="../../../../getting-started/features.html#supported-external-file-types" class="xref page">Supported External File Types</a> and convert it into a <code>.j3o</code> with the SDK, or the JME <a href="https://javadoc.jmonkeyengine.org/v3.4.1-stable/com/jme3/export/binary/BinaryExporter.html">BinaryExporter</a>.</p>
  1896. </div>
  1897. <div class="ulist">
  1898. <ul>
  1899. <li>
  1900. <p>Create material for it using the lighting definition.</p>
  1901. </li>
  1902. <li>
  1903. <p>Add the colorMap in the diffuse map slot and the lightMap in the light map slot.</p>
  1904. </li>
  1905. <li>
  1906. <p>Make sure you check &#8220;SeparateTexCoords&#8221;</p>
  1907. <div class="ulist">
  1908. <ul>
  1909. <li>
  1910. <p><span class="image"><img src="../../../_images/how-to/modeling/blender/5.jpg" alt="5.jpg" width="600" height=""></span></p>
  1911. </li>
  1912. </ul>
  1913. </div>
  1914. </li>
  1915. <li>
  1916. <p>It should roughly result in something like that :</p>
  1917. <div class="ulist">
  1918. <ul>
  1919. <li>
  1920. <p><span class="image"><img src="../../../_images/how-to/modeling/blender/6.jpg" alt="6.jpg" width="600" height=""></span></p>
  1921. </li>
  1922. </ul>
  1923. </div>
  1924. </li>
  1925. </ul>
  1926. </div>
  1927. </div>
  1928. </div>
  1929. <div class="sect1">
  1930. <h2 id="modelling-racing-tracks-and-cars"><a class="anchor" href="#modelling-racing-tracks-and-cars"></a>Modelling racing tracks and cars</h2>
  1931. <div class="sectionbody">
  1932. <div class="paragraph">
  1933. <p>Follow the link below to a pdf tutorial by rhymez where I guide you to modelling a car and importing it to the jMonkeyEngine correctly and edit it in the vehicle editor.Plus how to model a simple racing track.
  1934. <a href="http://www.indiedb.com/games/street-rally-3d/downloads/modelling-in-blender-to-the-jmonkeyengine">http://www.indiedb.com/games/street-rally-3d/downloads/modelling-in-blender-to-the-jmonkeyengine</a></p>
  1935. </div>
  1936. </div>
  1937. </div>
  1938. <div class="sect1">
  1939. <h2 id="optimizing-models-for-3d-games"><a class="anchor" href="#optimizing-models-for-3d-games"></a>Optimizing Models for 3D games</h2>
  1940. <div class="sectionbody">
  1941. <div class="paragraph">
  1942. <p>Follow the link below to a pdf tutorial by rhymez where I guide you on how you can optimize your models for faster rendering.
  1943. <a href="http://www.indiedb.com/games/street-rally-3d/downloads/optimizing-3d-models-for-games">http://www.indiedb.com/games/street-rally-3d/downloads/optimizing-3d-models-for-games</a></p>
  1944. </div>
  1945. </div>
  1946. </div>
  1947. <div class="sect1">
  1948. <h2 id="skybox-baking"><a class="anchor" href="#skybox-baking"></a>SkyBox baking</h2>
  1949. <div class="sectionbody">
  1950. <div class="paragraph">
  1951. <p>There are several ways to create static images to use for a sky in your game. This will describe the concepts used in blender and create an ugly sky <img class="emoji" draggable="false" height="24px" width="24px" src="https://twemoji.maxcdn.com/2/svg/1f603.svg" />. Check the links below for other ways and prettier skies.</p>
  1952. </div>
  1953. <div class="paragraph">
  1954. <p>A sky box is a texture mapped cube, it can also, loosely, be called en EnvMap or a CubeMap. The camera is inside the cube and the clever thing that jME does is to draw the sky so it is always behind whatever else is in your scene. Imagine the monkey is the camera in the picture.</p>
  1955. </div>
  1956. <div class="ulist">
  1957. <ul>
  1958. <li>
  1959. <p><span class="image"><img src="../../../_images/how-to/modeling/blender/skybox-concept.png" alt="skybox-concept.png" width="" height=""></span></p>
  1960. </li>
  1961. </ul>
  1962. </div>
  1963. <div class="paragraph">
  1964. <p>But a real sky is not a box around our heads, it is more like a sphere. So if we put any old image in the sky it will look strange and might even look like a box. This is not what we want. The trick is to distort the image so that it will <em>look</em> like a sphere even if it in fact is a picture pasted on a box. Luckily blender can do that tricky distortion for us.</p>
  1965. </div>
  1966. <div class="paragraph">
  1967. <p>The screenshots are from Blender 2.63 but the equivalent operations have been in blender for years so with minor tweaks should work for almost any version.</p>
  1968. </div>
  1969. <div class="paragraph">
  1970. <p>So let&#8217;s get started</p>
  1971. </div>
  1972. <div class="ulist">
  1973. <ul>
  1974. <li>
  1975. <p>Fire up blender and you&#8217;ll see something like this.</p>
  1976. <div class="ulist">
  1977. <ul>
  1978. <li>
  1979. <p><span class="image"><img src="../../../_images/how-to/modeling/blender/start-screen2.png" alt="start-screen2.png" width="" height=""></span></p>
  1980. </li>
  1981. </ul>
  1982. </div>
  1983. </li>
  1984. <li>
  1985. <p>The cube in the start scene is perfect for us. What we&#8217;ll do is have Blender render the scene onto that cube. The resulting image is what we&#8217;ll use for our sky box. So our jME sky will look like we stood inside the blender box and looked out on the scene in blender.</p>
  1986. </li>
  1987. <li>
  1988. <p>Start by selecting the box and set its material to shadeless.</p>
  1989. <div class="ulist">
  1990. <ul>
  1991. <li>
  1992. <p><span class="image"><img src="../../../_images/how-to/modeling/blender/shadeless.png" alt="shadeless.png" width="" height=""></span></p>
  1993. </li>
  1994. </ul>
  1995. </div>
  1996. </li>
  1997. <li>
  1998. <p>Now we will create a texture for the box. Make sure the texture is an <code>Environment Map</code>, that the <code>Viewpoint Object</code> is set to the cube. The resolution is how large the resulting image will be. More pixels makes the sky look better but comes at the cost of texture memory. You&#8217;ll have to trim the resolution to what works in your application.</p>
  1999. <div class="ulist">
  2000. <ul>
  2001. <li>
  2002. <p><span class="image"><img src="../../../_images/how-to/modeling/blender/texture.png" alt="texture.png" width="" height=""></span></p>
  2003. </li>
  2004. </ul>
  2005. </div>
  2006. </li>
  2007. <li>
  2008. <p>Next up is the fun part, create the sky scene in blender. You can do whatever fits your application, include models for a city landscape, set up a texture mapped sphere in blender with a nice photographed sky, whatever you can think will make a good sky. I am not so creative so I created this scene:</p>
  2009. <div class="ulist">
  2010. <ul>
  2011. <li>
  2012. <p><span class="image"><img src="../../../_images/how-to/modeling/blender/scene.png" alt="scene.png" width="" height=""></span></p>
  2013. </li>
  2014. </ul>
  2015. </div>
  2016. </li>
  2017. <li>
  2018. <p>Now render the scene (press F12). It doesn&#8217;t actually matter where the camera is in blender but you might see something similar to this:</p>
  2019. <div class="ulist">
  2020. <ul>
  2021. <li>
  2022. <p><span class="image"><img src="../../../_images/how-to/modeling/blender/render.png" alt="render.png" width="" height=""></span></p>
  2023. </li>
  2024. </ul>
  2025. </div>
  2026. </li>
  2027. <li>
  2028. <p>You can see that Blender has actually drawn the scene onto the cube. This is exactly what we want. Now to save the image.</p>
  2029. </li>
  2030. <li>
  2031. <p>Select the texture of the cube and select save environment map.</p>
  2032. <div class="ulist">
  2033. <ul>
  2034. <li>
  2035. <p><span class="image"><img src="../../../_images/how-to/modeling/blender/saveenvmap.png" alt="saveenvmap.png" width="" height=""></span></p>
  2036. </li>
  2037. </ul>
  2038. </div>
  2039. </li>
  2040. <li>
  2041. <p>That is it for Blender. Open the saved image in some image editor (I use the Gimp from <a href="http://www.gimp.org">http://www.gimp.org</a> here).</p>
  2042. </li>
  2043. </ul>
  2044. </div>
  2045. <div class="admonitionblock tip">
  2046. <table>
  2047. <tr>
  2048. <td class="icon">
  2049. <i class="fa icon-tip" title="Tip"></i>
  2050. </td>
  2051. <td class="content">
  2052. <div class="paragraph">
  2053. <p>The SDK also contains an image editor, right-click the image and select &#8220;edit&#8221; image to open it.</p>
  2054. </div>
  2055. </td>
  2056. </tr>
  2057. </table>
  2058. </div>
  2059. <div class="ulist">
  2060. <ul>
  2061. <li>
  2062. <p>You will notice that Blender has taken the 6 sides of the cube and pasted together into one image (3x2). So now we need to cut it up again into 6 separate images. In gimp I usually set the guides to where I want to cut and then go into Filters→Web→Slice and let gimp cut it up for me.</p>
  2063. <div class="ulist">
  2064. <ul>
  2065. <li>
  2066. <p><span class="image"><img src="../../../_images/how-to/modeling/blender/post-slice.png" alt="post-slice.png" width="" height=""></span></p>
  2067. </li>
  2068. </ul>
  2069. </div>
  2070. </li>
  2071. <li>
  2072. <p>Next up is to move the image files into your assets directory and create the sky in jME. You can do that in the Scene Composer by right clicking the scene node, select <code>Add Spatial</code> and then select <code>Skybox</code>.</p>
  2073. </li>
  2074. </ul>
  2075. </div>
  2076. <div class="paragraph">
  2077. <p>If you want to do it from code, here is an example:</p>
  2078. </div>
  2079. <div class="listingblock">
  2080. <div class="content">
  2081. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public void simpleInitApp() {
  2082. Texture westTex = assetManager.loadTexture("Textures/west.png");
  2083. Texture eastTex = assetManager.loadTexture("Textures/east.png");
  2084. Texture northTex = assetManager.loadTexture("Textures/north.png");
  2085. Texture southTex = assetManager.loadTexture("Textures/south.png");
  2086. Texture upTex = assetManager.loadTexture("Textures/top.png");
  2087. Texture downTex = assetManager.loadTexture("Textures/bottom.png");
  2088. final Vector3f normalScale = new Vector3f(-1, 1, 1);
  2089. Spatial skySpatial = SkyFactory.createSky(
  2090. assetManager,
  2091. westTex,
  2092. eastTex,
  2093. northTex,
  2094. southTex,
  2095. upTex,
  2096. downTex,
  2097. normalScale);
  2098. rootNode.attachChild(skySpatial);
  2099. }</code></pre>
  2100. </div>
  2101. </div>
  2102. <div class="admonitionblock tip">
  2103. <table>
  2104. <tr>
  2105. <td class="icon">
  2106. <i class="fa icon-tip" title="Tip"></i>
  2107. </td>
  2108. <td class="content">
  2109. <div class="paragraph">
  2110. <p>This example uses a strange normalScale, this is to flip the image on the X-axis and might not be needed in your case. Hint: the texture is applied on the outside of the cube but we are inside so what do we see?</p>
  2111. </div>
  2112. </td>
  2113. </tr>
  2114. </table>
  2115. </div>
  2116. </div>
  2117. </div>
  2118. <div class="sect1">
  2119. <h2 id="further-reading"><a class="anchor" href="#further-reading"></a>Further reading</h2>
  2120. <div class="sectionbody">
  2121. <div class="ulist">
  2122. <ul>
  2123. <li>
  2124. <p><a href="../../../../core/util/sky.html" class="xref page">How to add a Sky to your Scene</a></p>
  2125. </li>
  2126. <li>
  2127. <p><a href="http://hub.jmonkeyengine.org/t/jmonkeyengine-tutorial-how-to-create-skymaps-using-blender/19313">http://hub.jmonkeyengine.org/t/jmonkeyengine-tutorial-how-to-create-skymaps-using-blender/19313</a></p>
  2128. </li>
  2129. </ul>
  2130. </div>
  2131. </div>
  2132. </div>
  2133. <nav class="pagination">
  2134. <span class="prev"><a href="../3dsmax/3dsmax.html">3dsmax</a></span>
  2135. <span class="next"><a href="blender_buffer_clearing.html">Buffer Clearing</a></span>
  2136. </nav>
  2137. </article>
  2138. <aside class="toc sidebar" data-title="Contents" data-levels="2">
  2139. <div class="toc-menu"></div>
  2140. </aside>
  2141. </div>
  2142. </main>
  2143. </div>
  2144. <footer class="footer">
  2145. <p>Copyright 2020 jMonkeyEngine Wiki Contributors. Licensed BSD-3.</p>
  2146. </footer>
  2147. <script src="../../../../../../_/js/vendor/docsearch.min.js"></script>
  2148. <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js -->
  2149. <script>
  2150. var search = docsearch({
  2151. apiKey: 'a736b6d93de805e26ec2f49b55013fbd',
  2152. indexName: 'jmonkeyengine',
  2153. inputSelector: '#search-input',
  2154. autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
  2155. algoliaOptions: { hitsPerPage: 10 }
  2156. }).autocomplete
  2157. search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
  2158. function focusSearchInput () { document.querySelector('#search-input').focus() }
  2159. if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput)
  2160. </script>
  2161. <script src="../../../../../../_/js/site.js"></script>
  2162. <script async src="../../../../../../_/js/vendor/highlight.js"></script>
  2163. </body>
  2164. </html>