j3m_material_files.html 25 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]--><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="Asciidoctor 1.5.4"><meta name="keywords" content="material, texture, file, sdk, wireframe, documentation"><title>Saving and Loading Materials with .j3m Files</title><link rel="stylesheet" href="./asciidoctor.css">
  2. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
  3. <link rel="stylesheet" href="./coderay-asciidoctor.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css"><link rel="stylesheet" href="/home/travis/build/jMonkeyEngine/wiki/build/asciidoc/html5/jme3/advanced/twemoji-awesome.css"></head><body class="article toc2 toc-left"><div id="header"><div id="toolbar"><a href="https://github.com/jMonkeyEngine/wiki/edit/master/src/docs/asciidoc/jme3/advanced/j3m_material_files.adoc"><i class="fa fa-pencil-square" aria-hidden="true"></i></a><a href="https://github.com/jMonkeyEngine/wiki/new/master/src/docs/asciidoc/jme3/advanced/"><i class="fa fa-plus-square" aria-hidden="true"></i></a><input dir="auto" style="position: relative; vertical-align: top;" spellcheck="false" autocomplete="off" class="searchbox__input aa-input" id="doc-search" name="search" placeholder="Search in the doc" required="required" type="search"></div><h1>Saving and Loading Materials with .j3m Files</h1><div class="details"><span class="author" id="author"></span><br><span id="revnumber">version ,</span> <span id="revdate">2016/03/17 20:48</span></div><div id="toc" class="toc2"><div id="toctitle">Table of Contents</div><ul class="sectlevel1"><li><a href="#writing-the-j3m-file">Writing the .j3m File</a></li><li><a href="#how-to-use-j3m-materials">How to Use .j3m Materials</a></li><li><a href="#syntax-reference-for-j3m-files">Syntax Reference for .j3m Files</a><ul class="sectlevel2"><li><a href="#paths">Paths</a></li><li><a href="#data-types">Data Types</a></li><li><a href="#flip-and-repeat-syntax">Flip and Repeat Syntax</a></li><li><a href="#syntax-for-additional-render-states">Syntax for Additional Render States</a></li></ul></li><li><a href="#examples">Examples</a><ul class="sectlevel2"><li><a href="#example-1-shiny">Example 1: Shiny</a></li><li><a href="#example-2-repeating-texture">Example 2: Repeating Texture</a></li><li><a href="#example-3-transparent">Example 3: Transparent</a></li></ul></li><li><a href="#related-links">Related Links</a></li></ul></div></div><div id="content"><div id="preamble"><div class="sectionbody"><div class="paragraph"><p>In the <a href="../../jme3/advanced/material_definitions.html">Material Definitions</a> article you learned how to configure <a href="../../jme3/advanced/materials_overview.html">Materials</a> programmatically in Java code. If you have certain commonly used Materials that never change, you can clean up the amount of Java code that clutters your init method, by moving material settings into .j3m files. Then later in your code, you only need to call one setter instead of several to apply the material.</p></div>
  4. <div class="paragraph"><p>If you want to colorize simple shapes (one texture all around), then .j3m are the most easily customizable solution. J3m files can contain texture mapped materials, but as usual you have to create the textures in an external editor, especially if you use UV-mapped textures.</p></div></div></div>
  5. <div class="sect1"><h2 id="writing-the-j3m-file">Writing the .j3m File</h2><div class="sectionbody"><div class="olist arabic"><ol class="arabic"><li><p>For every Material, create a file and give it a name that describes it: e.g. <code>SimpleBump.j3m</code></p></li><li><p>Place the file in your project&#8217;s <code>assets/Materials/</code> directory, e.g. <code>MyGame/src/assets/Materials/SimpleBump.j3m</code></p></li><li><p>Edit the file and add content using the following Syntax, e.g.:</p></li></ol></div>
  6. <div class="listingblock"><div class="content"><pre>Material shiny bumpy rock : Common/MatDefs/Light/Lighting.j3md {
  7. MaterialParameters {
  8. Shininess: 8.0
  9. NormalMap: Textures/bump_rock_normal.png
  10. UseMaterialColors : true
  11. Ambient : 0.0 0.0 0.0 1.0
  12. Diffuse : 1.0 1.0 1.0 1.0
  13. Specular : 0.0 0.0 0.0 1.0
  14. }
  15. }</pre></div></div>
  16. <div class="paragraph"><p>How this file is structured:</p></div>
  17. <div class="olist arabic"><ol class="arabic"><li><p>Header</p><div class="olist loweralpha"><ol class="loweralpha" type="a"><li><p><code>Material</code> is a fixed keyword, keep it.</p></li><li><p><code>shiny bumpy rock</code> is a descriptive string that you can make up. Choose a name to help you remember for what you intend to use this material.</p></li><li><p>After the colon, specify on which <a href="../../jme3/advanced/materials_overview.html">Material</a> definition you base this Material.</p></li></ol></div></li><li><p>Now look up the choosen Material Definition&#8217;s parameters and their parameter types from the <a href="../../jme3/advanced/materials_overview.html">Material</a> table. Add one line for each parameter.</p><div class="ulist"><ul><li><p>For example: The series of four numbers in the example above represent RGBA color values.</p></li></ul></div></li><li><p>Check the detailed syntax reference below if you are unsure.</p></li></ol></div>
  18. <div class="admonitionblock tip"><table><tr><td class="icon"><i class="fa icon-tip" title="Tip"></i></td><td class="content"><div class="paragraph"><p>In the jMonkeyEngine SDK, use <span class="menuseq"><span class="menu">File</span>&#160;&#9656; <span class="submenu">New File</span>&#160;&#9656; <span class="submenu">Material</span>&#160;&#9656; <span class="menuitem">Empty Material File</span></span> to create .j3m files. You can edit .j3m files directly in the SDK. On the other hand, they are plain text files, so you can also create them in any plain text editor.</p></div></td></tr></table></div></div></div>
  19. <div class="sect1"><h2 id="how-to-use-j3m-materials">How to Use .j3m Materials</h2><div class="sectionbody"><div class="paragraph"><p>This is how you use the prepared .j3m Material on a Spatial. Since you have saved the .j3m file to your project&#8217;s Assets directory, the .j3m path is relative to <code>MyGame/src/assets/…</code>.</p></div>
  20. <div class="listingblock"><div class="content"><pre class="CodeRay highlight"><code data-lang="java">myGeometry.setMaterial(assetManager.loadMaterial(<span class="string"><span class="delimiter">&quot;</span><span class="content">Materials/SimpleBump.j3m</span><span class="delimiter">&quot;</span></span>));</code></pre></div></div>
  21. <div class="admonitionblock tip"><table><tr><td class="icon"><i class="fa icon-tip" title="Tip"></i></td><td class="content"><div class="paragraph"><p>In the jMonkeyEngine SDK, open <span class="menuseq"><span class="menu">Windows</span>&#160;&#9656; <span class="menuitem">Palette</span></span> and drag the <code>JME Material: Set J3M</code> snippet into your code.</p></div></td></tr></table></div></div></div>
  22. <div class="sect2"><h3 id="syntax-reference-for-j3m-files">Syntax Reference for .j3m Files</h3><div class="sect2"><h3 id="paths">Paths</h3><div class="paragraph"><p>Make sure to get the paths to the textures (.png, .jpg) and material definitions (.j3md) right.</p></div>
  23. <div class="ulist"><ul><li><p>The paths to the built-in .j3md files are relative to jME3&#8217;s Core Data directory. Just copy the path stated in the <a href="../../jme3/advanced/materials_overview.html">Material</a> table.<br>
  24. <code>Common/MatDefs/Misc/Unshaded.j3md</code> is resolved to <code>jme3/src/src/core-data/Common/MatDefs/Misc/Unshaded.j3md</code>.</p></li><li><p>The paths to your textures are relative to your project&#8217;s assets directory.<br>
  25. <code>Textures/bump_rock_normal.png</code> is resolved to <code>MyGame/src/assets/Textures/bump_rock_normal.png</code></p></li></ul></div></div>
  26. <div class="sect2"><h3 id="data-types">Data Types</h3><div class="paragraph"><p>All data types (except Color) are specified in com.jme3.shader.VarType.
  27. &#8220;Color&#8221; is specified as Vector4 in J3MLoader.java.</p></div>
  28. <table class="tableblock frame-all grid-all spread"><colgroup><col style="width: 33.3333%;"><col style="width: 33.3333%;"><col style="width: 33.3334%;"></colgroup><thead><tr><th class="tableblock halign-left valign-top">Name</th><th class="tableblock halign-left valign-top">jME Java class</th><th class="tableblock halign-left valign-top">.j3m file syntax</th></tr></thead><tbody><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Float</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(basic Java type)</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>a float (e.g. 0.72) , no comma or parentheses</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Vector2</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><code>com.jme3.math.Vector2f</code></p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Two floats, no comma or parentheses</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Vector3</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><code>com.jme3.math.Vector3f</code></p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Three floats, no comma or parentheses</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Vector4</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><code>com.jme3.math.Vector4f</code></p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Four floats, no comma or parentheses</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Texture2D</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><code>com.jme3.texture.Texture2D</code></p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Path to texture in <code>assets</code> directory, no quotation marks</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Texture3D</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><code>com.jme3.texture.Texture3D</code></p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Same as texture 2D except it is interpreted as a 3D texture</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>TextureCubeMap</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><code>com.jme3.texture.TextureCubeMap</code></p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Same as texture 2D except it is interpreted as a cubemap texture</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Boolean</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(basic Java type)</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><code>true</code> or <code>false</code></p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Int</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(basic Java type)</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Integer number, no comma or parentheses</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Color</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><code>com.jme3.math.ColorRGBA</code></p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Four floats, no comma or parentheses</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>FloatArray</p></div></div></td><td class="tableblock halign-left valign-top"><div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Currently not supported in J3M)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Vector2Array</p></div></div></td><td class="tableblock halign-left valign-top"><div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Currently not supported in J3M)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Vector3Array</p></div></div></td><td class="tableblock halign-left valign-top"><div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Currently not supported in J3M)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Vector4Array</p></div></div></td><td class="tableblock halign-left valign-top"><div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Currently not supported in J3M)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Matrix3</p></div></div></td><td class="tableblock halign-left valign-top"><div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Currently not supported in J3M)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Matrix4</p></div></div></td><td class="tableblock halign-left valign-top"><div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Currently not supported in J3M)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Matrix3Array</p></div></div></td><td class="tableblock halign-left valign-top"><div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Currently not supported in J3M)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Matrix4Array</p></div></div></td><td class="tableblock halign-left valign-top"><div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Currently not supported in J3M)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>TextureBuffer</p></div></div></td><td class="tableblock halign-left valign-top"><div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Currently not supported in J3M)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>TextureArray</p></div></div></td><td class="tableblock halign-left valign-top"><div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Currently not supported in J3M)</p></div></div></td></tr></tbody></table></div>
  29. <div class="sect2"><h3 id="flip-and-repeat-syntax">Flip and Repeat Syntax</h3><div class="ulist"><ul><li><p>A texture can be flipped using the following syntax <code>NormalMap: Flip Textures/bump_rock_normal.png</code></p></li><li><p>A texture can be set to repeat using the following syntax <code>NormalMap: Repeat Textures/bump_rock_normal.png</code></p></li><li><p>If a texture is set to both being flipped and repeated, Flip must come before Repeat</p></li></ul></div></div>
  30. <div class="sect2"><h3 id="syntax-for-additional-render-states">Syntax for Additional Render States</h3><div class="ulist"><ul><li><p>A Boolean can be &#8220;On&#8221; or &#8220;Off&#8221;</p></li><li><p>Float is &#8220;123.0&#8221; etc</p></li><li><p>Enum - values depend on the enum</p></li></ul></div>
  31. <div class="paragraph"><p>See the <a href="https://javadoc.jmonkeyengine.org/v3.3.0-beta1/com/jme3/material/RenderState.html">RenderState</a> javadoc for a detailed explanation of render states.</p></div>
  32. <table class="tableblock frame-all grid-all spread"><colgroup><col style="width: 33.3333%;"><col style="width: 33.3333%;"><col style="width: 33.3334%;"></colgroup><thead><tr><th class="tableblock halign-left valign-top">Name</th><th class="tableblock halign-left valign-top">Type</th><th class="tableblock halign-left valign-top">Purpose</th></tr></thead><tbody><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><a href="https://javadoc.jmonkeyengine.org/v3.3.0-beta1/com/jme3/material/RenderState.html#setWireframe-boolean-">Wireframe</a></p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Boolean)</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Enable wireframe rendering mode</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><a href="https://javadoc.jmonkeyengine.org/v3.3.0-beta1/com/jme3/material/RenderState.html#setFaceCullMode-com.jme3.material.RenderState.FaceCullMode-">FaceCull</a></p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Enum: FaceCullMode)</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Set face culling mode (Off, Front, Back, FrontAndBack)</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><a href="https://javadoc.jmonkeyengine.org/v3.3.0-beta1/com/jme3/material/RenderState.html#setDepthWrite-boolean-">DepthWrite</a></p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Boolean)</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Enable writing depth to the depth buffer</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><a href="https://javadoc.jmonkeyengine.org/v3.3.0-beta1/com/jme3/material/RenderState.html#setDepthTest-boolean-">DepthTest</a></p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Boolean)</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Enable depth testing</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><a href="https://javadoc.jmonkeyengine.org/v3.3.0-beta1/com/jme3/material/RenderState.html#setBlendMode-com.jme3.material.RenderState.BlendMode-">Blend</a></p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Enum: BlendMode)</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Set the blending mode</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><a href="https://javadoc.jmonkeyengine.org/v3.3.0-beta1/com/jme3/material/Material.html#setFloat-java.lang.String-float-">AlphaDiscardThreshold</a></p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Float)</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Set the alpha testing alpha falloff value (if set, it will enable alpha testing)<br>
  33. mat.setFloat("AlphaDiscardThreshold", 2f);</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><a href="https://javadoc.jmonkeyengine.org/v3.3.0-beta1/com/jme3/material/RenderState.html#setPolyOffset-float-float-">PolyOffset</a></p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Float, Float)</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Set the polygon offset factor and units</p></div></div></td></tr><tr><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p><a href="https://javadoc.jmonkeyengine.org/v3.3.0-beta1/com/jme3/material/RenderState.html#setColorWrite-boolean-">ColorWrite</a></p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>(Boolean)</p></div></div></td><td class="tableblock halign-left valign-top"><div><div class="paragraph"><p>Enable color writing</p></div></div></td></tr></tbody></table></div></div>
  34. <div class="sect2"><h3 id="examples">Examples</h3><div class="sect2"><h3 id="example-1-shiny">Example 1: Shiny</h3><div class="listingblock"><div class="content"><pre class="CodeRay highlight"><code data-lang="java">Spatial signpost = (Spatial) assetManager.loadAsset(
  35. <span class="keyword">new</span> OgreMeshKey(<span class="string"><span class="delimiter">&quot;</span><span class="content">Models/Sign Post/Sign Post.mesh.xml</span><span class="delimiter">&quot;</span></span>, <span class="predefined-constant">null</span>));
  36. signpost.setMaterial( assetManager.loadMaterial(
  37. <span class="keyword">new</span> AssetKey(<span class="string"><span class="delimiter">&quot;</span><span class="content">Models/Sign Post/Sign Post.j3m</span><span class="delimiter">&quot;</span></span>)));
  38. TangentBinormalGenerator.generate(signpost);
  39. rootNode.attachChild(signpost);</code></pre></div></div>
  40. <div class="paragraph"><p>The file <code>assets/Models/Sign Post/Sign Post.j3m</code> contains:</p></div>
  41. <div class="listingblock"><div class="content"><pre class="CodeRay highlight"><code>Material Signpost : Common/MatDefs/Light/Lighting.j3md {
  42. MaterialParameters {
  43. Shininess: 4.0
  44. DiffuseMap: Models/Sign Post/Sign Post.jpg
  45. NormalMap: Models/Sign Post/Sign Post_normal.jpg
  46. SpecularMap: Models/Sign Post/Sign Post_specular.jpg
  47. UseMaterialColors : true
  48. Ambient : 0.5 0.5 0.5 1.0
  49. Diffuse : 1.0 1.0 1.0 1.0
  50. Specular : 1.0 1.0 1.0 1.0
  51. }
  52. }</code></pre></div></div>
  53. <div class="paragraph"><p>The JPG files are in the same directory, <code>assets/Models/Sign Post/…</code>.</p></div></div>
  54. <div class="sect2"><h3 id="example-2-repeating-texture">Example 2: Repeating Texture</h3><div class="listingblock"><div class="content"><pre class="CodeRay highlight"><code data-lang="java">Material mat = assetManager.loadMaterial(
  55. <span class="string"><span class="delimiter">&quot;</span><span class="content">Textures/Terrain/Pond/Pond.j3m</span><span class="delimiter">&quot;</span></span>);
  56. mat.setColor(<span class="string"><span class="delimiter">&quot;</span><span class="content">Ambient</span><span class="delimiter">&quot;</span></span>, ColorRGBA.DarkGray);
  57. mat.setColor(<span class="string"><span class="delimiter">&quot;</span><span class="content">Diffuse</span><span class="delimiter">&quot;</span></span>, ColorRGBA.White);
  58. mat.setBoolean(<span class="string"><span class="delimiter">&quot;</span><span class="content">UseMaterialColors</span><span class="delimiter">&quot;</span></span>, <span class="predefined-constant">true</span>);</code></pre></div></div>
  59. <div class="paragraph"><p>The file <code>assets/Textures/Terrain/Pond/Pond.j3m</code> contains:</p></div>
  60. <div class="listingblock"><div class="content"><pre class="CodeRay highlight"><code>Material Pong Rock : Common/MatDefs/Light/Lighting.j3md {
  61. MaterialParameters {
  62. Shininess: 8.0
  63. DiffuseMap: Repeat Textures/Terrain/Pond/Pond.png
  64. NormalMap: Repeat Textures/Terrain/Pond/Pond_normal.png
  65. }
  66. }</code></pre></div></div>
  67. <div class="paragraph"><p>The PNG files are in the same directory, <code>assets/Textures/Terrain/Pond/</code></p></div></div>
  68. <div class="sect2"><h3 id="example-3-transparent">Example 3: Transparent</h3><div class="paragraph"><p>The file <code>assets/Models/Tree/Leaves.j3m</code> contains:</p></div>
  69. <div class="listingblock"><div class="content"><pre class="CodeRay highlight"><code>Material Leaves : Common/MatDefs/Light/Lighting.j3md {
  70. Transparent On
  71. MaterialParameters {
  72. DiffuseMap : Models/Tree/Leaves.png
  73. UseAlpha : true
  74. AlphaDiscardThreshold : 0.5
  75. UseMaterialColors : true
  76. Ambient : .5 .5 .5 .5
  77. Diffuse : 0.7 0.7 0.7 1
  78. Specular : 0 0 0 1
  79. Shininess : 16
  80. }
  81. AdditionalRenderState {
  82. Blend Alpha
  83. AlphaTestFalloff 0.50
  84. FaceCull Off
  85. }
  86. }</code></pre></div></div>
  87. <div class="paragraph"><p>The PNG file is in the same directory, <code>assets/Models/Tree/…</code></p></div></div></div>
  88. <div class="sect1"><h2 id="related-links">Related Links</h2><div class="sectionbody"><div class="ulist"><ul><li><p><a href="../../jme3/advanced/material_specification.html">Developer specification of the jME3 material system (.j3md,.j3m)</a></p></li></ul></div></div></div></div><div id="footer"><div id="footer-text">Version <br>Last updated 2019-12-20 23:30:51 +00:00</div></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script><script>docsearch({
  89. apiKey: 'a736b6d93de805e26ec2f49b55013fbd',
  90. indexName: 'jmonkeyengine',
  91. inputSelector: '#doc-search',
  92. debug: false // Set debug to true if you want to inspect the dropdown
  93. });</script></body></html>