<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.mutigeraffe.com/index.php?action=history&amp;feed=atom&amp;title=BlockyRenderer%3AAnimations</id>
	<title>BlockyRenderer:Animations - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mutigeraffe.com/index.php?action=history&amp;feed=atom&amp;title=BlockyRenderer%3AAnimations"/>
	<link rel="alternate" type="text/html" href="https://wiki.mutigeraffe.com/index.php?title=BlockyRenderer:Animations&amp;action=history"/>
	<updated>2026-10-21T06:33:41Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.mutigeraffe.com/index.php?title=BlockyRenderer:Animations&amp;diff=2481&amp;oldid=prev</id>
		<title>Maintenance script: BlockyRenderer wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.mutigeraffe.com/index.php?title=BlockyRenderer:Animations&amp;diff=2481&amp;oldid=prev"/>
		<updated>2026-10-20T21:29:19Z</updated>

		<summary type="html">&lt;p&gt;BlockyRenderer wiki&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The preview plays &amp;lt;code&amp;gt;.blockyanim&amp;lt;/code&amp;gt; animations on the matching model. It opens the same way as for a model: automatically, with the title bar button, &amp;lt;code&amp;gt;Ctrl+K V&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Ctrl+Shift+V&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:BlockyRenderer_Screenshot_02.png|800px|center|An animation playing on its model, with the timeline at the bottom]]&lt;br /&gt;
