3dsmax.html 65 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718
  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>3ds Max Bone Animation to JME3 using OgreMax plugin :: jMonkeyEngine Docs</title>
  7. <link rel="canonical" href="https://wiki.jmonkeyengine.org/docs/3.8/tutorials/how-to/modeling/3dsmax/3dsmax.html">
  8. <link rel="prev" href="../../../concepts/transparency_sorting.html">
  9. <link rel="next" href="../blender/blender.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="3ds Max Bone Animation to JME3 using OgreMax plugin">
  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 is-current-page" data-depth="3">
  171. <a class="nav-link" href="3dsmax.html">3dsmax</a>
  172. </li>
  173. <li class="nav-item" data-depth="3">
  174. <button class="nav-item-toggle"></button>
  175. <a class="nav-link" href="../blender/blender.html">Blender</a>
  176. <ul class="nav-list">
  177. <li class="nav-item" data-depth="4">
  178. <a class="nav-link" href="../blender/blender_buffer_clearing.html">Buffer Clearing</a>
  179. </li>
  180. <li class="nav-item" data-depth="4">
  181. <a class="nav-link" href="../blender/blender_gltf.html">Export as GlTF</a>
  182. </li>
  183. <li class="nav-item" data-depth="4">
  184. <a class="nav-link" href="../blender/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/blender_ogre_compatibility.html">Ogre Compatibility</a>
  188. </li>
  189. <li class="nav-item" data-depth="4">
  190. <a class="nav-link" href="../blender/makehuman.html">MakeHuman</a>
  191. </li>
  192. <li class="nav-item" data-depth="4">
  193. <a class="nav-link" href="../blender/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="../blender/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="3dsmax.html">3dsmax</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="3dsmax.html">3.8</a>
  1011. <a class="version" href="../../../../../3.4/tutorials/how-to/modeling/3dsmax/3dsmax.html">3.4</a>
  1012. <a class="version" href="../../../../../3.3/tutorials/how-to/modeling/3dsmax/3dsmax.html">3.3</a>
  1013. <a class="version" href="../../../../../3.2/tutorials/how-to/modeling/3dsmax/3dsmax.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/3dsmax/3dsmax.adoc">Edit this Page</a></div>
  1017. </div>
  1018. <div class="content">
  1019. <article class="doc">
  1020. <h1 class="page">3ds Max Bone Animation to JME3 using OgreMax plugin</h1>
  1021. <div class="sect1">
  1022. <h2 id="asset-management"><a class="anchor" href="#asset-management"></a>Asset Management</h2>
  1023. <div class="sectionbody">
  1024. <div class="paragraph">
  1025. <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>
  1026. </div>
  1027. </div>
  1028. </div>
  1029. <div class="sect1">
  1030. <h2 id="creating-models-in-3dsmax"><a class="anchor" href="#creating-models-in-3dsmax"></a>Creating models in 3dsMax</h2>
  1031. <div class="sectionbody">
  1032. <div class="paragraph">
  1033. <p>For this tutorial I used 3D Studio Max 2012 and OgreMax 2.4.3 free edition</p>
  1034. </div>
  1035. <div class="sect2">
  1036. <h3 id="create-model-and-bones"><a class="anchor" href="#create-model-and-bones"></a>Create Model and Bones</h3>
  1037. <div class="ulist">
  1038. <ul>
  1039. <li>
  1040. <p>Create a new file</p>
  1041. </li>
  1042. <li>
  1043. <p>Select the &#8220;Create&#8221; tab &gt; &#8220;Geometry&#8221; &gt; &#8220;Cylinder&#8221;</p>
  1044. </li>
  1045. </ul>
  1046. </div>
  1047. <div class="paragraph">
  1048. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax-0.png" alt="3dsmax-0.png" width="" height=""></span></p>
  1049. </div>
  1050. <div class="ulist">
  1051. <ul>
  1052. <li>
  1053. <p>Draw a cylinder, lets say with 8 height segments (must be enough for a smooth deformation)</p>
  1054. </li>
  1055. <li>
  1056. <p>Also check &#8220;Generate Mapping Coords&#8221;.</p>
  1057. </li>
  1058. </ul>
  1059. </div>
  1060. <div class="paragraph">
  1061. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax-1.png" alt="3dsmax-1.png" width="" height=""></span></p>
  1062. </div>
  1063. <div class="ulist">
  1064. <ul>
  1065. <li>
  1066. <p>Click &#8220;Create&#8221; tab &gt; &#8220;Systems&#8221; &gt; &#8220;Bones&#8221;</p>
  1067. </li>
  1068. </ul>
  1069. </div>
  1070. <div class="paragraph">
  1071. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax-2.png" alt="3dsmax-2.png" width="" height=""></span></p>
  1072. </div>
  1073. <div class="ulist">
  1074. <ul>
  1075. <li>
  1076. <p>Add some bones in the center of the cylinder</p>
  1077. </li>
  1078. </ul>
  1079. </div>
  1080. <div class="paragraph">
  1081. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax-3.png" alt="3dsmax-3.png" width="" height=""></span></p>
  1082. </div>
  1083. <div class="ulist">
  1084. <ul>
  1085. <li>
  1086. <p>Select the cylinder, right click it and click &#8220;Convert To&#8221;: &gt; &#8220;Convert to Editable Mesh&#8221; to prevent issues with OgreMax</p>
  1087. </li>
  1088. <li>
  1089. <p>Click the &#8220;Modify&#8221; tab &gt; &#8220;Modifier List&#8221; and add the &#8220;Skin&#8221; modifier</p>
  1090. </li>
  1091. </ul>
  1092. </div>
  1093. <div class="paragraph">
  1094. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax-4.png" alt="3dsmax-4.png" width="" height=""></span></p>
  1095. </div>
  1096. <div class="ulist">
  1097. <ul>
  1098. <li>
  1099. <p>Beneath &#8220;Bones:&#8221; click &#8220;Add&#8221; and select all of your bones</p>
  1100. </li>
  1101. </ul>
  1102. </div>
  1103. <div class="paragraph">
  1104. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax-5.png" alt="3dsmax-5.png" width="" height=""></span></p>
  1105. </div>
  1106. <div class="ulist">
  1107. <ul>
  1108. <li>
  1109. <p>You may also edit the envelopes, but for a small test the default settings are ok</p>
  1110. </li>
  1111. </ul>
  1112. </div>
  1113. </div>
  1114. <div class="sect2">
  1115. <h3 id="create-the-animation"><a class="anchor" href="#create-the-animation"></a>Create the animation</h3>
  1116. <div class="ulist">
  1117. <ul>
  1118. <li>
  1119. <p>Select the cylinder, and click &#8220;Display&#8221; tab &gt; &#8220;Freeze Selected&#8221; so it is easier to select the bones during animation</p>
  1120. </li>
  1121. <li>
  1122. <p>Select the two top bones and enable the &#8220;Auto Key&#8221; mode</p>
  1123. </li>
  1124. </ul>
  1125. </div>
  1126. <div class="paragraph">
  1127. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax-6.png" alt="3dsmax-6.png" width="" height=""></span></p>
  1128. </div>
  1129. <div class="ulist">
  1130. <ul>
  1131. <li>
  1132. <p>The first key frame will be created automatically. Move the animation track slider to frame 5</p>
  1133. </li>
  1134. <li>
  1135. <p>Move the selected bones a bit. The cylinder mesh will be deformed. Because you are in the &#8220;Auto Key&#8221; mode, a key frame will be created</p>
  1136. </li>
  1137. </ul>
  1138. </div>
  1139. <div class="paragraph">
  1140. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax-7.png" alt="3dsmax-7.png" width="" height=""></span></p>
  1141. </div>
  1142. <div class="ulist">
  1143. <ul>
  1144. <li>
  1145. <p>Create some additional key frames. You may also select more bones and move or rotate them. I’ve created 25 frames and the last key frame equals the first, so the animation is loopable</p>
  1146. </li>
  1147. <li>
  1148. <p>After creating the animation, disable the &#8220;Auto Key&#8221; mode</p>
  1149. </li>
  1150. </ul>
  1151. </div>
  1152. </div>
  1153. <div class="sect2">
  1154. <h3 id="ogremax-settings"><a class="anchor" href="#ogremax-settings"></a>OgreMax settings</h3>
  1155. <div class="ulist">
  1156. <ul>
  1157. <li>
  1158. <p>Open the &#8220;OgreMax Scene Settings&#8221; dialog from the menu</p>
  1159. </li>
  1160. <li>
  1161. <p>In the &#8220;Meshes&#8221; tab, enable &#8220;Export XML Files&#8221; and disable &#8220;Export Binary Files&#8221; as well as &#8220;Export Vertex Colors&#8221;</p>
  1162. </li>
  1163. </ul>
  1164. </div>
  1165. <div class="paragraph">
  1166. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax-8.png" alt="3dsmax-8.png" width="" height=""></span></p>
  1167. </div>
  1168. <div class="ulist">
  1169. <ul>
  1170. <li>
  1171. <p>Click the &#8220;Environment&#8221; tab and uncheck &#8220;Export Environment Settings&#8221;. Otherwise the JME importer will throw a NullPointerException</p>
  1172. </li>
  1173. </ul>
  1174. </div>
  1175. <div class="paragraph">
  1176. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax-9.png" alt="3dsmax-9.png" width="" height=""></span></p>
  1177. </div>
  1178. <div class="ulist">
  1179. <ul>
  1180. <li>
  1181. <p>If you have textured your model, you may also check &#8220;Copy Bitmaps to Export Directory&#8221; in the &#8220;Bitmaps&#8221; tab</p>
  1182. </li>
  1183. <li>
  1184. <p>Unfreeze the cylinder by clicking &#8220;Display&#8221; tab &gt; &#8220;Unfreeze All&#8221; and select it</p>
  1185. </li>
  1186. <li>
  1187. <p>While having the cylinder selected, open the &#8220;OgreMax Object Settings&#8221; dialog from the menu</p>
  1188. </li>
  1189. <li>
  1190. <p>Open the &#8220;Mesh Animations&#8221; tab and select type &#8220;Skeleton&#8221;, &#8220;Export Skeleton&#8221; : &#8220;Yes&#8221;</p>
  1191. </li>
  1192. <li>
  1193. <p>Below &#8220;Mesh Animations&#8221; hit the &#8220;Add…&#8221; button</p>
  1194. </li>
  1195. <li>
  1196. <p>Assign a name to the track, maybe &#8220;wobble&#8221;. The track type must be &#8220;Skin&#8221;. Set the right &#8220;Start/End Frames&#8221; for your animation</p>
  1197. </li>
  1198. </ul>
  1199. </div>
  1200. <div class="paragraph">
  1201. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax-10.png" alt="3dsmax-10.png" width="" height=""></span></p>
  1202. </div>
  1203. <div class="ulist">
  1204. <ul>
  1205. <li>
  1206. <p>Hit ok and you will see the animation in the table. You may add additional animations by selecting other frame ranges, if desired</p>
  1207. </li>
  1208. </ul>
  1209. </div>
  1210. <div class="paragraph">
  1211. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax-11.png" alt="3dsmax-11.png" width="" height=""></span></p>
  1212. </div>
  1213. </div>
  1214. <div class="sect2">
  1215. <h3 id="export-and-import"><a class="anchor" href="#export-and-import"></a>Export and Import</h3>
  1216. <div class="ulist">
  1217. <ul>
  1218. <li>
  1219. <p>When all animations are in the list, select &#8220;OgreMax&#8221; &gt; &#8220;Export&#8221; &gt; &#8220;Export Scene&#8221; and name the file &#8220;worm.scene&#8221;</p>
  1220. </li>
  1221. <li>
  1222. <p>Create a JME test class that imports the file, get the animation controller and start the &#8220;wobble&#8221; animation</p>
  1223. </li>
  1224. </ul>
  1225. </div>
  1226. <div class="listingblock">
  1227. <div class="content">
  1228. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">import com.jme3.animation.AnimChannel;
  1229. import com.jme3.animation.AnimControl;
  1230. import com.jme3.animation.Skeleton;
  1231. import com.jme3.app.SimpleApplication;
  1232. import com.jme3.asset.plugins.FileLocator;
  1233. import com.jme3.light.AmbientLight;
  1234. import com.jme3.light.PointLight;
  1235. import com.jme3.material.Material;
  1236. import com.jme3.math.ColorRGBA;
  1237. import com.jme3.scene.Geometry;
  1238. import com.jme3.scene.Node;
  1239. import com.jme3.scene.Spatial;
  1240. import com.jme3.scene.control.LodControl;
  1241. import com.jme3.scene.debug.SkeletonDebugger;
  1242. /**
  1243. * This is a test class for loading a Ogre XML scene exported by OgreMax.
  1244. *
  1245. * @author Stephan Dreyer
  1246. *
  1247. */
  1248. public class TestOgreMaxImport extends SimpleApplication {
  1249. @Override
  1250. public void simpleInitApp() {
  1251. assetManager.registerLocator("Assets/model/ogre/test/", FileLocator.class);
  1252. // create the geometry and attach it
  1253. final Node model = (Node) assetManager.loadModel("worm.scene");
  1254. // resize it, because of the large 3dsmax scales
  1255. model.setLocalScale(.001f);
  1256. // attach to root node
  1257. rootNode.attachChild(model);
  1258. addLodControl(model);
  1259. final AnimControl ac = findAnimControl(model);
  1260. try {
  1261. // add a skeleton debugger to make bones visible
  1262. final Skeleton skel = ac.getSkeleton();
  1263. final SkeletonDebugger skeletonDebug = new SkeletonDebugger("skeleton",
  1264. skel);
  1265. final Material mat = new Material(assetManager,
  1266. "Common/MatDefs/Misc/Unshaded.j3md");
  1267. mat.setColor("Color", ColorRGBA.Green);
  1268. mat.getAdditionalRenderState().setDepthTest(false);
  1269. skeletonDebug.setMaterial(mat);
  1270. ((Node) ac.getSpatial()).attachChild(skeletonDebug);
  1271. // create a channel and start the wobble animation
  1272. final AnimChannel channel = ac.createChannel();
  1273. channel.setAnim("wobble");
  1274. } catch (final Exception e) {
  1275. e.printStackTrace();
  1276. }
  1277. // add some lights
  1278. rootNode.addLight(new AmbientLight());
  1279. rootNode.addLight(new PointLight());
  1280. }
  1281. public void addLodControl(final Spatial parent) {
  1282. if (parent instanceof Node) {
  1283. for (final Spatial s : ((Node) parent).getChildren()) {
  1284. addLodControl(s);
  1285. }
  1286. } else if (parent instanceof Geometry) {
  1287. final LodControl lc = new LodControl();
  1288. lc.setDistTolerance(1f);
  1289. parent.addControl(lc);
  1290. }
  1291. }
  1292. /**
  1293. * Method to find the animation control, because it is not on the models root
  1294. * node.
  1295. *
  1296. * @param parent
  1297. * The spatial to search.
  1298. * @return The {@link AnimControl} or null if it does not exist.
  1299. */
  1300. public AnimControl findAnimControl(final Spatial parent) {
  1301. final AnimControl animControl = parent.getControl(AnimControl.class);
  1302. if (animControl != null) {
  1303. return animControl;
  1304. }
  1305. if (parent instanceof Node) {
  1306. for (final Spatial s : ((Node) parent).getChildren()) {
  1307. final AnimControl animControl2 = findAnimControl(s);
  1308. if (animControl2 != null) {
  1309. return animControl2;
  1310. }
  1311. }
  1312. }
  1313. return null;
  1314. }
  1315. public static void main(final String[] args) {
  1316. new TestOgreMaxImport().start();
  1317. }
  1318. }</code></pre>
  1319. </div>
  1320. </div>
  1321. <div class="paragraph">
  1322. <p>You will see your worms strange movements. Have fun!</p>
  1323. </div>
  1324. <div class="paragraph">
  1325. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax-12.png" alt="3dsmax-12.png" width="" height=""></span></p>
  1326. </div>
  1327. <div class="sect3">
  1328. <h4 id="3ds-max-biped-animation-to-jme3"><a class="anchor" href="#3ds-max-biped-animation-to-jme3"></a>3ds Max Biped Animation to JME3</h4>
  1329. <div class="paragraph">
  1330. <p>You can also use the biped operator to animate models, but you have to consider a lot of things.</p>
  1331. </div>
  1332. </div>
  1333. </div>
  1334. <div class="sect2">
  1335. <h3 id="creating-a-character-in-3dsmax"><a class="anchor" href="#creating-a-character-in-3dsmax"></a>Creating a character in 3dsMax</h3>
  1336. <div class="paragraph">
  1337. <p>I will not tell you in detail how to model a character. There I many good tutorials on the web, I used <a href="http://majoh.deviantart.com/art/Mandi-s-3dsmax-Biped-Tutorial-26515784">that one</a>.</p>
  1338. </div>
  1339. <div class="ulist">
  1340. <ul>
  1341. <li>
  1342. <p>You may create a biped before you start modeling, so it is quite easier to fit the proportions of the biped.</p>
  1343. </li>
  1344. <li>
  1345. <p>After creating a model and a biped I got something like that:</p>
  1346. </li>
  1347. </ul>
  1348. </div>
  1349. <div class="paragraph">
  1350. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/1.png" alt="1.png" width="" height=""></span></p>
  1351. </div>
  1352. <div class="ulist">
  1353. <ul>
  1354. <li>
  1355. <p>I added the &#8220;Meshsmooth&#8221; modifier with 2 iterations and got this result:</p>
  1356. </li>
  1357. </ul>
  1358. </div>
  1359. <div class="paragraph">
  1360. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax_biped_2.png" alt="3dsmax_biped_2.png" width="" height=""></span></p>
  1361. </div>
  1362. <div class="ulist">
  1363. <ul>
  1364. <li>
  1365. <p>After smoothing your mesh you could correct vertices with the &#8220;Edit Mesh&#8221; modifier. Finally you add the &#8220;Physique&#8221; modifier.</p>
  1366. </li>
  1367. <li>
  1368. <p>Now you can edit your envelopes to fit your model.</p>
  1369. </li>
  1370. </ul>
  1371. </div>
  1372. </div>
  1373. <div class="sect2">
  1374. <h3 id="creating-a-simple-walk-animation"><a class="anchor" href="#creating-a-simple-walk-animation"></a>Creating a simple walk animation</h3>
  1375. <div class="ulist">
  1376. <ul>
  1377. <li>
  1378. <p>Select the chest of your biped, choose &#8220;Motion&#8221; (1) tab &gt; &#8220;Foot Step Mode&#8221; (2) &gt; &#8220;Create Multiple Footsteps&#8221; (3)</p>
  1379. </li>
  1380. <li>
  1381. <p>You need to select the &#8220;In Place Mode&#8221; (4), so the character moves in place without changing its location.</p>
  1382. </li>
  1383. </ul>
  1384. </div>
  1385. <div class="paragraph">
  1386. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax_biped_3_1.png" alt="3dsmax_biped_3_1.png" width="" height=""></span></p>
  1387. </div>
  1388. <div class="ulist">
  1389. <ul>
  1390. <li>
  1391. <p>You can now play a bit with the settings, I adjusted &#8220;Actual Stride Length&#8221; and &#8220;Actual Stride Height&#8221;.</p>
  1392. </li>
  1393. <li>
  1394. <p>For the &#8220;Number&#8221; of Footsteps 6 will be sufficient because the animation is cycled later.</p>
  1395. </li>
  1396. <li>
  1397. <p><strong>Note:</strong> You can also create or edit footsteps by hand and move or rotate them.</p>
  1398. </li>
  1399. <li>
  1400. <p>After all footsteps are created, hit the &#8220;Create Keys&#8221; for Inactive Footsteps button in the &#8220;Footstep Operations&#8221; panel</p>
  1401. </li>
  1402. <li>
  1403. <p>You can now check your animation by pressing the &#8220;Play&#8221; button in the timeline.</p>
  1404. </li>
  1405. </ul>
  1406. </div>
  1407. </div>
  1408. <div class="sect2">
  1409. <h3 id="preparing-the-export-and-setting-up-ogremax"><a class="anchor" href="#preparing-the-export-and-setting-up-ogremax"></a>Preparing the export and setting up OgreMax</h3>
  1410. <div class="ulist">
  1411. <ul>
  1412. <li>
  1413. <p>The &#8220;OgreMax&#8221; Scene Settings should be the same as shown above.</p>
  1414. </li>
  1415. <li>
  1416. <p>Because you want your animation to be looped, you&#8217;ve got to find two key frames where the legs are nearly in the same position. For my settings I&#8217;ve chosen the frames 48-78 for the walk animation.</p>
  1417. </li>
  1418. <li>
  1419. <p>Select the character mesh and open the &#8220;OgreMax Scene Settings&#8221; dialog.</p>
  1420. </li>
  1421. <li>
  1422. <p>Open the &#8220;Mesh Animations&#8221; tab and select type &#8220;Skeleton&#8221;, &#8220;Export Skeleton&#8221; : &#8220;Yes&#8221;</p>
  1423. </li>
  1424. <li>
  1425. <p>Below &#8220;Mesh Animations&#8221; hit the &#8220;Add…&#8221; button</p>
  1426. </li>
  1427. </ul>
  1428. </div>
  1429. <div class="paragraph">
  1430. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax_biped_4.png" alt="3dsmax_biped_4.png" width="" height=""></span></p>
  1431. </div>
  1432. <div class="ulist">
  1433. <ul>
  1434. <li>
  1435. <p>Enter a name for the track, e.g. &#8220;walk&#8221;.</p>
  1436. </li>
  1437. <li>
  1438. <p>Assure the track type is set to &#8220;Physique&#8221;.</p>
  1439. </li>
  1440. <li>
  1441. <p>Set the start and end frames, for me it is 48-78.</p>
  1442. </li>
  1443. <li>
  1444. <p>Close the dialog by pushing &#8220;Ok&#8221;.</p>
  1445. </li>
  1446. <li>
  1447. <p><strong>Note:</strong> It could be useful to create also a track &#8220;start_run&#8221;, that blends between the stand and walk animation. I would use frame 0-47 for that.</p>
  1448. </li>
  1449. <li>
  1450. <p>Because you have a smooth model with a lot of polygons, it may be useful to create <a href="../../../../core/scene/mesh.html" class="xref page">levels of detail (LOD)</a>. When the camera is farther away, a low-poly mesh of your character will be rendered.</p>
  1451. </li>
  1452. </ul>
  1453. </div>
  1454. <div class="paragraph">
  1455. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax_biped_5.png" alt="3dsmax_biped_5.png" width="" height=""></span></p>
  1456. </div>
  1457. <div class="ulist">
  1458. <ul>
  1459. <li>
  1460. <p>Open the &#8220;Mesh LOD&#8221; tab in object settings.</p>
  1461. </li>
  1462. <li>
  1463. <p>It will suffice to select the &#8220;Automatic&#8221; setting, but if your animation starts to look weird, you can create them by hand.</p>
  1464. </li>
  1465. <li>
  1466. <p>I used 4 levels of LOD with a distance of 1. Don&#8217;t worry about the distance setting, you can change it later in JME.</p>
  1467. </li>
  1468. <li>
  1469. <p>For the level reduction, I used 20 percent, which produce good results. You may adjust all the settings depending on your needs.</p>
  1470. </li>
  1471. <li>
  1472. <p>Close the dialog by clicking &#8220;Ok&#8221;.</p>
  1473. </li>
  1474. </ul>
  1475. </div>
  1476. </div>
  1477. <div class="sect2">
  1478. <h3 id="fixing-the-location"><a class="anchor" href="#fixing-the-location"></a>Fixing the location</h3>
  1479. <div class="ulist">
  1480. <ul>
  1481. <li>
  1482. <p>Before you export you need to do a little fix, because your model is not really located where you see it. JME will get into a lot of trouble, if you don&#8217;t change that.</p>
  1483. </li>
  1484. <li>
  1485. <p>Assure to save the max file. Sometimes OgreMax crashes the whole application during export. If you want to change the animation after export, you should reload this file because fixing the location changes something I can&#8217;t really figure out.</p>
  1486. </li>
  1487. </ul>
  1488. </div>
  1489. <div class="paragraph">
  1490. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax_biped_6.png" alt="3dsmax_biped_6.png" width="" height=""></span></p>
  1491. </div>
  1492. <div class="ulist">
  1493. <ul>
  1494. <li>
  1495. <p>Right click the &#8220;Select&#8221; and Move tool in the upper toolbar. A dialog will pop up.</p>
  1496. </li>
  1497. <li>
  1498. <p>Set the X and Y location to 0 and close the dialog.</p>
  1499. </li>
  1500. <li>
  1501. <p>There is another way to achieve this. If you have scaled, moved or rotated your model, just open the &#8220;Hierarchy&#8221; tab and click &#8220;Transform&#8221; and &#8220;Scale&#8221; on the &#8220;Reset&#8221; panel.</p>
  1502. </li>
  1503. </ul>
  1504. </div>
  1505. </div>
  1506. <div class="sect2">
  1507. <h3 id="export-and-import-2"><a class="anchor" href="#export-and-import-2"></a>Export and Import</h3>
  1508. <div class="ulist">
  1509. <ul>
  1510. <li>
  1511. <p>Now you can export your scene. Select only the mesh and use &#8220;Export&#8221; selected objects. You will not need the whole scene including the biped object, but the bones are created automatically during export.</p>
  1512. </li>
  1513. <li>
  1514. <p>Create a JME test class for the scene import.</p>
  1515. </li>
  1516. </ul>
  1517. </div>
  1518. <div class="paragraph">
  1519. <p>For that, I extended the first class:</p>
  1520. </div>
  1521. <div class="listingblock">
  1522. <div class="content">
  1523. <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">import com.jme3.animation.AnimChannel;
  1524. import com.jme3.animation.AnimControl;
  1525. import com.jme3.animation.Skeleton;
  1526. import com.jme3.app.SimpleApplication;
  1527. import com.jme3.asset.plugins.FileLocator;
  1528. import com.jme3.light.AmbientLight;
  1529. import com.jme3.light.PointLight;
  1530. import com.jme3.material.Material;
  1531. import com.jme3.math.ColorRGBA;
  1532. import com.jme3.math.Vector3f;
  1533. import com.jme3.scene.Geometry;
  1534. import com.jme3.scene.Node;
  1535. import com.jme3.scene.Spatial;
  1536. import com.jme3.scene.control.LodControl;
  1537. import com.jme3.scene.debug.SkeletonDebugger;
  1538. import com.jme3.scene.shape.Box;
  1539. /**
  1540. * This is a test class for loading a Ogre XML scene exported by OgreMax.
  1541. *
  1542. * @author Stephan Dreyer
  1543. *
  1544. */
  1545. public class TestOgreMaxImport extends SimpleApplication {
  1546. @Override
  1547. public void simpleInitApp() {
  1548. assetManager.registerLocator("Assets/model/ogre/test/", FileLocator.class);
  1549. // create the geometry and attach it
  1550. final Node model = (Node) assetManager.loadModel("guy.scene");
  1551. // resize it, because of the large 3dsmax scales
  1552. model.setLocalScale(.02f);
  1553. // attach to root node
  1554. rootNode.attachChild(model);
  1555. addLodControl(model);
  1556. final AnimControl ac = findAnimControl(model);
  1557. try {
  1558. // add a skeleton debugger to make bones visible
  1559. final Skeleton skel = ac.getSkeleton();
  1560. final SkeletonDebugger skeletonDebug = new SkeletonDebugger("skeleton",
  1561. skel);
  1562. final Material mat = new Material(assetManager,
  1563. "Common/MatDefs/Misc/Unshaded.j3md");
  1564. mat.setColor("Color", ColorRGBA.Green);
  1565. mat.getAdditionalRenderState().setDepthTest(false);
  1566. skeletonDebug.setMaterial(mat);
  1567. ((Node) ac.getSpatial()).attachChild(skeletonDebug);
  1568. // create a channel and start the walk animation
  1569. final AnimChannel channel = ac.createChannel();
  1570. channel.setAnim("walk");
  1571. } catch (final Exception e) {
  1572. e.printStackTrace();
  1573. }
  1574. flyCam.setMoveSpeed(40f);
  1575. cam.setLocation(new Vector3f(15, 10, 15));
  1576. cam.lookAt(Vector3f.ZERO, Vector3f.UNIT_Y);
  1577. cam.setFrustumNear(1f);
  1578. // add some lights
  1579. rootNode.addLight(new AmbientLight());
  1580. final PointLight pl = new PointLight();
  1581. pl.setPosition(new Vector3f(-3f, 3f, 1f));
  1582. rootNode.addLight(pl);
  1583. // add a box as floor
  1584. final Box b = new Box(100f, 0.1f, 100f);
  1585. final Geometry geo = new Geometry("floor", b);
  1586. final Material mat = new Material(assetManager,
  1587. "Common/MatDefs/Misc/Unshaded.j3md");
  1588. mat.setColor("Color", ColorRGBA.LightGray);
  1589. geo.setMaterial(mat);
  1590. rootNode.attachChild(geo);
  1591. }
  1592. /**
  1593. * Method to traverse through the scene graph and add a {@link LodControl} to
  1594. * the mesh.
  1595. *
  1596. * @param parent
  1597. * The Node to add the control to.
  1598. */
  1599. public void addLodControl(final Spatial parent) {
  1600. if (parent instanceof Node) {
  1601. for (final Spatial s : ((Node) parent).getChildren()) {
  1602. addLodControl(s);
  1603. }
  1604. } else if (parent instanceof Geometry) {
  1605. final LodControl lc = new LodControl();
  1606. // the distance for LOD changes is set here, you may adjust this
  1607. lc.setDistTolerance(1f);
  1608. parent.addControl(lc);
  1609. }
  1610. }
  1611. /**
  1612. * Method to find the animation control, because it is not on the models root
  1613. * node.
  1614. *
  1615. * @param parent
  1616. * The spatial to search.
  1617. * @return The {@link AnimControl} or null if it does not exist.
  1618. */
  1619. public AnimControl findAnimControl(final Spatial parent) {
  1620. final AnimControl animControl = parent.getControl(AnimControl.class);
  1621. if (animControl != null) {
  1622. return animControl;
  1623. }
  1624. if (parent instanceof Node) {
  1625. for (final Spatial s : ((Node) parent).getChildren()) {
  1626. final AnimControl animControl2 = findAnimControl(s);
  1627. if (animControl2 != null) {
  1628. return animControl2;
  1629. }
  1630. }
  1631. }
  1632. return null;
  1633. }
  1634. public static void main(final String[] args) {
  1635. new TestOgreMaxImport().start();
  1636. }
  1637. }</code></pre>
  1638. </div>
  1639. </div>
  1640. <div class="paragraph">
  1641. <p>After starting the class, you can see a nice smooth walk animation (if it&#8217;s not smooth, you need to adjust your track frames):</p>
  1642. </div>
  1643. <div class="paragraph">
  1644. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax_biped_7.png" alt="3dsmax_biped_7.png" width="" height=""></span></p>
  1645. </div>
  1646. <div class="paragraph">
  1647. <p>As you can see, the LOD is working:</p>
  1648. </div>
  1649. <div class="paragraph">
  1650. <p><span class="image"><img src="../../../_images/how-to/modeling/3dsmax/3dsmax_biped_8.png" alt="3dsmax_biped_8.png" width="" height=""></span></p>
  1651. </div>
  1652. </div>
  1653. </div>
  1654. </div>
  1655. <nav class="pagination">
  1656. <span class="prev"><a href="../../../concepts/transparency_sorting.html">Transparency Sorting</a></span>
  1657. <span class="next"><a href="../blender/blender.html">Blender</a></span>
  1658. </nav>
  1659. </article>
  1660. <aside class="toc sidebar" data-title="Contents" data-levels="2">
  1661. <div class="toc-menu"></div>
  1662. </aside>
  1663. </div>
  1664. </main>
  1665. </div>
  1666. <footer class="footer">
  1667. <p>Copyright 2020 jMonkeyEngine Wiki Contributors. Licensed BSD-3.</p>
  1668. </footer>
  1669. <script src="../../../../../../_/js/vendor/docsearch.min.js"></script>
  1670. <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js -->
  1671. <script>
  1672. var search = docsearch({
  1673. apiKey: 'a736b6d93de805e26ec2f49b55013fbd',
  1674. indexName: 'jmonkeyengine',
  1675. inputSelector: '#search-input',
  1676. autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
  1677. algoliaOptions: { hitsPerPage: 10 }
  1678. }).autocomplete
  1679. search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
  1680. function focusSearchInput () { document.querySelector('#search-input').focus() }
  1681. if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput)
  1682. </script>
  1683. <script src="../../../../../../_/js/site.js"></script>
  1684. <script async src="../../../../../../_/js/vendor/highlight.js"></script>
  1685. </body>
  1686. </html>