<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.cloudmodding.com/oot/App:Z64anim/history?feed=atom</id>
		<title>App:Z64anim - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.cloudmodding.com/oot/App:Z64anim/history?feed=atom"/>
		<link rel="alternate" type="text/html" href="https://wiki.cloudmodding.com/oot/App:Z64anim/history"/>
		<updated>2026-04-16T21:18:36Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.cloudmodding.com/woot/index.php?title=App:Z64anim&amp;diff=1471&amp;oldid=prev</id>
		<title>CloudMax: CloudMax moved page Z64anim to App:Z64anim: Moved to proper namespace</title>
		<link rel="alternate" type="text/html" href="https://wiki.cloudmodding.com/woot/index.php?title=App:Z64anim&amp;diff=1471&amp;oldid=prev"/>
				<updated>2014-07-07T09:20:00Z</updated>
		
		<summary type="html">&lt;p&gt;CloudMax moved page &lt;a href=&quot;/oot/Z64anim&quot; class=&quot;mw-redirect&quot; title=&quot;Z64anim&quot;&gt;Z64anim&lt;/a&gt; to &lt;a href=&quot;/oot/App:Z64anim&quot; title=&quot;App:Z64anim&quot;&gt;App:Z64anim&lt;/a&gt;: Moved to proper namespace&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 09:20, 7 July 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>CloudMax</name></author>	</entry>

	<entry>
		<id>https://wiki.cloudmodding.com/woot/index.php?title=App:Z64anim&amp;diff=277&amp;oldid=prev</id>
		<title>Mzxrules: 1 revision</title>
		<link rel="alternate" type="text/html" href="https://wiki.cloudmodding.com/woot/index.php?title=App:Z64anim&amp;diff=277&amp;oldid=prev"/>
				<updated>2014-06-08T23:22:09Z</updated>
		
		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 23:22, 8 June 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Mzxrules</name></author>	</entry>

	<entry>
		<id>https://wiki.cloudmodding.com/woot/index.php?title=App:Z64anim&amp;diff=276&amp;oldid=prev</id>
		<title>Spinout at 07:53, 27 September 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.cloudmodding.com/woot/index.php?title=App:Z64anim&amp;diff=276&amp;oldid=prev"/>
				<updated>2011-09-27T07:53:38Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{lowercase title}}&lt;br /&gt;
{{ infobox software&lt;br /&gt;
| name = z64anim&lt;br /&gt;
| screenshot = [[Image:z64anim-stalfos.png|320px]]&lt;br /&gt;
| caption = ''z64anim console and viewing window''&lt;br /&gt;
| author = spinout&lt;br /&gt;
| operating system = Cross platform&lt;br /&gt;
| language = English&lt;br /&gt;
| programming language = C&lt;br /&gt;
| genre = CLI tool&lt;br /&gt;
| license = Open Source&lt;br /&gt;
| website = [https://bitbucket.org/ottehr/z64anim/ z64anim] on bitbucket.&lt;br /&gt;
| game = all (works with [[Animation Format|objects]])&lt;br /&gt;
}}&lt;br /&gt;
'''z64anim''' is a tool in development by [[User:spinout|spinout]] with the purpose of viewing and modifying an [[Animation_Format|animated object]]'s animation and skeleton. It uses SDL, GL, threads, [[libobj]], [[User:xdaniel|xdaniel]]'s [[OZMAV|libbadRDP]] and the required dependencies for these libraries - libpng and lz. In its current state, it has two windows: a viewing window, and a command-line console window. The console has many commands which control viewing and editing of animations. The window is used for display list, translation and rotation axis selection and manipulation on a more graphical level.&amp;lt;br&amp;gt;&lt;br /&gt;
On August 19, 2011, spinout put z64anim on bitbucket&amp;lt;sup&amp;gt;[https://bitbucket.org/ottehr/z64anim/changeset/b9ede3d78b7f]&amp;lt;/sup&amp;gt;, and there has been some development going on as of mid September 2011. All future binary and sources can be found [https://bitbucket.org/ottehr/z64anim/downloads here].&lt;br /&gt;
==Usage==&lt;br /&gt;
Before using:&lt;br /&gt;
*Be at least somewhat familiar with [[Animation Format|skeletons and animations]] - an understanding of the binary structure is not critical but an understanding of rotations used in animations and translation of children/next limbs is reccomended&lt;br /&gt;
*Make sure you have the latest version of z64anim&lt;br /&gt;
*Make sure you have your object ready to use. You could do some trickery with the -o and -s CMD arguments (see below) to load an object directly from ROM, but I do not recommend doing so and I am not completely sure if the saving routine will work as expected.&lt;br /&gt;
===Invoking z64anim===&lt;br /&gt;
z64anim can, optionally, be passed command line arguments. The last argument is to be an object containing [[Animation Format|Animations]]. The arguments before that can be:&lt;br /&gt;
;-G:Enable OpenGL ARB extensions in badrdp&lt;br /&gt;
;-o OFF:Read data from the input file starting at offset OFF (Default: 0)&lt;br /&gt;
;-s SIZ:Read SIZ bytes of data. (Default: OFF -&amp;gt; end)&lt;br /&gt;
;-b BASE:Set base address of data to BASE (Default: 0x06000000)&lt;br /&gt;
Example:&amp;lt;br&amp;gt;&lt;br /&gt;
 z64anim.exe object_sk2.zobj&lt;br /&gt;
Due to the fact that z64anim expects the last argument to be the object file itself, an object file can be dragged and dropped onto the application.&lt;br /&gt;
===Window controls===&lt;br /&gt;
'''Keyboard controls'''&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Key(s)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Action&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;w,s,a,d&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Move camera&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;q,e&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Change camera speed&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;r&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Reset camera&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;u,j&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Increase/decrease animation playback speed&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;h,k&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Change to next/previous animation&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;(space)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Pause/play animation&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;y,i&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Increase/decrease current animation/translation value&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;o,l&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Increase/decrease current animation index&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;(up arrow)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Select previous limb&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;(down arrow)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Select next limb&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;(right arrow)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Select parent limb&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;(left arrow)&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Select child limb&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;x&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Toggle x/y/z axis&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;v&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Toggle drawing of rotation guides&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;m&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Switch edit mode (display list/translation/rotation)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
'''Mouse Controls'''&amp;lt;br&amp;gt;&lt;br /&gt;
The mouse is used for camera rotation when the left mouse button is held and dragged, and display lists/editing axis (when visible) can be selected with a right click.&lt;br /&gt;
&lt;br /&gt;
===Console Commands===&lt;br /&gt;
====Basics====&lt;br /&gt;
These commands are always available, even when an object isn't loaded.&lt;br /&gt;
;help:Print all controls for console and viewing window.&lt;br /&gt;
;quit:Exit z64anim&lt;br /&gt;
;load F B A S:Load S bytes from file F at offset A as address B. If B, A, and S are ommited, it is assumed to load the entire file from base address 0x06000000 - which is what most objects use.&lt;br /&gt;
====Viewer Control====&lt;br /&gt;
These commands control the rendering animation in the rendering window.&lt;br /&gt;
;pause:Pause playing the current animation. Rendering window equivalent (toggle): (space)&lt;br /&gt;
;play:Resume playing the current animation. Rendering window equivalent (toggle): (space)&lt;br /&gt;
&amp;lt;!-- ;-dbg                Enable viewing of 'picker' on mouse click--&amp;gt;&lt;br /&gt;
;step:Step the current animation by one frame. Rendering window equivalent: 'n'&lt;br /&gt;
;hideaxis:Hide editor axis of each joint. Rendering window equivalent (toggle): 'v'&lt;br /&gt;
;showaxis:Show editor axis of each joint. Rendering window equivalent (toggle): 'v'&lt;br /&gt;
;select-disable:Disable selection of displaylists or editor axis&lt;br /&gt;
;select-enable:Enable selection of displaylists or editor axis&lt;br /&gt;
;scale V:Set the scale of the editor axis&lt;br /&gt;
&lt;br /&gt;
====Animation====&lt;br /&gt;
;anim-info:List information on the current animation&lt;br /&gt;
;anim-list:List all known animations&lt;br /&gt;
;anim-switch N:Switch the current animation to animation N.&lt;br /&gt;
;anim-next:Switch to the next animation. Rendering window equivalent: 'k' ('h' for previous in rendering window)&lt;br /&gt;
;anim-rotations:List all valid rotation indicies&lt;br /&gt;
&lt;br /&gt;
====Skeleton====&lt;br /&gt;
;skel-info:Display skeleton information&lt;br /&gt;
;skel-reset:Reset the entire skeleton to the state it was at when last opened or saved&lt;br /&gt;
&lt;br /&gt;
====Display Lists====&lt;br /&gt;
;dl-list:List all known display lists&lt;br /&gt;
;dl-switch N:Change current limb's display list to display list N&lt;br /&gt;
;dl-curr:Print current display list&lt;br /&gt;
;dl-export OBJ:Export the current DL as wavefront .obj&lt;br /&gt;
;dl-import OBJ SIZ:Import the wavefront .obj file in FILE at size SCALE. Todo: Allow user to specify what display list # or a new index.&lt;br /&gt;
&lt;br /&gt;
====Values====&lt;br /&gt;
;val-info:Print information on currently selected value&lt;br /&gt;
;val-set V:Set the current value (rotation, translation and display list #s)&lt;br /&gt;
;val-index I:Set the current rotation index (rotations only)&lt;br /&gt;
;val-series S I:Set the series of animated rotation values starting at S degrees increasing by I degrees each frame&lt;br /&gt;
;val-seriesr S I:Set the series of animated rotation values starting at S degrees increasing by I degrees for each frame for the first half of the frames, then decreasing by I back to S&lt;br /&gt;
&lt;br /&gt;
====Selection====&lt;br /&gt;
;axis A:Switch to axis A (either `x', `y' or `z'). Rendering window equivalent (toggle): 'x'&lt;br /&gt;
;rot:Switch to editing rotation. Rendering window equivalent (toggle): 'm'&lt;br /&gt;
;trans:Switch to editing translation. Rendering window equivalent (toggle): 'm'&lt;br /&gt;
;dlist:Switch to editing display list. Rendering window equivalent (toggle): 'm'&lt;br /&gt;
;child:Select the current limb's child, if possible. Rendering window equivalent: (right)&lt;br /&gt;
;parent:Select the current limb's parent, if possible. Rendering window equivalent: (left)&lt;br /&gt;
;next:Select the next limb, if possible. Rendering window equivalent: (up)&lt;br /&gt;
;previous:Select the previous limb, if possible. Rendering window equivalent: (down)&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
;save:Apply all changes made&lt;br /&gt;
;adopt N:Set the current limb's child to limb N&lt;br /&gt;
&lt;br /&gt;
====Planned====&lt;br /&gt;
I'm probably going to have to write a library which stores and describes binary data with local pointers to implement all of these commands.&lt;br /&gt;
;dl-export-all DIR:Export all DLs as wavefront .obj&lt;br /&gt;
;dl-scale S:Scale the current display list to scale S&lt;br /&gt;
;val-reset:Reset the current value&lt;br /&gt;
;add-dlist OFFSET: Add the display list at OFFSET to the list of known display lists&lt;br /&gt;
;anim-new: Create and select a new one-frame animation with no animated values.&lt;br /&gt;
;anim-setframes N:Make the animation an N framed animation (adding &amp;amp; removing frames as needed)&lt;br /&gt;
;anim-addtrack:Add a new animated list of values&lt;br /&gt;
;anim-rmtrack:Remove an animated list of values&lt;br /&gt;
;anim-addstill:Add a new still value&lt;br /&gt;
;anim-rmstill:Remove a still value&lt;br /&gt;
;skel-new:create a new skeleton with one limb&lt;br /&gt;
;addchild:Add a child limb&lt;br /&gt;
;rmchild:Remove the child limb and it's children/siblings (assuming they are not used elsewhere)&lt;br /&gt;
;popchild:Set the child limb to the child limb's sibling limb, destroy original child limb and it's children which are not used elsewhere.&lt;br /&gt;
;addnext:Add a next limb&lt;br /&gt;
;rmnext:Remove the next limb and it's children (assuming they are not used elsewhere)&lt;br /&gt;
All of these functions which modify how many members are in a hierarchy/skeleton must also fix animations.&lt;br /&gt;
&lt;br /&gt;
[[Category: Software]]&lt;/div&gt;</summary>
		<author><name>Spinout</name></author>	</entry>

	</feed>