Skip to content

Commit b5eaff7

Browse files
committed
Merge remote-tracking branch 'official/master' into #181-create-3.8-wiki-version
# Conflicts: # docs/modules/ROOT/pages/getting-started/maven.adoc
2 parents 0fd7668 + 1805d51 commit b5eaff7

35 files changed

+3824
-1385
lines changed

.github/workflows/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
build:
3131

3232
#Static version is used to maintain stability.
33-
runs-on: ubuntu-18.04
33+
runs-on: ubuntu-22.04
3434

3535
strategy:
3636
matrix:

README.adoc

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,12 @@ NOTE: Read the link:https://wiki.jmonkeyengine.org/docs-wiki/3.8/wiki_contributo
1717

1818
== Build & Preview
1919

20-
To set up the Antora environment, you'll need Nodejs (tested with node 12).
20+
To set up the Antora environment, you'll need Node.js and Nvm.
2121

22-
From your local wiki directory.
23-
24-
Run:
22+
From your local wiki directory, run:
2523
```
2624
npm install
27-
npm run buildDocs
25+
npx antora wiki-playbook.yml
2826
```
2927

3028
This will install the needed dependencies and run the static site generator. The documentation will be output to the directory `build/site`.

docs/modules/ROOT/pages/getting-started/maven.adoc

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ repositories {
5151
mavenCentral()
5252
}
5353
54-
def jme3 = [v:'3.8.0-stable', g:'org.jmonkeyengine']
54+
def jme3 = [v:'3.8.1-stable', g:'org.jmonkeyengine']
5555
dependencies {
5656
implementation "${jme3.g}:jme3-core:${jme3.v}"
5757
runtimeOnly "${jme3.g}:jme3-desktop:${jme3.v}"
@@ -65,7 +65,7 @@ dependencies {
6565
----
6666
<properties>
6767
<jme3_g>org.jmonkeyengine</jme3_g>
68-
  <jme3_v>3.8.0-stable</jme3_v>
68+
  <jme3_v>3.8.1-stable</jme3_v>
6969
</properties>
7070
7171
<repositories>
@@ -94,3 +94,56 @@ dependencies {
9494
</dependency>
9595
</dependencies>
9696
----
97+
98+
== Snapshots
99+
100+
Typically, you will want to develop against the latest stable version of the engine. For testing
101+
purposes, snapshot builds are generated and updated every time that changes are commited to the
102+
master branch.
103+
104+
You can add the snapshot repository to your build files, and set the version to the snapshot build:
105+
106+
107+
=== Gradle
108+
109+
[source,groovy]
110+
----
111+
repositories {
112+
mavenCentral()
113+
maven {url 'https://s01.oss.sonatype.org/content/repositories/snapshots/'}
114+
}
115+
116+
/*
117+
* Gradle defaults to cacheing artifacts for 24 hours. This entry makes sure that
118+
* you are always using the absolute latest snapshot, but it does mean that the engine
119+
* gets downloaded on every build.
120+
*/
121+
configurations.all {
122+
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
123+
}
124+
125+
def jme3 = [v:'3.8.1-SNAPSHOT', g:'org.jmonkeyengine']
126+
----
127+
128+
=== Maven
129+
130+
[source,xml]
131+
----
132+
<properties>
133+
<jme3_g>org.jmonkeyengine</jme3_g>
134+
  <jme3_v>3.7.0-SNAPSHOT</jme3_v>
135+
</properties>
136+
137+
<repositories>
138+
<repository>
139+
<id>mvnrepository</id>
140+
<url>https://repo1.maven.org/maven2/</url>
141+
</repository>
142+
<repository>
143+
<id>snapshots</id>
144+
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
145+
</repository>
146+
</repositories>
147+
----
148+
149+

docs/modules/ROOT/pages/release.adoc

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ workflow to run at GitHub Actions.
3333
The workflow is defined by
3434
https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/.github/workflows/main.yml[the "main.yml" script].
3535
It performs clean builds of the Engine
36-
across a matrix of 4 operating systems and 2 Java versions.
36+
across a matrix of 3 operating systems and 3 Java versions.
3737
It also performs a clean build of the merged javadoc.
3838

3939
Any failure of the CI workflow causes notifications to be sent.
@@ -233,6 +233,23 @@ until a "Repository closed" message appears in the progress.
233233

234234
image::sonatype/repo_closed.png[repo_closed.png]
235235

236+
Once the repository is closed, its artifacts become publicly
237+
visble at SonaType, but they aren't yet synched
238+
to Maven Central.
239+
This is your last opportunity to test the proposed release,
240+
using (for example)
241+
242+
[source,groovy]
243+
----
244+
repositories {
245+
maven { url 'https://s01.oss.sonatype.org/content/groups/staging' }
246+
mavenCentral()
247+
}
248+
----
249+
250+
If the staged artifacts don't work for some reason, drop them,
251+
address the issue(s), and start over with a new release name.
252+
236253
To begin the synching process,
237254
click on the "Release" button and then the "Confirm" button.
238255
The process usually takes about 20 minutes.

docs/modules/contributions/nav.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,7 @@
2121
** Tools
2222
*** xref:tools/navigation.adoc[Mercator Projection Tool (Marine Navigation)]
2323
*** xref:tools/charts.adoc[Visualizing Maps in JME3 (Marine Charts)]
24+
** xref:vr/topic_contributions_vr.adoc[Virtual Reality (And augmented reality)]
25+
*** xref:contributions.adoc#tamarin-openxr[Tamarin OpenXR]
2426
** Projects
2527
*** xref:projects/rise_of_mutants_project.adoc[Rise of Mutants Project]

docs/modules/contributions/pages/contributions.adoc

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,13 @@ GroupID:ArtifactID
112112
{url-mcentral}q=g:com.github.stephengold%20AND%20a:tonegodgui[com.github.stephengold:tonegodgui]
113113
|{url-github}/stephengold/tonegodgui[GitHub]
114114

115+
|{url-github}/jack-bradshaw/monorepo/tree/main/java/io/jackbradshaw/kmonkey[KMonkey]
116+
|Support for Kotlin Coroutines
117+
|{url-forum-user}/jackbradshaw[jackbradshaw]
118+
|\https://repo1.maven.org/maven2 +
119+
{url-mcentral}q=g:io.jackbradshaw:kmonkey[io.jackbradshaw:kmonkey]
120+
|{url-github}/jack-bradshaw/monorepo/tree/main/java/io/jackbradshaw/kmonkey[GitHub]
121+
115122

116123
|===
117124

@@ -310,6 +317,27 @@ a| Yes
310317

311318
|===
312319

320+
=== Tamarin OpenXR
321+
322+
Tamarin provides OpenXR functionality to enable jMonkey applications to run on VR headsets. It provides full support for the headset, controller actions, haptic feedback and a sample set of vr hands.
323+
324+
[cols="2", options="header"]
325+
|===
326+
327+
a| *Contact person*
328+
a| {url-forum-user}/richtea[richtea]
329+
330+
a| *Documentation*
331+
a| {url-github}/oneMillionWorlds/Tamarin/wiki[Tamarin wiki]
332+
333+
a| *Available as SDK plugin*
334+
a| No
335+
336+
a| *Work in progress*
337+
a| No (Actively maintained and improved)
338+
339+
|===
340+
313341
== Assets packs
314342

315343
_No contributions yet_
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
= VR Contributions
2+
:description: VR contributed libraries for the jmonkey engine.
3+
:keywords: vr, documentation, ar, openxr, contributions
4+
5+
This topic contains user contributed Virtual Reality (and augmented reality) libraries.

docs/modules/core/nav.adoc

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
** xref:collision/collision_and_intersection.adoc[Collision and Intersection]
2323
** xref:scene/control/level_of_detail.adoc[Level of Detail]
2424
* Animation, Scene
25-
** xref:animation/animation.adoc[Animation-Old]
25+
** xref:animation/animation_new.adoc[Animation with AnimComposer]
26+
** xref:animation/animation.adoc[Animation-Old (AnimControl)]
2627
// ** xref:anim/animation.adoc[Animation-New]
2728
** xref:cinematic/cinematics.adoc[Cinematics (cutscenes, fake destruction physics)]
2829
** xref:cinematic/motionpath.adoc[MotionPaths and Waypoints]
@@ -37,6 +38,7 @@
3738
** xref:light/light_and_shadow.adoc[Light and Shadow]
3839
** xref:texture/anisotropic_filtering.adoc[Anisotropic Filtering]
3940
** xref:system/jme3_srgbpipeline.adoc[Gamma Correction]
41+
** xref:material/normal_types.adoc[Normal Map Conventions]
4042
* Audio, Video
4143
** xref:audio/audio.adoc[Playing Sounds]
4244
** xref:audio/audio_environment_presets.adoc[Audio Environment Presets]
@@ -58,6 +60,8 @@
5860
** xref:renderer/remote-controlling_the_camera.adoc[Remote-Controlling]
5961
** xref:renderer/multiple_camera_views.adoc[Multiple Camera Views]
6062
** xref:renderer/jme3_renderbuckets.adoc[Render Buckets]
63+
* Rendering
64+
** xref:renderer/render_pipeline.adoc[Render Pipelines]
6165
* User Interaction
6266
** xref:input/input_handling.adoc[Input Handling]
6367
** xref:input/combo_moves.adoc[Combo Moves]
@@ -70,4 +74,5 @@
7074
** xref:ui/hud.adoc[Head-Up Display (HUD)]
7175
* Virtual Reality
7276
** xref:vr/virtualreality.adoc[Virtual Reality]
73-
** xref:vr/virtualrealitycontrollers.adoc[Virtual Reality Controllers]
77+
** xref:vr/legacyOpenVr.adoc[Virtual Reality Legacy Support]
78+
** xref:vr/virtualrealitycontrollers.adoc[Virtual Reality Legacy Controller Support]
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
= Animation in jME3
2+
:revnumber: 2.1
3+
:revdate: 2020/07/24
4+
5+
6+
In 3D games, you do not only load static 3D models, you also want to be able to trigger animations in the model from the Java code.
7+
8+
9+
== Requirements
10+
11+
JME3 only loads and plays animated models, it does not create them.
12+
13+
What is required for an animated model? (<<tutorials:concepts/terminology.adoc#animation,See also: Animation terminology>>
14+
15+
. For each model, you have to segment the model into a skeleton (*bone rigging*).
16+
. For each motion, you have to specify how the animation distorts parts of the model (*skinning*).
17+
. For each animation, you have to specify a series of snapshots of how the bones are positioned (*keyframes*).
18+
. One model can contain several animations. You give every animation a name when you save it in the mesh editor.
19+
20+
Unless you download free models, or buy them from a 3D artist, you must create your animated models in an *external mesh editor* (for example, Blender) yourself.
21+
22+
* <<ROOT:getting-started/features.adoc#supported-external-file-types,Supported External File Types>>
23+
* xref:tutorials:how-to/modeling/blender/blender.adoc[Creating assets in Blender3D]
24+
* link:http://www.youtube.com/watch?v=IDHMWsu_PqA[Video: Creating Worlds with Instances in Blender]
25+
26+
What is required in your JME3-based Java class?
27+
28+
* One AnimationComposer per animated model.
29+
* As many Layer per Composer as you need to play your animations. In simple cases one layer is enough to play animations for the whole model, sometimes you need two or more layers per model to play gestures and motions in parallel.
30+
31+
32+
== Code Samples
33+
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/1296eb25a6f42d2c42a3b0427904dac40d8d4017/jme3-examples/src/main/java/jme3test/model/anim/TestAnimSerialization.java[TestAnimSerialization.java]
34+
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/1296eb25a6f42d2c42a3b0427904dac40d8d4017/jme3-examples/src/main/java/jme3test/model/anim/TestAttachmentsNode.java#L96[TestAttachmentsNode.jav]
35+
36+
== Controlling Animations
37+
38+
39+
=== The AnimComposer
40+
A model should get an AnimComposer automatically when you convert your model to j3o. At the same time animations will be created and accessible in the AnimComposer.
41+
Animations will be named the same they were in your editor.
42+
43+
==== Playing animations
44+
[source,java]
45+
----
46+
AnimComposer animComposer = animatedModel.getControl(AnimComposer.class);
47+
animComposer.setCurrentAction("Walk");
48+
...
49+
50+
----
51+
When you tell the AnimComposer to play the animation it will be looped by default. If you want it to only play an animation once, you can do the following:
52+
53+
[source,java]
54+
----
55+
Action walk = animComposer.action("Walk");
56+
Tween doneTween = Tweens.callMethod(animComposer, "setCurrentAction", "Idle");
57+
Action walkOnce = animComposer.actionSequence("WalkOnce", walk, doneTween);
58+
animComposer.setCurrentAction("WalkOnce");
59+
----
60+
61+
==== Playing animation on part of body
62+
If you want to play an animation on part of the body, you need to create layers in the AnimComposer. You do this with the help of a SkinningControl, which should
63+
also have been created if your imported model had an armature.
64+
65+
[source,java]
66+
----
67+
SkinningControl sc = animatedModel.getControl(SkinningControl.class);
68+
animComposer.makeLayer("UpperBody", ArmatureMask.createMask(sc.getArmature(), "Spine"));
69+
animComposer.makeLayer("LowerBody", ArmatureMask.createMask(sc.getArmature(), "Hips"));
70+
// Play the animation
71+
animComposer.setCurrentAction("Walk", "UpperBody");
72+
----
73+
74+
== Further reading:
75+
Some forum topics that contain more information on the animation system:
76+
77+
* link:https://hub.jmonkeyengine.org/t/animation-action-is-complete/44577/2[animation-action-is-complete]
78+
* link:https://hub.jmonkeyengine.org/t/a-tip-for-animation-blending/44617/11[a-tip-for-animation-blending]
79+

docs/modules/core/pages/app/state/application_states.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ When you add several AppStates to one Application and activate them, their initi
7272

7373
JME3 comes with a BulletAppState that implements Physical behaviour (using the jBullet library). You, for example, could write an Artificial Intelligence AppState to control all your enemy units. Existing examples in the code base include:
7474

75-
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-bullet/src/common/java/com/jme3/bullet/BulletAppState.java[BulletAppState] controls physical behaviour in PhysicsControl'ed Spatials.
75+
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-jbullet/src/main/java/com/jme3/bullet/BulletAppState.java[BulletAppState] controls physical behaviour in PhysicsControl'ed Spatials.
7676
* link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/app/state/TestAppStates.java[TestAppStates.java] an example of a custom AppState
7777
** link:https://github.com/jMonkeyEngine/jmonkeyengine/blob/master/jme3-examples/src/main/java/jme3test/app/state/RootNodeState.java[RootNodeState.java]
7878

0 commit comments

Comments
 (0)