DanielSWolf / rhubarb-lip-sync

Rhubarb Lip Sync is a command-line tool that automatically creates 2D mouth animation from voice recordings. You can use it for characters in computer games, in animated cartoons, or in any other project that requires animating mouths based on existing recordings.
Other
1.72k stars 208 forks source link

Generic error message in Rhubarb for Spine #34

Closed DanielSWolf closed 6 years ago

DanielSWolf commented 6 years ago

When Rhubarb Lip Sync for Spine is run from a JAR file (as opposed to a .class file), it fails to determine its binary directory. This results in the generic error message "Error performing lip sync for event ."

To fix this, a more robust may of determining the binary directory needs to be implemented.

Sergmarshall commented 6 years ago

Hello) I have a I have a problem java_bag Thanks for any help

DanielSWolf commented 6 years ago

@Sergmarshall: Please let me know what operating system and what exact version of Rhubarb you're using.

In addition, please do the following:

Sergmarshall commented 6 years ago

java.lang.UnsupportedOperationException at java.util.AbstractCollection.add(Unknown Source) at com.sun.javafx.collections.ObservableSetWrapper.add(ObservableSetWrapper.java:267) at com.rhubarb_lip_sync.rhubarb_for_spine.SpineJson.createOrUpdateAnimation(SpineJson.kt:142) at com.rhubarb_lip_sync.rhubarb_for_spine.AnimationFileModel.saveAnimation(AnimationFileModel.kt:96) at com.rhubarb_lip_sync.rhubarb_for_spine.AnimationFileModel.access$saveAnimation(AnimationFileModel.kt:15) at com.rhubarb_lip_sync.rhubarb_for_spine.AnimationFileModel$$special$$inlined$map$lambda$1.invoke(AnimationFileModel.kt:60) at com.rhubarb_lip_sync.rhubarb_for_spine.AnimationFileModel$$special$$inlined$map$lambda$1.invoke(AnimationFileModel.kt:15) at com.rhubarb_lip_sync.rhubarb_for_spine.AudioFileModel$startAnimation$wrapperTask$1$1.invoke(AudioFileModel.kt:155) at com.rhubarb_lip_sync.rhubarb_for_spine.AudioFileModel$startAnimation$wrapperTask$1$1.invoke(AudioFileModel.kt:17) at com.rhubarb_lip_sync.rhubarb_for_spine.ToolsKt$runAndWait$$inlined$withLock$lambda$1.run(tools.kt:59) at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177) at java.lang.Thread.run(Unknown Source)

Microsoft Windows [Version 10.0.14393] rhubarb-for-spine-1.7.1

DanielSWolf commented 6 years ago

I think I found the problem. If my understanding is correct, this error occurs if the JSON file doesn't contain at least one animation. As a quick workaround, create an empty dummy animation in Spine, re-export to JSON and try again.

Let me know if that fixes the problem. If so, I'll create a bugfix release.

Sergmarshall commented 6 years ago

I made some animations and everything is the same and with empty dummy animation

at java.util.AbstractCollection.add(Unknown Source) at com.sun.javafx.collections.ObservableSetWrapper.add(ObservableSetWrapper.java:267) at com.rhubarb_lip_sync.rhubarb_for_spine.SpineJson.createOrUpdateAnimation(SpineJson.kt:142) at com.rhubarb_lip_sync.rhubarb_for_spine.AnimationFileModel.saveAnimation(AnimationFileModel.kt:96) at com.rhubarb_lip_sync.rhubarb_for_spine.AnimationFileModel.access$saveAnimation(AnimationFileModel.kt:15) at com.rhubarb_lip_sync.rhubarb_for_spine.AnimationFileModel$$special$$inlined$map$lambda$1.invoke(AnimationFileModel.kt:60) at com.rhubarb_lip_sync.rhubarb_for_spine.AnimationFileModel$$special$$inlined$map$lambda$1.invoke(AnimationFileModel.kt:15) at com.rhubarb_lip_sync.rhubarb_for_spine.AudioFileModel$startAnimation$wrapperTask$1$1.invoke(AudioFileModel.kt:155) at com.rhubarb_lip_sync.rhubarb_for_spine.AudioFileModel$startAnimation$wrapperTask$1$1.invoke(AudioFileModel.kt:17) at com.rhubarb_lip_sync.rhubarb_for_spine.ToolsKt$runAndWait$$inlined$withLock$lambda$1.run(tools.kt:59) at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177) at java.lang.Thread.run(Unknown Source)

