1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- <!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"><title>fx</title><link rel="stylesheet" href="./asciidoctor.css">
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
- <link rel="stylesheet" href="./coderay-asciidoctor.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.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/atom_framework/fx.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/atom_framework/"><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>fx</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="#fx">FX</a><ul class="sectlevel2"><li><a href="#what-s-about-the-f-x">What’s about the f(x) ?</a></li><li><a href="#interface-abstract">Interface & Abstract</a></li><li><a href="#input">Input</a></li><li><a href="#time-factor-real-time-application">Time factor & Real time application</a></li><li><a href="#operations">Operations</a></li></ul></li><li><a href="#effects">Effects</a><ul class="sectlevel2"><li><a href="#text-effects">Text Effects</a></li><li><a href="#particle-effects">Particle Effects</a></li><li><a href="#cinematic-effects">Cinematic Effects</a></li><li><a href="#color-texture-effects">Color & Texture Effects</a></li><li><a href="#mesh-spatials-effects">Mesh & Spatials Effects</a></li><li><a href="#animation-effects">Animation Effects</a></li><li><a href="#scripted-effects">Scripted Effects</a></li></ul></li></ul></div></div><div id="content"><div class="sect2"><h3 id="fx">FX</h3><div class="paragraph"><p>Stand for Effects.</p></div>
- <div class="paragraph"><p>Also stand for dynamic value functions f(x).</p></div>
- <div class="paragraph"><p>Inspired by</p></div>
- <div class="paragraph"><p><a href="http://nodebox.net/node/">http://nodebox.net/node/</a></p></div>
- <div class="paragraph"><p><a href="http://udk.com">http://udk.com</a></p></div>
- <div class="sect2"><h3 id="what-s-about-the-f-x">What’s about the f(x) ?</h3><div class="paragraph"><p>For various effects the game may require. Need customable, extensible way to declare input-process-ouput:</p></div>
- <div class="olist arabic"><ol class="arabic"><li><p>dynamic generic Data, which can be procedure by various sources, signals, services</p></li><li><p>dynamic generic declaration of operations</p></li><li><p>dynamic generic declaration of output order</p></li></ol></div>
- <div class="paragraph"><p>Last but not least, it should be resuable, generative and composable.</p></div>
- <div class="sect3"><h4 id="in-java">In Java?</h4><div class="paragraph"><p>About the implementation, such as language should be under considered!</p></div>
- <div class="paragraph"><p>These all requirements fit to an DSL, functional and lazy like groovy scenario, but what about java - a traditional grown as imperative language? It’s like we going to implement all its core language elements for god-sake… Umh, not like that. With the help of Guava, we do it properly acceptable and scalable! But read it carefully first or mislead later!!!</p></div>
- <div class="paragraph"><p><a href="http://code.google.com/p/guava-libraries/wiki/FunctionalExplained">http://code.google.com/p/guava-libraries/wiki/FunctionalExplained</a></p></div>
- <div class="admonitionblock important"><table><tr><td class="icon"><i class="fa icon-important" title="Important"></i></td><td class="content"><div class="paragraph"><p>This framework’s feature goes in two branches: in Java 1.5+ with Guava and in Groovy2+ , the difference will be distinguish later!</p></div></td></tr></table></div></div>
- <div class="sect3"><h4 id="focus-in-effects">Focus in effects</h4><div class="admonitionblock important"><table><tr><td class="icon"><i class="fa icon-important" title="Important"></i></td><td class="content"><div class="paragraph"><p>The abstract concept and even implementation of the Fx framework make it look similar or even exactly like Codegen - the Atom’s code generation framework. Because they both lend them selfs from same underlying concepts. But remember Fx is for effects and not focus in the code side. It was born to help people like artist to survive their career without reading more programmin books!!</p></div></td></tr></table></div>
- <div class="paragraph"><p>Of course we not going to do a whole language enhancement here but use a functional ultilities to get start up quick and go straight to the “real-time effects part later. But remember the base concepts of it, which really to be extend and custom for your own needs.</p></div>
- <div class="paragraph"><p>Now Let’s see how does it work?</p></div></div></div>
- <div class="sect2"><h3 id="interface-abstract">Interface & Abstract</h3><div class="paragraph"><p>We need dynamic Data, which can be procedure through various sources, signals, services… let call the abstract which provide the data IValueProvider:</p></div>
- <div class="paragraph"><p>interface IValueProvider <x,y>{
- y value(x) return new y
- }</p></div>
- <div class="paragraph"><p>Function <x,y> is the default implementation</p></div>
- <div class="paragraph"><p>Function <x,y>{
- }</p></div></div>
- <div class="sect2"><h3 id="input">Input</h3><div class="paragraph"><p>So what can be the input?</p></div>
- <div class="paragraph"><p>Single<Value> or any primitive</p></div>
- <div class="paragraph"><p>List<Value> . String</p></div>
- <div class="paragraph"><p>more</p></div></div>
- <div class="sect2"><h3 id="time-factor-real-time-application">Time factor & Real time application</h3><div class="paragraph"><p>An important factor of a real time system is … time, indeed. Imagine a physic world functioning with f(t) is the primitive law. Our effects system also. Almost every effects envolve time and almost modify or procedure several positions values. It’s a very common case in this scenario.</p></div>
- <div class="paragraph"><p>In fact almost of the F(x) features are actually f(t) which t is the time provided by the system via update cycle.</p></div>
- <div class="paragraph"><p>Now consider this very simple physic xample :</p></div>
- <div class="paragraph"><p>S = V.t</p></div>
- <div class="paragraph"><p>pos = startPos + S</p></div>
- <div class="paragraph"><p>→ pos = startPos + V.t</p></div>
- <div class="paragraph"><p>We have:</p></div>
- <div class="olist arabic"><ol class="arabic"><li><p>startPos is a Vector3f (can be localTranslation of a jme3’s Spatial!).</p></li><li><p>a parameter vector V, basicly stand for the Speed</p></li><li><p>t is time provided by system</p></li><li><p>plus and multiply is numberical operations</p></li></ol></div>
- <div class="paragraph"><p>→ We can compute the new pos which we can use as a slide of a ball!</p></div>
- <div class="paragraph"><p>In this simplest example, we should reads a mathematic equations as a “procedural process in our fx system with time as an essential key. Which later will help us build up extraordary complex effect!</p></div>
- <div class="sect3"><h4 id="animations-concepts">Animations concepts</h4><div class="paragraph"><p>Here we will revised some animation concept. Kinematic and functionals.</p></div>
- <div class="sect4"><h5 id="timeline">Timeline</h5></div>
- <div class="sect4"><h5 id="keyframe">Keyframe</h5></div>
- <div class="sect4"><h5 id="sequence">Sequence</h5></div>
- <div class="sect4"><h5 id="track">Track</h5></div></div></div>
- <div class="sect2"><h3 id="operations">Operations</h3><div class="sect3"><h4 id="single-operation">Single operation</h4><div class="sect4"><h5 id="math">Math</h5></div>
- <div class="sect4"><h5 id="add-remove">Add remove</h5></div></div>
- <div class="sect3"><h4 id="list-operation">List operation</h4><div class="sect4"><h5 id="add-remove-2">Add remove</h5></div>
- <div class="sect4"><h5 id="transfrom">Transfrom</h5></div>
- <div class="sect4"><h5 id="indexing">Indexing</h5></div></div>
- <div class="sect3"><h4 id="3d-geometric-operation">3D Geometric operation</h4><div class="sect4"><h5 id="curve-interpolator">Curve . Interpolator</h5><div class="paragraph"><p>IValueProvider</p></div></div>
- <div class="sect4"><h5 id="layout">Layout</h5></div>
- <div class="sect4"><h5 id="shape-and-formation">Shape and formation</h5></div>
- <div class="sect4"><h5 id="steering">Steering</h5></div></div></div></div>
- <div class="sect2"><h3 id="effects">Effects</h3><div class="admonitionblock note"><table><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content"><div class="paragraph"><p>Ideas from Adobe After effect ,3DSMax, Cinema4D, Processing, Blender…!</p></div></td></tr></table></div>
- <div class="sect2"><h3 id="text-effects">Text Effects</h3><div class="paragraph"><p>One of the most under rated part in almost every 3d game engine I come across is the <strong>Text effect</strong>. We <strong>DO</strong> need Text effect but it didn’t have any native support. I’ve started by doing a lot of After effect’s text effects and plugin, then trying in 3DSMax, Cinema4D, later in Processing… but I can not find one that make me feel easy to use and powerful. From some ideas borrow from those applications, I try to implement some in this framework.</p></div></div>
- <div class="sect2"><h3 id="particle-effects">Particle Effects</h3></div>
- <div class="sect2"><h3 id="cinematic-effects">Cinematic Effects</h3></div>
- <div class="sect2"><h3 id="color-texture-effects">Color & Texture Effects</h3></div>
- <div class="sect2"><h3 id="mesh-spatials-effects">Mesh & Spatials Effects</h3></div>
- <div class="sect2"><h3 id="animation-effects">Animation Effects</h3></div>
- <div class="sect2"><h3 id="scripted-effects">Scripted Effects</h3></div></div></div><div id="footer"><div id="footer-text">Version <br>Last updated 2016-07-22 07:15:15 UTC</div></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script><script>docsearch({
- apiKey: 'a736b6d93de805e26ec2f49b55013fbd',
- indexName: 'jmonkeyengine',
- inputSelector: '#doc-search',
- debug: false // Set debug to true if you want to inspect the dropdown
- });</script></body></html>
|