&lt;br /&gt;
== Which model is used ==&lt;br /&gt;
An animation file does not name a model. The extension searches for one in two ways:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Server JSON files&amp;#039;&amp;#039;&amp;#039; that name a model and an animation in the same file. It reads all &amp;lt;code&amp;gt;.json&amp;lt;/code&amp;gt; files under &amp;lt;code&amp;gt;Server/Models/&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Server/Item/Items/&amp;lt;/code&amp;gt;, for example &amp;lt;code&amp;gt;AnimationSets&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CustomModelAnimation&amp;lt;/code&amp;gt; entries. Player animations in item files (&amp;lt;code&amp;gt;FirstPerson&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ThirdPerson&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ThirdPersonFace&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ThirdPersonMoving&amp;lt;/code&amp;gt;) are skipped, because they move the player and not the item.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Folders&amp;#039;&amp;#039;&amp;#039;: models in the folder of the animation and in every folder above it, each also in a &amp;lt;code&amp;gt;Models&amp;lt;/code&amp;gt; subfolder.&lt;br /&gt;
&lt;br /&gt;
All candidates are then ranked:&lt;br /&gt;
# the share of animated nodes the model has (node names are compared),&lt;br /&gt;
# models named in a server JSON before the others,&lt;br /&gt;
# models closer to the animation before models further up,&lt;br /&gt;
# the shorter file name, which is usually the base model (&amp;lt;code&amp;gt;Player&amp;lt;/code&amp;gt; before &amp;lt;code&amp;gt;Player_With_Face&amp;lt;/code&amp;gt;),&lt;br /&gt;
# the path.&lt;br /&gt;
&lt;br /&gt;
The files under &amp;lt;code&amp;gt;Server/Models/&amp;lt;/code&amp;gt; are read first. The many item files are read in the background. If a clearly better model turns up later, the preview switches to it on its own, unless you chose a model by hand.&lt;br /&gt;
&lt;br /&gt;
== Model list ==&lt;br /&gt;
In the preview of an animation, &amp;#039;&amp;#039;Model&amp;#039;&amp;#039; at the top lists the candidates, the best first (up to 40). If a model does not have all animated nodes, the share is shown, for example &amp;lt;code&amp;gt;Frog/Models/Frog · 80%&amp;lt;/code&amp;gt;. While the search is still running, the list shows &amp;#039;&amp;#039;Searching…&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Other model…&amp;#039;&amp;#039; opens a quick pick with the matching models first and all other models of the workspace below. A model you choose by hand is stored for this animation in the workspace and used from then on.&lt;br /&gt;
&lt;br /&gt;
If no model is found, the preview shows &amp;#039;&amp;#039;No matching model was found for this animation.&amp;#039;&amp;#039; and a &amp;#039;&amp;#039;&amp;#039;Choose Model…&amp;#039;&amp;#039;&amp;#039; button.&lt;br /&gt;
&lt;br /&gt;
== Animation list ==&lt;br /&gt;
In the preview of a model, &amp;#039;&amp;#039;Animation&amp;#039;&amp;#039; lists the animations that belong to it:&lt;br /&gt;
* animations named together with the model in a server JSON,&lt;br /&gt;
* animations you paired with the model by hand,&lt;br /&gt;
* animations in the folder of the model and its subfolders. If the model lies in a &amp;lt;code&amp;gt;Models&amp;lt;/code&amp;gt; folder, the folder above it counts.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;(no animation)&amp;#039;&amp;#039; stops the animation. &amp;#039;&amp;#039;Other animation…&amp;#039;&amp;#039; (or &amp;#039;&amp;#039;More animations… (n)&amp;#039;&amp;#039; if the list is longer than 60) searches all animations of the workspace. If you pick an animation from outside the list, it is paired with this model, and this model also becomes the stored model for that animation.&lt;br /&gt;
&lt;br /&gt;
The Blocky Editor has no animation list.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
The timeline at the bottom appears when an animation is loaded.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Control !! What it does&lt;br /&gt;
|-&lt;br /&gt;
| ▶ / ⏸ || Plays and pauses.&lt;br /&gt;
|-&lt;br /&gt;
| Slider || Jumps to a point in time. Moving it pauses playback.&lt;br /&gt;
|-&lt;br /&gt;
| Time || Current frame, total frames and seconds, for example &amp;lt;code&amp;gt;61 / 120 · 1.03 s&amp;lt;/code&amp;gt;. Animations run at 60 frames per second.&lt;br /&gt;
|-&lt;br /&gt;
| Speed || &amp;lt;code&amp;gt;0.25×&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;0.5×&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1×&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;2×&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;Loop&amp;#039;&amp;#039; || Starts over at the end. When an animation is loaded, it is on if &amp;lt;code&amp;gt;holdLastKeyframe&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Keys ===&lt;br /&gt;
These keys work while the timeline is shown and the focus is in the 3D view:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key !! Action&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Space&amp;lt;/code&amp;gt; || Play or pause&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;←&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;→&amp;lt;/code&amp;gt; || One frame back or forward (pauses)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Shift+←&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;Shift+→&amp;lt;/code&amp;gt; || Ten frames back or forward&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Home&amp;lt;/code&amp;gt; || Jump to the start&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;End&amp;lt;/code&amp;gt; || Jump to the end (pauses)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Missing nodes ==&lt;br /&gt;
If the animation moves nodes the model does not have, the timeline shows &amp;lt;code&amp;gt;⚠ n of m nodes missing&amp;lt;/code&amp;gt;. Hover over it to see the names (up to 20). This is common in vanilla files: many animations have tracks for nodes that no longer exist in the model.&lt;br /&gt;
&lt;br /&gt;
== Text and 3D ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Cursor in the animation text&amp;#039;&amp;#039;&amp;#039;: the node of the track at the cursor is outlined in the 3D view. If several nodes share the name, the first one is shown.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Click in the 3D view&amp;#039;&amp;#039;&amp;#039;: the tracks of the clicked node are selected in the animation text, if it has any.&lt;br /&gt;
* Changes to the animation text apply at once, also unsaved ones. The playback position stays where it is.&lt;br /&gt;
&lt;br /&gt;
== What is played ==&lt;br /&gt;
All five tracks of the format are played: position, rotation, stretch, visibility and UV offset. A UV offset moves the texture of a shape, which is how flames run through a texture strip. Details are on [[BlockyRenderer:File Format|File Format]].&lt;br /&gt;
&lt;br /&gt;
{{BlockyRenderer Nav}}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>