Jump to content

need help about Abigail's animation


Recommended Posts

So I want Abigail to wear hats. A Wearer component and a relevant Wearable component is already added. I can give Abigail hats. But it won't show.

By comparing the difference I find out that Abigail's animation layer is losing a "HAT", aka."swap_hat" layer.

Now I open Spriter and added this layer, putting her flower as a placeholder.

But after running autocompiler.exe, things got totally messed up. What happened? Is this a bug or something?

Look at the edited gif and this after-compiler wrong one.

Notice that one thing is that Abigail's two eyes didn't hide/show properly, the timeline's information is lost.

Another thing is that while GIF looks right, the extra HAT layer won't show up in the game.

edited.thumb.gif.12c35a004e7fd121a8e30ba1c73b9ddd.gifwrong.thumb.gif.f530cf8b75d17a851cf048a747cebee1.gifscreenshot.thumb.png.8868216c8e13af5f7aee399d85ea06df.png

In the forum there have been many posts reporting different faulty animation using krane.exe, Spriter and autocompiler.exe, one may suppose that these tools are buggy, or just too low to offer full animation support. With that in mind, is there anything that explains how DST's animation works, or is there any better tool?

Edited by Mr.Rickzzs
Link to comment
Share on other sites

In case Spriter loses some detail during conversion, I also tried directly editing anim.bin(with another tool to convert it into xml) to add a layer like:

<Anims>
	<anim framerate="30" name="idlexxx" numframes="64" root="ghost">
		<frame h="388.578918457" w="217.832504272" x="7.93375396729" y="-306.589447021">
			<element frame="0" layername="hat" m_a="1.000000" m_b="0.000000" m_c="0.000000" m_d="1.000000" m_tx="-41.509434" m_ty="-500.000000" name="swap_hat" z_index="16"/>
            <element frame="0" layername="GHOST_HAT" m_a="1.0" m_b="0.0" m_c="0.0" m_d="1.0" m_tx="-0.449999988079" m_ty="-474.649993896" name="GHOST_HAT" z_index="15"/>
			<element frame="0" layername="Eyes" m_a="0.99942022562" m_b="-0.0307911802083" m_c="0.0307911802083" m_d="0.99942022562" m_tx="6.74987983704" m_ty="-401.750213623" name="ghost_eyes" z_index="16"/>
			<element frame="0" layername="Layer 13" m_a="1.0" m_b="0.0" m_c="0.0" m_d="1.0" m_tx="0.0" m_ty="19.9500007629" name="ghost_tail" z_index="17"/>
		</frame>

Yet it won't work.

Another attempt: considering the game may load its own anim.bin, I copied abigail.lua to override the old one. Still won't work.

 

But surely, someone has figured out a right way. Take abbyskinmod for example, it does contain a unique set of abigail skins. Yet it doesn't display properly in Spriter like this one, while being displayed corrently in game.

abigail_nature.png.8b8cd8da5f90358dc9a845ee86ff4aff.png

Link to comment
Share on other sites

After further investigation, I shall conclude that the conversion from scml file to anim.bin is incomplete due to lack of layername, and the timeline will be corrupted as z-index gets wrong.

Despite the one disfunction and the one bug, in Abigail's stategraph it is very strange that her idle animation is using player's idle animation rather than her own, which leads to the failure to show HAT layer since I didn't modify player's idle animation.

Given these clues, I succeeded in giving Abigail a hat and let she equip.

Now I would like to say that Spriter is such a terrible software that I'd like to learn other way to make animation file, especially Adobe Animation that KLei uses. But given no API or document, it is really hard for modders to fuifil their ambitions.

  • Like 1
Link to comment
Share on other sites

Update: another problem happens to the interval between frames. original:33ms/30.30fps, compiled: 25ms/40fps. This leads to glitches in position.

Look at how Abigail's body keeps wobbling slightly away from the hat.

1.gif.0f486d797721f5f0705004f3d2a3193e.gif

2.gif

As I don't know anything about "scml.exe", the frame rate is unchangable. But it is a question: why DST uses 30fps anim, while mods use 40fps???

Edited by Mr.Rickzzs
Link to comment
Share on other sites

Finally solved this problem again. The clue is from https://github.com/daviscook477/kparser

It is said that Klei animation is different from Spriter in that Klei disallows volatile pivot position bewteen frames and sprites. But actually Klei's animation does support that. The autocompiler.exe, however, will have mistakes during calculation.

What's worse, every cycle I experimentally do a compile-decompile operation, the mistake accumulates.

Just tried manually adjusting each frame of sprite to share the same pivot.

Below is a correct flower-change animation:

flower-change.gif.3726319dbe43cf6b15a3243d679f2086.gif

  • Like 1
  • Big Ups 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
  • Create New...