<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.frictionalgames.com/page?action=history&amp;feed=atom&amp;title=HPL3%2FSOMA%2FModeling%2FExporting_Animations</id>
	<title>HPL3/SOMA/Modeling/Exporting Animations - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.frictionalgames.com/page?action=history&amp;feed=atom&amp;title=HPL3%2FSOMA%2FModeling%2FExporting_Animations"/>
	<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Modeling/Exporting_Animations&amp;action=history"/>
	<updated>2026-10-04T03:47:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Modeling/Exporting_Animations&amp;diff=7335&amp;oldid=prev</id>
		<title>TiMan: Add a SOMA-file-verified animation export guide covering hierarchy compatibility, source formats, cache generation, first-success testing, and troubleshooting.</title>
		<link rel="alternate" type="text/html" href="https://wiki.frictionalgames.com/page?title=HPL3/SOMA/Modeling/Exporting_Animations&amp;diff=7335&amp;oldid=prev"/>
		<updated>2026-10-02T17:16:50Z</updated>

		<summary type="html">&lt;p&gt;Add a SOMA-file-verified animation export guide covering hierarchy compatibility, source formats, cache generation, first-success testing, and troubleshooting.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Exporting an animation''' creates a source clip that SOMA can register on an entity. SOMA's shipped entities use &amp;lt;code&amp;gt;.dae_anim&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.fbx&amp;lt;/code&amp;gt; animation sources; the engine generates &amp;lt;code&amp;gt;.anm&amp;lt;/code&amp;gt; cache files from supported sources.&lt;br /&gt;
&lt;br /&gt;
This guide describes requirements visible in SOMA's shipped files and executables. Exact menu names and exporter options depend on the 3D application and exporter version.&lt;br /&gt;
&lt;br /&gt;
== Start from the entity mesh ==&lt;br /&gt;
&lt;br /&gt;
Use the same production rig or animated node hierarchy used to export the entity mesh.&lt;br /&gt;
&lt;br /&gt;
* Keep node and bone names stable. Exported animation channels target names such as &amp;lt;code&amp;gt;joint1/matrix&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;ball/translate.Y&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Keep hierarchy changes deliberate. SOMA reports a mismatch when the skeleton in the mesh differs from the skeleton saved in the entity.&lt;br /&gt;
* Keep the mesh and clips on a consistent scale convention. The installed &amp;lt;code&amp;gt;.dae_anim&amp;lt;/code&amp;gt; files carry unit metadata with several labels and factors, so the label alone is not a reliable project rule; verify the resulting movement against the imported mesh.&lt;br /&gt;
* Use an axis configuration known to work for that asset pipeline. Of 876 installed &amp;lt;code&amp;gt;.dae_anim&amp;lt;/code&amp;gt; files, 869 declare &amp;lt;code&amp;gt;Y_UP&amp;lt;/code&amp;gt; and seven declare &amp;lt;code&amp;gt;Z_UP&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Ensure every skinned vertex has a valid bone assignment and no more than four bone influences. SOMA contains explicit diagnostics for both failures.&lt;br /&gt;
&lt;br /&gt;
== Prepare one clip per action ==&lt;br /&gt;
&lt;br /&gt;
Export separate source files for independently selectable actions such as &amp;lt;code&amp;gt;idle&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;close&amp;lt;/code&amp;gt;, or a transition between two poses.&lt;br /&gt;
&lt;br /&gt;
Before export:&lt;br /&gt;
&lt;br /&gt;
# Set the intended start and end of the clip.&lt;br /&gt;
# Remove unrelated animation takes or actions from the export selection.&lt;br /&gt;
# Include the bones or animated nodes needed by the entity.&lt;br /&gt;
# Preserve the bind/rest relationship expected by the mesh.&lt;br /&gt;
# Decide whether the clip should loop. For a loop, compare the first and last poses and remove an unintended visible jump.&lt;br /&gt;
# Export to the final mod-relative animation directory.&lt;br /&gt;
&lt;br /&gt;
Do not bake sounds, particles, or gameplay callbacks into assumptions about the source format. SOMA stores those as events in the entity's animation registration.&lt;br /&gt;
&lt;br /&gt;
== Choose a source format ==&lt;br /&gt;
&lt;br /&gt;
=== Collada animation source ===&lt;br /&gt;
&lt;br /&gt;
SOMA ships 876 &amp;lt;code&amp;gt;.dae_anim&amp;lt;/code&amp;gt; files. Each is a Collada XML document and every inspected file contains at least one animation channel. The sources contain between 1 and 487 channels, targeting matrices, visibility, rotation, translation, and scale.&lt;br /&gt;
&lt;br /&gt;
The extension distinguishes an animation source from a normal &amp;lt;code&amp;gt;.dae&amp;lt;/code&amp;gt; mesh file, but shipped &amp;lt;code&amp;gt;.dae_anim&amp;lt;/code&amp;gt; files can still contain geometry, materials, controllers, and scene data in addition to animation channels.&lt;br /&gt;
&lt;br /&gt;
Seventy-one shipped &amp;lt;code&amp;gt;.dae_anim&amp;lt;/code&amp;gt; files retain explicit OpenCOLLADA export-option comments. All 71 record animation and joint/skin export as enabled. They do not use one universal sampling setting: 15 record sampling enabled and 56 disabled. Likewise, static-curve removal varies. These values show that one copied exporter preset is not valid for every shipped clip.&lt;br /&gt;
&lt;br /&gt;
=== FBX animation source ===&lt;br /&gt;
&lt;br /&gt;
SOMA entities contain 110 registrations referencing &amp;lt;code&amp;gt;.fbx&amp;lt;/code&amp;gt; animation files. This proves that the shipped pipeline uses FBX clips, but not that every modern FBX version or exporter setting is compatible with SOMA's older importer. Test a minimal clip before committing to a production pipeline.&lt;br /&gt;
&lt;br /&gt;
== Generate and inspect the cache ==&lt;br /&gt;
&lt;br /&gt;
Place the source file in its final resource directory, then load it through the Model Editor or an entity that references it. SOMA uses same-stem &amp;lt;code&amp;gt;.anm&amp;lt;/code&amp;gt; files as compiled animation data.&lt;br /&gt;
&lt;br /&gt;
Examples from the installed game include:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
shower_curtain_open.fbx  → shower_curtain_open.anm&lt;br /&gt;
ventilation_cluster_spin.dae_anim → ventilation_cluster_spin.anm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do not hand-edit the binary &amp;lt;code&amp;gt;.anm&amp;lt;/code&amp;gt;. Re-export the source and let the engine/tool pipeline refresh generated data. SOMA reports when an animation source cannot be found or compiled.&lt;br /&gt;
&lt;br /&gt;
== First-success export test ==&lt;br /&gt;
&lt;br /&gt;
# Export a short clip that moves one clearly identifiable bone or node.&lt;br /&gt;
# Put it beside the target entity or in that entity's animation subdirectory.&lt;br /&gt;
# Add it to the entity with a unique name, &amp;lt;code&amp;gt;Speed=1&amp;lt;/code&amp;gt;, and no events or transitions.&lt;br /&gt;
# Preview the clip and enable skeleton display.&lt;br /&gt;
# Confirm the expected node moves, the mesh keeps its scale, and the start/end frames are correct.&lt;br /&gt;
# Save and reopen the entity, then play the registered name in a test map.&lt;br /&gt;
# Only after this succeeds, export the remaining clips and add events or transitions.&lt;br /&gt;
&lt;br /&gt;
The shipped &amp;lt;code&amp;gt;ventilation_cluster_spin.dae_anim&amp;lt;/code&amp;gt; is a useful structural example: it declares ten channels targeting &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; and eight joint matrices plus root visibility, and its entity registers the clip on the &amp;lt;code&amp;gt;Default&amp;lt;/code&amp;gt; layer with a speed of &amp;lt;code&amp;gt;1.2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
* '''The clip cannot be found:''' verify the exported file path, extension, filename case, and &amp;lt;code&amp;gt;resources.cfg&amp;lt;/code&amp;gt; coverage.&lt;br /&gt;
* '''Nothing moves:''' confirm the source contains animation channels and that their target names exist in the entity mesh hierarchy.&lt;br /&gt;
* '''The mesh scales or offsets unexpectedly:''' compare mesh and animation unit metadata, axis settings, root transforms, and bind/rest setup.&lt;br /&gt;
* '''Only part of a skinned mesh follows:''' check for unweighted vertices and excessive bone influences; SOMA explicitly diagnoses both.&lt;br /&gt;
* '''The entity reports a skeleton mismatch:''' reimport the mesh into the entity and export the animation from the matching hierarchy.&lt;br /&gt;
* '''A loop jumps:''' inspect the first and last poses and the intended playback range in the source application.&lt;br /&gt;
* '''Old motion persists after export:''' reload the entity and refresh the generated &amp;lt;code&amp;gt;.anm&amp;lt;/code&amp;gt; cache.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[HPL3/SOMA/Animation/Animation Overview|Animation Overview]]&lt;br /&gt;
* [[HPL3/SOMA/Modeling/Importing Animations|Importing Animations]]&lt;br /&gt;
* [[HPL3/SOMA/Modeling/Exporting Models|Exporting Models]]&lt;br /&gt;
* [[HPL3/Blender HPL3 export plugin|Blender HPL3 export plugin]]&lt;br /&gt;
&lt;br /&gt;
[[Category:English]]&lt;/div&gt;</summary>
		<author><name>TiMan</name></author>
		
	</entry>
</feed>