DanielSWolf commented 6 years ago

I'm afraid I can't reproduce the error you're getting. My guess is that there's either something unexpected in your JSON file, or your JVM behaves differently from mine.

Could you attach the Spine JSON file you're using, along with all images and sound files? Just create a ZIP file with the entire directory structure. This should help me reproduce the behavior you're getting.

Also, could you tell me the exact JVM version you're using? (Execute java -version)

johnnotron commented 6 years ago

Hi,

Getting same error / stack trace too. OSX 10.13.4 Spine 3.7.1.4 rhubarb-for-spine-1.7.1.jar java version "9.0.4" Java(TM) SE Runtime Environment (build 9.0.4+11) Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode) rhubarb_spine_test.zip

Thanks!

Apr 09, 2018 4:53:15 PM tornadofx.Stylesheet$Companion detectAndInstallUrlHandler INFO: Installing CSS url handler, since it was not picked up automatically WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by tornadofx.adapters.TornadoFXNormalTable$contentWidthField$2 (file:/Users/rich/Desktop/rhubarb_test/rhubarb-lip-sync-1.7.1-osx/extras/EsotericSoftwareSpine/rhubarb-for-spine-1.7.1.jar) to field javafx.scene.control.TableView.contentWidth WARNING: Please consider reporting this to the maintainers of tornadofx.adapters.TornadoFXNormalTable$contentWidthField$2 WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release objc[4406]: Class FIFinderSyncExtensionHost is implemented in both /System/Library/PrivateFrameworks/FinderKit.framework/Versions/A/FinderKit (0x7fffab6ccc90) and /System/Library/PrivateFrameworks/FileProvider.framework/OverrideBundles/FinderSyncCollaborationFileProviderOverride.bundle/Contents/MacOS/FinderSyncCollaborationFileProviderOverride (0x144edbcd8). One of the two will be used. Which one is undefined. java.lang.UnsupportedOperationException at java.base/java.util.AbstractCollection.add(AbstractCollection.java:267) at javafx.base/com.sun.javafx.collections.ObservableSetWrapper.add(ObservableSetWrapper.java:267) at com.rhubarb_lip_sync.rhubarb_for_spine.SpineJson.createOrUpdateAnimation(SpineJson.kt:142) at com.rhubarb_lip_sync.rhubarb_for_spine.AnimationFileModel.saveAnimation(AnimationFileModel.kt:96) at com.rhubarb_lip_sync.rhubarb_for_spine.AnimationFileModel.access$saveAnimation(AnimationFileModel.kt:15) at com.rhubarb_lip_sync.rhubarb_for_spine.AnimationFileModel$$special$$inlined$map$lambda$1.invoke(AnimationFileModel.kt:60) at com.rhubarb_lip_sync.rhubarb_for_spine.AnimationFileModel$$special$$inlined$map$lambda$1.invoke(AnimationFileModel.kt:15) at com.rhubarb_lip_sync.rhubarb_for_spine.AudioFileModel$startAnimation$wrapperTask$1$1.invoke(AudioFileModel.kt:155) at com.rhubarb_lip_sync.rhubarb_for_spine.AudioFileModel$startAnimation$wrapperTask$1$1.invoke(AudioFileModel.kt:17) at com.rhubarb_lip_sync.rhubarb_for_spine.ToolsKt$runAndWait$$inlined$withLock$lambda$1.run(tools.kt:59) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(PlatformImpl.java:418) at java.base/java.security.AccessController.doPrivileged(Native Method) at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:417) at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)

johnnotron commented 6 years ago

Update: It works if in Spine you add the dialog text to the String property of the event (in setup mode). I thought this was optional so had left it out..

DanielSWolf commented 6 years ago

Thank you for the detailed information! I'll fix this as soon as I find some time. And, yes, the dialog text should be completely optional!

DanielSWolf commented 6 years ago

I found the problem! It is a bug in my code (as expected). The real mystery was why it works on my machine. Turns out it's a bug in the programming language that would make it work in some cases, when really it should always have failed. I'll have a fix ASAP.

DanielSWolf commented 6 years ago

I believe I've fixed the issue. @Sergmarshall, @rich-earth: Please replace the JAR file in your Rhubarb installation with the JAR file contained within the attached ZIP file. Let me know whether that fixes your problems! If so, I'll make an official bugfix release.

rhubarb-for-spine-1.7.1.jar.zip

Sergmarshall commented 6 years ago

the plugin is working! thank you!

johnnotron commented 6 years ago

Thanks