Added a note documenting my current understanding about how the parts of models I want
to be able to modify are loaded.
This commit is contained in:
parent
66a7649a54
commit
73cf796b19
154
doc/Understanding-jme3-character-models.md
Normal file
154
doc/Understanding-jme3-character-models.md
Normal file
|
@ -0,0 +1,154 @@
|
|||
# Understanding how jME3 handles character models
|
||||
|
||||
(This note is largely based on analysis of Stephen Gold's [Maud](https://github.com/stephengold/Maud)).
|
||||
|
||||
## Dem Bones
|
||||
|
||||
One potential way to vary character models is to adjust the length of their bones. In order to be able to do this, I need to get hold of them. This note documents how to get hold of them in the [jMonkeyEngine](https://jmonkeyengine.org/) 3 API (referenced as 'jME3').
|
||||
|
||||
Model files (including, but not limited to, `.j3o` files) are [loaded by the AssetManager](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/asset/AssetManager.html#loadModel(com.jme3.asset.ModelKey)) as instances of [Spatial](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/scene/Spatial.html). A spatial can be any sort of scene node -- a building, a tree, a rock, a container. It is not inherently a character and does not inherently have a skeleton or a rig; furthermore, the abstract class Spatial has no methods to extract a skeleton or a rig -- or even, actually, a geometry, material or texture.
|
||||
|
||||
Maud loads models as instances of `maud.model.cgm.LoadedCgm`, which wraps the Spatial.
|
||||
|
||||
[Instance variable declaration](https://github.com/stephengold/Maud/blob/master/src/main/java/maud/model/cgm/Cgm.java#L205):
|
||||
```java
|
||||
/**
|
||||
* root spatial in the MVC model's copy of the C-G model
|
||||
*/
|
||||
protected Spatial rootSpatial = null;
|
||||
```
|
||||
|
||||
[Instantiation](https://github.com/stephengold/Maud/blob/master/src/main/java/maud/model/cgm/LoadedCgm.java#L292):
|
||||
```java
|
||||
this.rootSpatial = Heart.deepCopy(cgmRoot);
|
||||
```
|
||||
|
||||
`LoadedCgm` is a subclass of [`Cgm`](https://github.com/stephengold/Maud/blob/master/src/main/java/maud/model/cgm/Cgm.java), where 'CGM' is stated in the documentation to be an acronym for 'Computer Graphics Model'.
|
||||
|
||||
The Cgm class has an instance variable `selectedSkeleton` which is instantiated at the time the Cgm instance is constructed to a new, empty, instance of [SelectedSkeleton](https://github.com/stephengold/Maud/blob/master/src/main/java/maud/model/cgm/SelectedSkeleton.java). So how does the SelectedSkeleton instance (which is instantiated before the `rootSpatial` is set) get to know about the skeleton from the Spatial, which has, inherently, no skeleton? The answer is that is calls the [`countBones()`](https://github.com/stephengold/Maud/blob/master/src/main/java/maud/model/cgm/SelectedSkeleton.java#L148) method of the selectedSkeleton:
|
||||
|
||||
```java
|
||||
public int countBones() {
|
||||
int result = 0;
|
||||
Object selected = find();
|
||||
if (selected instanceof Armature) {
|
||||
result = ((Armature) selected).getJointCount();
|
||||
} else if (selected instanceof Skeleton) {
|
||||
result = ((Skeleton) selected).getBoneCount();
|
||||
}
|
||||
|
||||
assert result >= 0 : result;
|
||||
return result;
|
||||
}
|
||||
```
|
||||
|
||||
Part of the complexity here is backwards compatibility. The class [`Armature`](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/anim/Armature.html) is a newer replacement for the older (and now deprecated) class [`Skeleton`](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/animation/Skeleton.html); this appears to be part of a major re-engineering of how jME3 handles animation.
|
||||
|
||||
and `countBones()` calls [`find()`](https://github.com/stephengold/Maud/blob/master/src/main/java/maud/model/cgm/SelectedSkeleton.java#L253):
|
||||
|
||||
```java
|
||||
/**
|
||||
* Find the selected Armature or Skeleton.
|
||||
*
|
||||
* @return the pre-existing instance, or null if none
|
||||
*/
|
||||
Object find() {
|
||||
Object result = find(null);
|
||||
return result;
|
||||
}
|
||||
```
|
||||
|
||||
which in turn calls [`find(binary[])`](https://github.com/stephengold/Maud/blob/master/src/main/java/maud/model/cgm/SelectedSkeleton.java#L181):
|
||||
|
||||
```java
|
||||
/**
|
||||
* Find the selected Armature or Skeleton.
|
||||
*
|
||||
* @param storeSelectedSgcFlag if not null, set the first element to true if
|
||||
* the skeleton came from the selected S-G control or its controlled
|
||||
* spatial, false if it came from the C-G model root
|
||||
* @return a pre-existing Armature or Skeleton, or null if none selected
|
||||
*/
|
||||
Object find(boolean[] storeSelectedSgcFlag) {
|
||||
boolean selectedSgcFlag;
|
||||
Object skeleton = null;
|
||||
/*
|
||||
* If the selected S-G control is an AnimControl, SkeletonControl,
|
||||
* or SkinningControl, use its skeleton, if it has one.
|
||||
*/
|
||||
Control selectedSgc = cgm.getSgc().get();
|
||||
if (selectedSgc instanceof AnimControl) {
|
||||
skeleton = ((AnimControl) selectedSgc).getSkeleton();
|
||||
}
|
||||
if (skeleton == null && selectedSgc instanceof SkeletonControl) {
|
||||
skeleton = ((SkeletonControl) selectedSgc).getSkeleton();
|
||||
}
|
||||
if (skeleton == null && selectedSgc instanceof SkinningControl) {
|
||||
skeleton = ((SkinningControl) selectedSgc).getArmature();
|
||||
}
|
||||
...
|
||||
```
|
||||
|
||||
And so on.
|
||||
|
||||
I'm going to confess here that coming back to object oriented programming after a decade of concentrating on functional programming, it's frustrating how complicated, messy and repetitious it is. But in this instance I can't help feeling that it would have been less messy if the abstract class `CGM` had a method `getSkeleton()` which by default returned null; and which was overridden in subclasses of `CGM` which represented things which did have skeletons to return their skeletons.
|
||||
|
||||
But this only kicks the 'how to get the skeleton' one step further down the road, to [`Control`](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/scene/control/Control.html). `Control` also wraps a `Spatial`, which also isn't instantiated at construction time, and also doesn't have a `getSkeleton()` method.
|
||||
|
||||
To be fair I don't know what proportion of subclasses of `Control` have skeletons, but on the evidence here at least four do; and an overridable instance method on [`AbstractControl`](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/scene/control/AbstractControl.html) returning `null`, declared on the [`Control`](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/scene/control/Control.html) interface, would have little cost and save a lot of mess.
|
||||
|
||||
As there are now a lot of branches to cover, I'm going to concentrate on the `SkinningControl` one, which *seems* to be the current state of the art. I haven't at this stage investigated how `AssetManager.loadModel(String)` determines which classes to instantiate when loading a model, but I'm going to assume that I can coerce my models to be loaded in a non-deprecated form.
|
||||
|
||||
A [`SkinningControl`](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/anim/SkinningControl.html) has a private instance variable `armature`:
|
||||
|
||||
```java
|
||||
/**
|
||||
* The armature of the model.
|
||||
*/
|
||||
private Armature armature;
|
||||
```
|
||||
|
||||
which is instantiated in the constructor:
|
||||
|
||||
```java
|
||||
/**
|
||||
* Creates an armature control. The list of targets will be acquired
|
||||
* automatically when the control is attached to a node.
|
||||
*
|
||||
* @param armature the armature
|
||||
*/
|
||||
public SkinningControl(Armature armature) {
|
||||
if (armature == null) {
|
||||
throw new IllegalArgumentException("armature cannot be null");
|
||||
}
|
||||
this.armature = armature;
|
||||
this.numberOfJointsParam = new MatParamOverride(VarType.Int, "NumberOfBones", null);
|
||||
this.jointMatricesParam = new MatParamOverride(VarType.Matrix4Array, "BoneMatrices", null);
|
||||
}
|
||||
```
|
||||
|
||||
the `Armature` class has an instance method [`getJointCount()`](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/anim/Armature.html#getJointCount()); it also has instance methods [`getJointList()`](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/anim/Armature.html#getJointList()), [`getJoint(int)`](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/anim/Armature.html#getJoint(int)), and [`getJoint(String)`](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/anim/Armature.html#getJoint(java.lang.String)).
|
||||
|
||||
**Note that** `Joint` *seems* to be a name used in the rewrite of the animation system to avoid confusion with the `Bone` in the earlier animation system, and *I think* represents what normal animation rig nomenclature would refer to as a bone.
|
||||
|
||||
However, the `Joint` class has no `length` instance variable. What it has is a `targetGeometry` instance variable which is declared as a [`Geometry`](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/scene/Geometry.html). Geometry, in turn, has no dimensions, but has an instance variable `mesh` declared as a [`Mesh`](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/scene/Mesh.html). I suspect that it is the Mesh object -- which contains lines, triangles and vertices -- which provides the actual dimensioned objects.
|
||||
|
||||
I don't think, however, that I either need to or should change anything in the Geometry objects themselves. Instead, the Joint object also has three instance variables bound to instances of [`Transform`](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/math/Transform.html):
|
||||
|
||||
* `localTransform`;
|
||||
* `initialTransform`;
|
||||
* `jointModelTransform`;
|
||||
|
||||
Each of these is private, and has a getter but no setter. It is my hypothesis that to alter the length of the bone, one should make its `localTransform` IV a scaling transform, by calling its `setScale(float)` method. There are alternate signatures to this method, one taking three floats, one for each coordinate, and the other taking an instance of [`Vector3f`](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/math/Vector3f.html); it may be that one of these would be preferable because for my purposes I'm only interested in varing the length.
|
||||
|
||||
## Skin
|
||||
|
||||
In order to change the overall skin colour of a character, we have to modify the [`Material`](https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/material/Material.html) or the `Texture` of the skin;
|
||||
|
||||
Material has a method `setColor(String, ColorRGBA)` which should do the trick; and every Geometry has a Material. The Geometry class is a subclass of Spatial, so if the Spatial returned by `AssetManager.loadNodel(String)` is an instance of Geometry, which I believe it will be, we're *probably* golden. If not, the `Cgm` class has a mechanism for getting the Texture, but not the Material, of the Spatial, and I'll have to explore that route.
|
||||
|
||||
Broadly, I think that the material of the skin should be acted on by the genome (to set overall colour), while the texture may be acted on by some mechanism for handling acquired characteristics (to handle scars, amputations, tattoos, etc).
|
||||
|
||||
## Eyes, hair
|
||||
|
||||
I need to be able to set eye colour, eyebrow shape and colour, hair colour, and baldness from the genome (modulated by age). The hair **style** should not be set from the genome but from acquired characteristics. I'm assuming that hair dyes are not a thing in the in-game culture, otherwise hair colour would also have to be in acquired characteristics.
|
116
docs/codox/Understanding-jme3-character-models.html
Normal file
116
docs/codox/Understanding-jme3-character-models.html
Normal file
|
@ -0,0 +1,116 @@
|
|||
<!DOCTYPE html PUBLIC ""
|
||||
"">
|
||||
<html><head><meta charset="UTF-8" /><title>Understanding how jME3 handles character models</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Simulated-genetics</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 current"><a href="Understanding-jme3-character-models.html"><div class="inner"><span>Understanding how jME3 handles character models</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to simulated-genetics</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cc</span></div></div></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>journeyman</span></div></div></li><li class="depth-3"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simulated-genetics</span></div></div></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.genome.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>genome</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.launcher.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>launcher</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>makehuman-bridge</span></div></a></li><li class="depth-4"><a href="cc.journeyman.simulated-genetics.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#understanding-how-jme3-handles-character-models" id="understanding-how-jme3-handles-character-models"></a>Understanding how jME3 handles character models</h1>
|
||||
<p>(This note is largely based on analysis of Stephen Gold’s <a href="https://github.com/stephengold/Maud">Maud</a>).</p>
|
||||
<h2><a href="#dem-bones" id="dem-bones"></a>Dem Bones</h2>
|
||||
<p>One potential way to vary character models is to adjust the length of their bones. In order to be able to do this, I need to get hold of them. This note documents how to get hold of them in the <a href="https://jmonkeyengine.org/">jMonkeyEngine</a> 3 API (referenced as ‘jME3’).</p>
|
||||
<p>Model files (including, but not limited to, <code>.j3o</code> files) are <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/asset/AssetManager.html#loadModel(com.jme3.asset.ModelKey)">loaded by the AssetManager</a> as instances of <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/scene/Spatial.html">Spatial</a>. A spatial can be any sort of scene node – a building, a tree, a rock, a container. It is not inherently a character and does not inherently have a skeleton or a rig; furthermore, the abstract class Spatial has no methods to extract a skeleton or a rig – or even, actually, a geometry, material or texture.</p>
|
||||
<p>Maud loads models as instances of <code>maud.model.cgm.LoadedCgm</code>, which wraps the Spatial.</p>
|
||||
<p><a href="https://github.com/stephengold/Maud/blob/master/src/main/java/maud/model/cgm/Cgm.java#L205">Instance variable declaration</a>:</p>
|
||||
<pre><code class="language-java"> /**
|
||||
* root spatial in the MVC model's copy of the C-G model
|
||||
*/
|
||||
protected Spatial rootSpatial = null;
|
||||
</code></pre>
|
||||
<p><a href="https://github.com/stephengold/Maud/blob/master/src/main/java/maud/model/cgm/LoadedCgm.java#L292">Instantiation</a>:</p>
|
||||
<pre><code class="language-java"> this.rootSpatial = Heart.deepCopy(cgmRoot);
|
||||
</code></pre>
|
||||
<p><code>LoadedCgm</code> is a subclass of <a href="https://github.com/stephengold/Maud/blob/master/src/main/java/maud/model/cgm/Cgm.java"><code>Cgm</code></a>, where ‘CGM’ is stated in the documentation to be an acronym for ‘Computer Graphics Model’.</p>
|
||||
<p>The Cgm class has an instance variable <code>selectedSkeleton</code> which is instantiated at the time the Cgm instance is constructed to a new, empty, instance of <a href="https://github.com/stephengold/Maud/blob/master/src/main/java/maud/model/cgm/SelectedSkeleton.java">SelectedSkeleton</a>. So how does the SelectedSkeleton instance (which is instantiated before the <code>rootSpatial</code> is set) get to know about the skeleton from the Spatial, which has, inherently, no skeleton? The answer is that is calls the <a href="https://github.com/stephengold/Maud/blob/master/src/main/java/maud/model/cgm/SelectedSkeleton.java#L148"><code>countBones()</code></a> method of the selectedSkeleton:</p>
|
||||
<pre><code class="language-java"> public int countBones() {
|
||||
int result = 0;
|
||||
Object selected = find();
|
||||
if (selected instanceof Armature) {
|
||||
result = ((Armature) selected).getJointCount();
|
||||
} else if (selected instanceof Skeleton) {
|
||||
result = ((Skeleton) selected).getBoneCount();
|
||||
}
|
||||
|
||||
assert result >= 0 : result;
|
||||
return result;
|
||||
}
|
||||
</code></pre>
|
||||
<p>Part of the complexity here is backwards compatibility. The class <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/anim/Armature.html"><code>Armature</code></a> is a newer replacement for the older (and now deprecated) class <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/animation/Skeleton.html"><code>Skeleton</code></a>; this appears to be part of a major re-engineering of how jME3 handles animation.</p>
|
||||
<p>and <code>countBones()</code> calls <a href="https://github.com/stephengold/Maud/blob/master/src/main/java/maud/model/cgm/SelectedSkeleton.java#L253"><code>find()</code></a>:</p>
|
||||
<pre><code class="language-java"> /**
|
||||
* Find the selected Armature or Skeleton.
|
||||
*
|
||||
* @return the pre-existing instance, or null if none
|
||||
*/
|
||||
Object find() {
|
||||
Object result = find(null);
|
||||
return result;
|
||||
}
|
||||
</code></pre>
|
||||
<p>which in turn calls <a href="https://github.com/stephengold/Maud/blob/master/src/main/java/maud/model/cgm/SelectedSkeleton.java#L181"><code>find(binary[])</code></a>:</p>
|
||||
<pre><code class="language-java"> /**
|
||||
* Find the selected Armature or Skeleton.
|
||||
*
|
||||
* @param storeSelectedSgcFlag if not null, set the first element to true if
|
||||
* the skeleton came from the selected S-G control or its controlled
|
||||
* spatial, false if it came from the C-G model root
|
||||
* @return a pre-existing Armature or Skeleton, or null if none selected
|
||||
*/
|
||||
Object find(boolean[] storeSelectedSgcFlag) {
|
||||
boolean selectedSgcFlag;
|
||||
Object skeleton = null;
|
||||
/*
|
||||
* If the selected S-G control is an AnimControl, SkeletonControl,
|
||||
* or SkinningControl, use its skeleton, if it has one.
|
||||
*/
|
||||
Control selectedSgc = cgm.getSgc().get();
|
||||
if (selectedSgc instanceof AnimControl) {
|
||||
skeleton = ((AnimControl) selectedSgc).getSkeleton();
|
||||
}
|
||||
if (skeleton == null && selectedSgc instanceof SkeletonControl) {
|
||||
skeleton = ((SkeletonControl) selectedSgc).getSkeleton();
|
||||
}
|
||||
if (skeleton == null && selectedSgc instanceof SkinningControl) {
|
||||
skeleton = ((SkinningControl) selectedSgc).getArmature();
|
||||
}
|
||||
...
|
||||
</code></pre>
|
||||
<p>And so on.</p>
|
||||
<p>I’m going to confess here that coming back to object oriented programming after a decade of concentrating on functional programming, it’s frustrating how complicated, messy and repetitious it is. But in this instance I can’t help feeling that it would have been less messy if the abstract class <code>CGM</code> had a method <code>getSkeleton()</code> which by default returned null; and which was overridden in subclasses of <code>CGM</code> which represented things which did have skeletons to return their skeletons.</p>
|
||||
<p>But this only kicks the ‘how to get the skeleton’ one step further down the road, to <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/scene/control/Control.html"><code>Control</code></a>. <code>Control</code> also wraps a <code>Spatial</code>, which also isn’t instantiated at construction time, and also doesn’t have a <code>getSkeleton()</code> method.</p>
|
||||
<p>To be fair I don’t know what proportion of subclasses of <code>Control</code> have skeletons, but on the evidence here at least four do; and an overridable instance method on <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/scene/control/AbstractControl.html"><code>AbstractControl</code></a> returning <code>null</code>, declared on the <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/scene/control/Control.html"><code>Control</code></a> interface, would have little cost and save a lot of mess.</p>
|
||||
<p>As there are now a lot of branches to cover, I’m going to concentrate on the <code>SkinningControl</code> one, which <em>seems</em> to be the current state of the art. I haven’t at this stage investigated how <code>AssetManager.loadModel(String)</code> determines which classes to instantiate when loading a model, but I’m going to assume that I can coerce my models to be loaded in a non-deprecated form.</p>
|
||||
<p>A <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/anim/SkinningControl.html"><code>SkinningControl</code></a> has a private instance variable <code>armature</code>:</p>
|
||||
<pre><code class="language-java"> /**
|
||||
* The armature of the model.
|
||||
*/
|
||||
private Armature armature;
|
||||
</code></pre>
|
||||
<p>which is instantiated in the constructor:</p>
|
||||
<pre><code class="language-java"> /**
|
||||
* Creates an armature control. The list of targets will be acquired
|
||||
* automatically when the control is attached to a node.
|
||||
*
|
||||
* @param armature the armature
|
||||
*/
|
||||
public SkinningControl(Armature armature) {
|
||||
if (armature == null) {
|
||||
throw new IllegalArgumentException("armature cannot be null");
|
||||
}
|
||||
this.armature = armature;
|
||||
this.numberOfJointsParam = new MatParamOverride(VarType.Int, "NumberOfBones", null);
|
||||
this.jointMatricesParam = new MatParamOverride(VarType.Matrix4Array, "BoneMatrices", null);
|
||||
}
|
||||
</code></pre>
|
||||
<p>the <code>Armature</code> class has an instance method <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/anim/Armature.html#getJointCount()"><code>getJointCount()</code></a>; it also has instance methods <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/anim/Armature.html#getJointList()"><code>getJointList()</code></a>, <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/anim/Armature.html#getJoint(int)"><code>getJoint(int)</code></a>, and <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/anim/Armature.html#getJoint(java.lang.String)"><code>getJoint(String)</code></a>.</p>
|
||||
<p><strong>Note that</strong> <code>Joint</code> <em>seems</em> to be a name used in the rewrite of the animation system to avoid confusion with the <code>Bone</code> in the earlier animation system, and <em>I think</em> represents what normal animation rig nomenclature would refer to as a bone.</p>
|
||||
<p>However, the <code>Joint</code> class has no <code>length</code> instance variable. What it has is a <code>targetGeometry</code> instance variable which is declared as a <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/scene/Geometry.html"><code>Geometry</code></a>. Geometry, in turn, has no dimensions, but has an instance variable <code>mesh</code> declared as a <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/scene/Mesh.html"><code>Mesh</code></a>. I suspect that it is the Mesh object – which contains lines, triangles and vertices – which provides the actual dimensioned objects.</p>
|
||||
<p>I don’t think, however, that I either need to or should change anything in the Geometry objects themselves. Instead, the Joint object also has three instance variables bound to instances of <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/math/Transform.html"><code>Transform</code></a>:</p>
|
||||
<ul>
|
||||
<li><code>localTransform</code>;</li>
|
||||
<li><code>initialTransform</code>;</li>
|
||||
<li><code>jointModelTransform</code>;</li>
|
||||
</ul>
|
||||
<p>Each of these is private, and has a getter but no setter. It is my hypothesis that to alter the length of the bone, one should make its <code>localTransform</code> IV a scaling transform, by calling its <code>setScale(float)</code> method. There are alternate signatures to this method, one taking three floats, one for each coordinate, and the other taking an instance of <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/math/Vector3f.html"><code>Vector3f</code></a>; it may be that one of these would be preferable because for my purposes I’m only interested in varing the length.</p>
|
||||
<h2><a href="#skin" id="skin"></a>Skin</h2>
|
||||
<p>In order to change the overall skin colour of a character, we have to modify the <a href="https://javadoc.jmonkeyengine.org/v3.6.1-stable/com/jme3/material/Material.html"><code>Material</code></a> or the <code>Texture</code> of the skin;</p>
|
||||
<p>Material has a method <code>setColor(String, ColorRGBA)</code> which should do the trick; and every Geometry has a Material. The Geometry class is a subclass of Spatial, so if the Spatial returned by <code>AssetManager.loadNodel(String)</code> is an instance of Geometry, which I believe it will be, we’re <em>probably</em> golden. If not, the <code>Cgm</code> class has a mechanism for getting the Texture, but not the Material, of the Spatial, and I’ll have to explore that route.</p>
|
||||
<p>Broadly, I think that the material of the skin should be acted on by the genome (to set overall colour), while the texture may be acted on by some mechanism for handling acquired characteristics (to handle scars, amputations, tattoos, etc).</p>
|
||||
<h2><a href="#eyes-hair" id="eyes-hair"></a>Eyes, hair</h2>
|
||||
<p>I need to be able to set eye colour, eyebrow shape and colour, hair colour, and baldness from the genome (modulated by age). The hair <strong>style</strong> should not be set from the genome but from acquired characteristics. I’m assuming that hair dyes are not a thing in the in-game culture, otherwise hair colour would also have to be in acquired characteristics.</p>
|
||||
</div></div></div></body></html>
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html PUBLIC ""
|
||||
"">
|
||||
<html><head><meta charset="UTF-8" /><title>cc.journeyman.simulated-genetics.genome documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Simulated-genetics</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to simulated-genetics</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cc</span></div></div></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>journeyman</span></div></div></li><li class="depth-3"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simulated-genetics</span></div></div></li><li class="depth-4 branch current"><a href="cc.journeyman.simulated-genetics.genome.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>genome</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.launcher.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>launcher</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>makehuman-bridge</span></div></a></li><li class="depth-4"><a href="cc.journeyman.simulated-genetics.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-create-genome"><div class="inner"><span>create-genome</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-ethnically-biased-feature-index"><div class="inner"><span>ethnically-biased-feature-index</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-expand-genome"><div class="inner"><span>expand-genome</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-extract-bits"><div class="inner"><span>extract-bits</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-gender-bit"><div class="inner"><span>gender-bit</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-genome-mask"><div class="inner"><span>genome-mask</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-male.3F"><div class="inner"><span>male?</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-rand-genome"><div class="inner"><span>rand-genome</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">cc.journeyman.simulated-genetics.genome</h1><div class="doc"><div class="markdown"><p>lightweight simulation of a genome.</p>
|
||||
<html><head><meta charset="UTF-8" /><title>cc.journeyman.simulated-genetics.genome documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Simulated-genetics</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="Understanding-jme3-character-models.html"><div class="inner"><span>Understanding how jME3 handles character models</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to simulated-genetics</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cc</span></div></div></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>journeyman</span></div></div></li><li class="depth-3"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simulated-genetics</span></div></div></li><li class="depth-4 branch current"><a href="cc.journeyman.simulated-genetics.genome.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>genome</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.launcher.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>launcher</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>makehuman-bridge</span></div></a></li><li class="depth-4"><a href="cc.journeyman.simulated-genetics.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-create-genome"><div class="inner"><span>create-genome</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-ethnically-biased-feature-index"><div class="inner"><span>ethnically-biased-feature-index</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-expand-genome"><div class="inner"><span>expand-genome</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-extract-bits"><div class="inner"><span>extract-bits</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-gender-bit"><div class="inner"><span>gender-bit</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-genome-mask"><div class="inner"><span>genome-mask</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-male.3F"><div class="inner"><span>male?</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.genome.html#var-rand-genome"><div class="inner"><span>rand-genome</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">cc.journeyman.simulated-genetics.genome</h1><div class="doc"><div class="markdown"><p>lightweight simulation of a genome.</p>
|
||||
</div></div><div class="public anchor" id="var-create-genome"><h3>create-genome</h3><div class="usage"><code>(create-genome)</code><code>(create-genome father mother)</code></div><div class="doc"><div class="markdown"><p>Create a new genome; if <code>father</code> and <code>mother</code> are passed, the result will comprise bits taken randomly from those genomes.</p>
|
||||
</div></div><div class="src-link"><a href="https://github.com/simon-brooke/the-great-game/blob/master/src/cc/journeyman/simulated_genetics/genome.clj#L43">view source</a></div></div><div class="public anchor" id="var-ethnically-biased-feature-index"><h3>ethnically-biased-feature-index</h3><h4 class="type">macro</h4><div class="usage"><code>(ethnically-biased-feature-index genome start end)</code></div><div class="doc"><div class="markdown"><p>Some feature values are associated with particular ethnicities.</p>
|
||||
</div></div><div class="src-link"><a href="https://github.com/simon-brooke/the-great-game/blob/master/src/cc/journeyman/simulated_genetics/genome.clj#L67">view source</a></div></div><div class="public anchor" id="var-expand-genome"><h3>expand-genome</h3><div class="usage"><code>(expand-genome genome)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html PUBLIC ""
|
||||
"">
|
||||
<html><head><meta charset="UTF-8" /><title>cc.journeyman.simulated-genetics.launcher documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Simulated-genetics</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to simulated-genetics</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cc</span></div></div></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>journeyman</span></div></div></li><li class="depth-3"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simulated-genetics</span></div></div></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.genome.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>genome</span></div></a></li><li class="depth-4 branch current"><a href="cc.journeyman.simulated-genetics.launcher.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>launcher</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>makehuman-bridge</span></div></a></li><li class="depth-4"><a href="cc.journeyman.simulated-genetics.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="cc.journeyman.simulated-genetics.launcher.html#var--main"><div class="inner"><span>-main</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.launcher.html#var-app"><div class="inner"><span>app</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.launcher.html#var-cli-options"><div class="inner"><span>cli-options</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.launcher.html#var-init"><div class="inner"><span>init</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">cc.journeyman.simulated-genetics.launcher</h1><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p>
|
||||
<html><head><meta charset="UTF-8" /><title>cc.journeyman.simulated-genetics.launcher documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Simulated-genetics</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="Understanding-jme3-character-models.html"><div class="inner"><span>Understanding how jME3 handles character models</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to simulated-genetics</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cc</span></div></div></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>journeyman</span></div></div></li><li class="depth-3"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simulated-genetics</span></div></div></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.genome.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>genome</span></div></a></li><li class="depth-4 branch current"><a href="cc.journeyman.simulated-genetics.launcher.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>launcher</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>makehuman-bridge</span></div></a></li><li class="depth-4"><a href="cc.journeyman.simulated-genetics.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="cc.journeyman.simulated-genetics.launcher.html#var--main"><div class="inner"><span>-main</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.launcher.html#var-app"><div class="inner"><span>app</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.launcher.html#var-cli-options"><div class="inner"><span>cli-options</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.launcher.html#var-init"><div class="inner"><span>init</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">cc.journeyman.simulated-genetics.launcher</h1><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p>
|
||||
</div></div><div class="public anchor" id="var--main"><h3>-main</h3><div class="usage"><code>(-main & args)</code></div><div class="doc"><div class="markdown"><p>Start an app into which generated characters can ultimately be rendered.</p>
|
||||
</div></div><div class="src-link"><a href="https://github.com/simon-brooke/the-great-game/blob/master/src/cc/journeyman/simulated_genetics/launcher.clj#L88">view source</a></div></div><div class="public anchor" id="var-app"><h3>app</h3><div class="usage"></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p>
|
||||
</div></div><div class="src-link"><a href="https://github.com/simon-brooke/the-great-game/blob/master/src/cc/journeyman/simulated_genetics/launcher.clj#L86">view source</a></div></div><div class="public anchor" id="var-cli-options"><h3>cli-options</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>I haven’t yet thought out what command line arguments (if any) I need. This is a placeholder.</p>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html PUBLIC ""
|
||||
"">
|
||||
<html><head><meta charset="UTF-8" /><title>cc.journeyman.simulated-genetics.makehuman-bridge documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Simulated-genetics</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to simulated-genetics</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cc</span></div></div></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>journeyman</span></div></div></li><li class="depth-3"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simulated-genetics</span></div></div></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.genome.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>genome</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.launcher.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>launcher</span></div></a></li><li class="depth-4 branch current"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>makehuman-bridge</span></div></a></li><li class="depth-4"><a href="cc.journeyman.simulated-genetics.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html#var-initialise-makehuman.21"><div class="inner"><span>initialise-makehuman!</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html#var-initialize-makehuman.21"><div class="inner"><span>initialize-makehuman!</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">cc.journeyman.simulated-genetics.makehuman-bridge</h1><div class="doc"><div class="markdown"><p>Bridge to MakeHuman, in an attempt to use it to generate character models.</p>
|
||||
<html><head><meta charset="UTF-8" /><title>cc.journeyman.simulated-genetics.makehuman-bridge documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Simulated-genetics</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="Understanding-jme3-character-models.html"><div class="inner"><span>Understanding how jME3 handles character models</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to simulated-genetics</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cc</span></div></div></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>journeyman</span></div></div></li><li class="depth-3"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simulated-genetics</span></div></div></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.genome.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>genome</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.launcher.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>launcher</span></div></a></li><li class="depth-4 branch current"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>makehuman-bridge</span></div></a></li><li class="depth-4"><a href="cc.journeyman.simulated-genetics.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html#var-initialise-makehuman.21"><div class="inner"><span>initialise-makehuman!</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html#var-initialize-makehuman.21"><div class="inner"><span>initialize-makehuman!</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">cc.journeyman.simulated-genetics.makehuman-bridge</h1><div class="doc"><div class="markdown"><p>Bridge to MakeHuman, in an attempt to use it to generate character models.</p>
|
||||
<p><strong>NOTE</strong>: Currently not under active development. I’ve failed to get this to work, but, even if I succeeded, it would be a very complex and fragile solution.</p>
|
||||
</div></div><div class="public anchor" id="var-initialise-makehuman.21"><h3>initialise-makehuman!</h3><div class="usage"><code>(initialise-makehuman! mh-path)</code></div><div class="doc"><div class="markdown"><p>Initialise the local instance of MakeHuman. <code>mh-path</code> should be a valid path to the directory in which MakeHuman is installed, i.e. the directory which contains <code>makehuman.py</code>.</p>
|
||||
</div></div><div class="src-link"><a href="https://github.com/simon-brooke/the-great-game/blob/master/src/cc/journeyman/simulated_genetics/makehuman_bridge.clj#L41">view source</a></div></div><div class="public anchor" id="var-initialize-makehuman.21"><h3>initialize-makehuman!</h3><h4 class="type">macro</h4><div class="usage"><code>(initialize-makehuman! mh-path)</code></div><div class="doc"><div class="markdown"><p>For those who don’t know how to spell…</p>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html PUBLIC ""
|
||||
"">
|
||||
<html><head><meta charset="UTF-8" /><title>cc.journeyman.simulated-genetics.utils documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Simulated-genetics</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to simulated-genetics</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cc</span></div></div></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>journeyman</span></div></div></li><li class="depth-3"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simulated-genetics</span></div></div></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.genome.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>genome</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.launcher.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>launcher</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>makehuman-bridge</span></div></a></li><li class="depth-4 current"><a href="cc.journeyman.simulated-genetics.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="cc.journeyman.simulated-genetics.utils.html#var-bits-in-genome"><div class="inner"><span>bits-in-genome</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.utils.html#var-create-binary-string-mask"><div class="inner"><span>create-binary-string-mask</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.utils.html#var-create-mask"><div class="inner"><span>create-mask</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.utils.html#var-long-from-binary-string"><div class="inner"><span>long-from-binary-string</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">cc.journeyman.simulated-genetics.utils</h1><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p>
|
||||
<html><head><meta charset="UTF-8" /><title>cc.journeyman.simulated-genetics.utils documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Simulated-genetics</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="Understanding-jme3-character-models.html"><div class="inner"><span>Understanding how jME3 handles character models</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to simulated-genetics</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cc</span></div></div></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>journeyman</span></div></div></li><li class="depth-3"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simulated-genetics</span></div></div></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.genome.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>genome</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.launcher.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>launcher</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>makehuman-bridge</span></div></a></li><li class="depth-4 current"><a href="cc.journeyman.simulated-genetics.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="cc.journeyman.simulated-genetics.utils.html#var-bits-in-genome"><div class="inner"><span>bits-in-genome</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.utils.html#var-create-binary-string-mask"><div class="inner"><span>create-binary-string-mask</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.utils.html#var-create-mask"><div class="inner"><span>create-mask</span></div></a></li><li class="depth-1"><a href="cc.journeyman.simulated-genetics.utils.html#var-long-from-binary-string"><div class="inner"><span>long-from-binary-string</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">cc.journeyman.simulated-genetics.utils</h1><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p>
|
||||
</div></div><div class="public anchor" id="var-bits-in-genome"><h3>bits-in-genome</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>Number of bits we’re actually using. <strong>NOTE THAT</strong> as this implementation is based on Java longs, this number must not be more than 63 or else we’ve <em>a lot</em> of rewriting to do.</p>
|
||||
</div></div><div class="src-link"><a href="https://github.com/simon-brooke/the-great-game/blob/master/src/cc/journeyman/simulated_genetics/utils.clj#L28">view source</a></div></div><div class="public anchor" id="var-create-binary-string-mask"><h3>create-binary-string-mask</h3><div class="usage"><code>(create-binary-string-mask start end)</code></div><div class="doc"><div class="markdown"><p>Mainly for testing, create a binary string mask with those bits indexed from <code>start</code> (inclusive) to <code>end</code> (exclusive) set, and all others cleared.</p>
|
||||
</div></div><div class="src-link"><a href="https://github.com/simon-brooke/the-great-game/blob/master/src/cc/journeyman/simulated_genetics/utils.clj#L43">view source</a></div></div><div class="public anchor" id="var-create-mask"><h3>create-mask</h3><div class="usage"><code>(create-mask start end)</code></div><div class="doc"><div class="markdown"><p>Create a with those bits indexed from <code>start</code> (inclusive) to <code>end</code> (exclusive) set, and all others cleared.</p>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html PUBLIC ""
|
||||
"">
|
||||
<html><head><meta charset="UTF-8" /><title>Simulated-genetics 0.1.0-SNAPSHOT</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Simulated-genetics</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 current"><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to simulated-genetics</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cc</span></div></div></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>journeyman</span></div></div></li><li class="depth-3"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simulated-genetics</span></div></div></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.genome.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>genome</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.launcher.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>launcher</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>makehuman-bridge</span></div></a></li><li class="depth-4"><a href="cc.journeyman.simulated-genetics.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li></ul></div><div class="namespace-index" id="content"><h1><span class="project-title"><span class="project-name">Simulated-genetics</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></h1><h5 class="license">Released under the <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GNU General Public License,version 2.0 or (at your option) any later version</a></h5><div class="doc"><p>A lightweight simulation of genetics, intended for use in games only.</p></div><h2>Installation</h2><p>To install, add the following dependency to your project or build file:</p><pre class="deps">[simulated-genetics "0.1.0-SNAPSHOT"]</pre><h2>Topics</h2><ul class="topics"><li><a href="intro.html">Introduction to simulated-genetics</a></li></ul><h2>Namespaces</h2><div class="namespace"><h3><a href="cc.journeyman.simulated-genetics.genome.html">cc.journeyman.simulated-genetics.genome</a></h3><div class="doc"><div class="markdown"><p>lightweight simulation of a genome.</p>
|
||||
<html><head><meta charset="UTF-8" /><title>Simulated-genetics 0.1.0-SNAPSHOT</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Simulated-genetics</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 current"><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="Understanding-jme3-character-models.html"><div class="inner"><span>Understanding how jME3 handles character models</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to simulated-genetics</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cc</span></div></div></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>journeyman</span></div></div></li><li class="depth-3"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simulated-genetics</span></div></div></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.genome.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>genome</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.launcher.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>launcher</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>makehuman-bridge</span></div></a></li><li class="depth-4"><a href="cc.journeyman.simulated-genetics.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li></ul></div><div class="namespace-index" id="content"><h1><span class="project-title"><span class="project-name">Simulated-genetics</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></h1><h5 class="license">Released under the <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GNU General Public License,version 2.0 or (at your option) any later version</a></h5><div class="doc"><p>A lightweight simulation of genetics, intended for use in games only.</p></div><h2>Installation</h2><p>To install, add the following dependency to your project or build file:</p><pre class="deps">[simulated-genetics "0.1.0-SNAPSHOT"]</pre><h2>Topics</h2><ul class="topics"><li><a href="Understanding-jme3-character-models.html">Understanding how jME3 handles character models</a></li><li><a href="intro.html">Introduction to simulated-genetics</a></li></ul><h2>Namespaces</h2><div class="namespace"><h3><a href="cc.journeyman.simulated-genetics.genome.html">cc.journeyman.simulated-genetics.genome</a></h3><div class="doc"><div class="markdown"><p>lightweight simulation of a genome.</p>
|
||||
</div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="cc.journeyman.simulated-genetics.genome.html#var-create-genome">create-genome</a> </li><li> <a href="cc.journeyman.simulated-genetics.genome.html#var-ethnically-biased-feature-index">ethnically-biased-feature-index</a> </li><li> <a href="cc.journeyman.simulated-genetics.genome.html#var-expand-genome">expand-genome</a> </li><li> <a href="cc.journeyman.simulated-genetics.genome.html#var-extract-bits">extract-bits</a> </li><li> <a href="cc.journeyman.simulated-genetics.genome.html#var-gender-bit">gender-bit</a> </li><li> <a href="cc.journeyman.simulated-genetics.genome.html#var-genome-mask">genome-mask</a> </li><li> <a href="cc.journeyman.simulated-genetics.genome.html#var-male.3F">male?</a> </li><li> <a href="cc.journeyman.simulated-genetics.genome.html#var-rand-genome">rand-genome</a> </li></ul></div></div><div class="namespace"><h3><a href="cc.journeyman.simulated-genetics.launcher.html">cc.journeyman.simulated-genetics.launcher</a></h3><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p>
|
||||
</div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="cc.journeyman.simulated-genetics.launcher.html#var--main">-main</a> </li><li> <a href="cc.journeyman.simulated-genetics.launcher.html#var-app">app</a> </li><li> <a href="cc.journeyman.simulated-genetics.launcher.html#var-cli-options">cli-options</a> </li><li> <a href="cc.journeyman.simulated-genetics.launcher.html#var-init">init</a> </li></ul></div></div><div class="namespace"><h3><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html">cc.journeyman.simulated-genetics.makehuman-bridge</a></h3><div class="doc"><div class="markdown"><p>Bridge to MakeHuman, in an attempt to use it to generate character models.</p>
|
||||
</div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="cc.journeyman.simulated-genetics.makehuman-bridge.html#var-initialise-makehuman.21">initialise-makehuman!</a> </li><li> <a href="cc.journeyman.simulated-genetics.makehuman-bridge.html#var-initialize-makehuman.21">initialize-makehuman!</a> </li></ul></div></div><div class="namespace"><h3><a href="cc.journeyman.simulated-genetics.utils.html">cc.journeyman.simulated-genetics.utils</a></h3><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html PUBLIC ""
|
||||
"">
|
||||
<html><head><meta charset="UTF-8" /><title>Introduction to simulated-genetics</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Simulated-genetics</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 current"><a href="intro.html"><div class="inner"><span>Introduction to simulated-genetics</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cc</span></div></div></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>journeyman</span></div></div></li><li class="depth-3"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simulated-genetics</span></div></div></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.genome.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>genome</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.launcher.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>launcher</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>makehuman-bridge</span></div></a></li><li class="depth-4"><a href="cc.journeyman.simulated-genetics.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#introduction-to-simulated-genetics" id="introduction-to-simulated-genetics"></a>Introduction to simulated-genetics</h1>
|
||||
<html><head><meta charset="UTF-8" /><title>Introduction to simulated-genetics</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Simulated-genetics</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="Understanding-jme3-character-models.html"><div class="inner"><span>Understanding how jME3 handles character models</span></div></a></li><li class="depth-1 current"><a href="intro.html"><div class="inner"><span>Introduction to simulated-genetics</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cc</span></div></div></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>journeyman</span></div></div></li><li class="depth-3"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simulated-genetics</span></div></div></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.genome.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>genome</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.launcher.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>launcher</span></div></a></li><li class="depth-4 branch"><a href="cc.journeyman.simulated-genetics.makehuman-bridge.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>makehuman-bridge</span></div></a></li><li class="depth-4"><a href="cc.journeyman.simulated-genetics.utils.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>utils</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#introduction-to-simulated-genetics" id="introduction-to-simulated-genetics"></a>Introduction to simulated-genetics</h1>
|
||||
<h1><a href="#simulated-genetics" id="simulated-genetics"></a>simulated-genetics</h1>
|
||||
<p>A clojure library (OK, at this moment it’s an app, but that’s during development only) to generate character models for games, such that characters who are represented as related to one another will have systematically similar appearance, as creatures of natural species (including humans) do. This is specifically <strong>NOT</strong> simulating genetics on any deep or quasi-scientific level, just experimenting to see how adequate a solution can be achieved with simple code and limited data.</p>
|
||||
<p>Part of <a href="https://simon-brooke.github.io/the-great-game/codox/index.html">The Great Game</a> project.</p>
|
||||
|
|
Loading…
Reference in a new issue