Git Product home page Git Product logo

talos's Introduction

Talos VFX

Website: https://talosvfx.com/ Discord Server: https://discord.gg/EQqYGcyMfr

Prebuilt binaries: Snapshot download 1.4.2-SNAPSHOT

alt text

Node based, open source VFX Editor with powerful interface and a ready to use libGDX runtime.

Screenshot

screenshot

Key Features

  • Node based particle engine and editor
  • Import (and batch import) from libgdx legacy files
  • Beam Renderer
  • Visual manipulation of shapes, sizes and positions
  • Custom pre-compiled java scriptwriting for value manipulation
  • Custom widget flavours allowing for same widget to look differently if it's just number or if number is angle

List of modules (nodes)

  • Particle module - main output hub for particle related properties (per particle)
  • Emitter module - main output hub for emitter related properties such as delay, emissions and such
  • System Input - list of inner system values that can be exposed and used by other modules (particle life, emitter life, time)
  • Global Values - dynamic list of values that can be assigned runtime, and used by modules
  • Mixer - Mixes values A & B with provided alpha ratio
  • Shape Range - outputs random position values On or Within provided shape (supports shape customisation, and morphing)
  • Number - Static number output
  • Position - Static position (x and y) output
  • Color - Static color (r,g,b) output
  • Gradient - Interpolates between given list of color values
  • Beam Renderer - renders custom mesh that can be mutated by Bezier tangents and with provided Noise offset. Per inner point.
  • Sprite Renderer - renders simple one texture (region) sprite
  • Flipbook - renders animated output based on provided sprite sheet
  • Random Range - generates random value in given range
  • Dynamic Random Range - interpolates between 2 number ranges using provided curve
  • Noise - outputs simplex noise, with modifiable frequency
  • Multi Input - has dynamic amount of inputs, chooses one randomly and set's it to output
  • Curve - Allows for user made curve with provided points, outputs single value
  • Interpolation - Same as Curve but instead of custom points it is procedural meaning it's a formula
  • Math Operations - Add, subtract, multiply, divide, sin, cos functions to be used with A and B values
  • Beam Position - Converts From and To position values into Rotation, Position & Size values that are used by Beam Renderer
  • Emitter Config - Wraps emitter configuration checkboxes into one UI.
  • Script (Java) - Modules with 5 inputs and 5 outputs that can take a Java code as string to act open this values.

talos's People

Contributors

artauthr avatar avanyaned avatar azakhary avatar bploeckelman avatar davstep avatar fgnm avatar ganeshbn avatar raeleus avatar tatev321 avatar theovier avatar thesenpie avatar tom-ski avatar wtflian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

talos's Issues

CurveWidget is leaking ShapeRenderer (shader and mesh)

A suggested fix would be to replace:

private ShapeRenderer shapeRenderer = new ShapeRenderer();

with

private ShapeRenderer shapeRenderer;

And adding method:

    @Override
    protected void setStage(Stage stage) {
        super.setStage(stage);

        if (stage != null && shapeRenderer == null) {
            shapeRenderer = new ShapeRenderer();
        }
        if (stage == null && shapeRenderer!= null) {
            shapeRenderer.dispose();
            shapeRenderer = null;
        }
    }

I didn't review any other widgets, but I suspect they might have similar issues - not disposing of resources, that could be fixed in the same way.

Crash to connect nodes

System:

  • Ubuntu 18.04 (Ubuntu 18.04.3 LTS)
  • Java: jdk1.8.0_144 (official from oracle)
  • Talos version 1.0.5

Steps:

  1. Add Emiter Node.
  2. Add Particule Node.
  3. Add Color Node.
  4. Connect Color Node to Particle Node at Drawable input.
  5. Talos Crashes with this traceback:
    java.lang.ClassCastException: com.rockbite.tools.talos.runtime.values.NumericalValue cannot be cast to com.rockbite.tools.talos.runtime.values.DrawableValue at com.rockbite.tools.talos.runtime.values.DrawableValue.set(DrawableValue.java:20) at com.rockbite.tools.talos.runtime.modules.Module.fetchInputSlotValue(Module.java:104) at com.rockbite.tools.talos.runtime.modules.ParticleModule.getDrawable(ParticleModule.java:85) at com.rockbite.tools.talos.runtime.Particle.update(Particle.java:80) at com.rockbite.tools.talos.runtime.ParticleEmitterInstance.updateParticles(ParticleEmitterInstance.java:163) at com.rockbite.tools.talos.runtime.ParticleEmitterInstance.update(ParticleEmitterInstance.java:142) at com.rockbite.tools.talos.runtime.ParticleEffectInstance.update(ParticleEffectInstance.java:60) at com.rockbite.tools.talos.editor.widgets.ui.PreviewWidget.act(PreviewWidget.java:255) at com.badlogic.gdx.scenes.scene2d.Group.act(Group.java:49) at com.badlogic.gdx.scenes.scene2d.Group.act(Group.java:49) at com.badlogic.gdx.scenes.scene2d.Group.act(Group.java:49) at com.badlogic.gdx.scenes.scene2d.Group.act(Group.java:49) at com.badlogic.gdx.scenes.scene2d.Group.act(Group.java:49) at com.badlogic.gdx.scenes.scene2d.Group.act(Group.java:49) at com.badlogic.gdx.scenes.scene2d.Stage.act(Stage.java:222) at com.badlogic.gdx.scenes.scene2d.Stage.act(Stage.java:186) at com.rockbite.tools.talos.TalosMain.render(TalosMain.java:120) at com.badlogic.gdx.backends.lwjgl.LwjglCanvas$3.run(LwjglCanvas.java:265) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Add Gradle import instructions to README.

Hello,

It is not clear how to import the Talos runtime into a libGDX Gradle project. This is typically listed in the README file of the project with other GDX related libraries. I was able to figure it out through some sleuthing, but I find it hard to believe that most people have tested your library beyond just using the editor. Thank you for your consideration.

Particle Rotation During Runtime

Hi there,

I want to rotate a complete ParticleEffectInstance dynamically by a certain degree during runtime in a libGDX program.
What would be the best way to achieve this?

Thanks

How to apply gravity to particle

Hi

Im unable to figure out how to apply gravity in the effect I am creating. I can see that there was a gravity property in Particle node some time ago, but now it has been removed. Also if I try importing libgdx legacy effect, the gravity settings are not being imported.

Could you please advice. Do you have any sample hot to do it.

Thank you very much.

Discord link in README and website homepage is broken

Also tested via Browserling to confirm I'm not IP-banned. No dice.

This invite may be expired, or you might not have permission to join.

Not sure there's much hope of it getting fixed on the website when its footer says copyright 2019 and has placeholder anchor links for the Instagram, Pinterest and Behance pages, but this repository looks alive enough.

black screen on mac

I launched the jar on macOS Catalina and it shows a black screen. Downloaded the repository and launched it through android studio and was able to trigger click events etc. but see only a black screen. I have many libgdx projects, the old particle editor and the demo vis-ui work on my macbook. Am I missing something?

Grouping of modules

Shift select modules
Selection, multi selection move
Selection copy
Deselection

Group background (name group)

Zoom and Text

Hello,

Zooming the main node display results in the text being unreadable. Characters can be distorted or completely missing depending on the zoom level. This is particularly challenging because the window does not seem to have a button to return to 100% zoom. I imagine this can be resolved with some sort of FreeType or Distance Field solution. Thanks for looking into this.

HTML5 Support

Hello,

It appears to me that Talos is not ready for HTML5 support (and also mobile support). Besides missing the typical gwt.xml files, the runtime project depends on Java AWT and other uncompilable classes. Please see the following:
https://github.com/rockbite/talos/blob/master/runtimes/talos-libgdx/src/com/talosvfx/talos/runtime/ScopePayload.java#L24
https://github.com/rockbite/talos/blob/master/runtimes/talos-libgdx/src/com/talosvfx/talos/runtime/script/ScriptCompiler.java#L24

Is this in the roadmap for the project? This is an absolute necessity if you want Talos to be considered as a full replacement for the vanilla particle system. Thank you.

Crash on MacOS

Hi, when I try to open Talos on my mac I get this error:

java -jar talos.1.2.0.jar
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.lwjgl.glfw.GLFW.glfwCreateWindow(GLFW.java:1842)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.createGlfwWindow(Lwjgl3Application.java:450)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.createWindow(Lwjgl3Application.java:394)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.createWindow(Lwjgl3Application.java:380)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.(Lwjgl3Application.java:108)
at com.talosvfx.talos.TalosLauncher.main(TalosLauncher.java:32)
Caused by: java.lang.IllegalStateException: GLFW windows may only be created on the main thread and that thread must be the first thread in the process. Please run the JVM with -XstartOnFirstThread. For offscreen rendering, make sure another window toolkit (e.g. AWT or JavaFX) is initialized before GLFW.
at org.lwjgl.glfw.EventLoop$OffScreen.(EventLoop.java:39)
... 6 more
AL lib: (EE) alc_cleanup: 1 device not closed

Failing to open new tab with same name

Repro:

  1. Have the shader.tsh file in different folder (different effect, different shader, same name)
  2. Open the first one in editor
  3. Open the second one in editor

Result: Two tabs with same shader effect
Expected: Two tabs with two different shader effects - each folder its own shader

Editor has very high GPU usage

My system:
iMac5k, Big Sur 11.2, Quad Core i7, AMD Radeon R9 M295X 4GB

How I start the editor:
java -XstartOnFirstThread -jar talos.1.2.0.jar

The Talos Editor has very GPU usage from the start. GPU usage above 90%. Even with no effect loaded.

If I click in other windows the GPU usage from the Talos editor goes down to under 20%. Clicking the Talos window again and GPU usage goes up.

The GPU usage is independent from the particle effect (empty start template, fire example, beam example) so it seems some editor components are driving GPU crazy when the window is active.

editor crashes on deleting some nodes

i'm using ubuntu. this issue exists from all the three versions i tried (1.4.1, 1.4.0, 1.2.0)
i open the fire example, i delete the emitter node and the software crashes with this in the console :

Exception in thread "main" java.lang.NullPointerException
        at com.talosvfx.talos.runtime.Particle.getY(Particle.java:140)
        at com.talosvfx.talos.runtime.render.drawables.TextureRegionDrawable.draw(TextureRegionDrawable.java:47)
        at com.talosvfx.talos.runtime.render.SpriteBatchParticleRenderer.renderParticle(SpriteBatchParticleRenderer.java:93)
        at com.talosvfx.talos.runtime.render.SpriteBatchParticleRenderer.render(SpriteBatchParticleRenderer.java:75)
        at com.talosvfx.talos.runtime.ParticleEffectInstance.render(ParticleEffectInstance.java:121)
        at com.talosvfx.talos.editor.widgets.ui.PreviewWidget.drawContent(PreviewWidget.java:324)
        at com.talosvfx.talos.editor.widgets.ui.ViewportWidget.draw(ViewportWidget.java:152)
        at com.badlogic.gdx.scenes.scene2d.Group.drawChildren(Group.java:124)
        at com.badlogic.gdx.scenes.scene2d.Group.draw(Group.java:58)
        at com.badlogic.gdx.scenes.scene2d.ui.WidgetGroup.draw(WidgetGroup.java:170)
        at com.badlogic.gdx.scenes.scene2d.ui.Table.draw(Table.java:126)
        at com.kotcrab.vis.ui.widget.VisSplitPane.draw(VisSplitPane.java:296)
        at com.badlogic.gdx.scenes.scene2d.Group.drawChildren(Group.java:124)
        at com.badlogic.gdx.scenes.scene2d.Group.draw(Group.java:58)
        at com.badlogic.gdx.scenes.scene2d.ui.WidgetGroup.draw(WidgetGroup.java:170)
        at com.badlogic.gdx.scenes.scene2d.ui.Table.draw(Table.java:126)
        at com.kotcrab.vis.ui.widget.VisSplitPane.draw(VisSplitPane.java:296)
        at com.badlogic.gdx.scenes.scene2d.Group.drawChildren(Group.java:124)
        at com.badlogic.gdx.scenes.scene2d.Group.draw(Group.java:58)
        at com.badlogic.gdx.scenes.scene2d.ui.WidgetGroup.draw(WidgetGroup.java:170)
        at com.badlogic.gdx.scenes.scene2d.ui.Table.draw(Table.java:126)
        at com.badlogic.gdx.scenes.scene2d.Group.drawChildren(Group.java:111)
        at com.badlogic.gdx.scenes.scene2d.Group.draw(Group.java:58)
        at com.badlogic.gdx.scenes.scene2d.Stage.draw(Stage.java:129)
        at com.talosvfx.talos.TalosMain.render(TalosMain.java:259)
        at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.update(Lwjgl3Window.java:403)
        at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.loop(Lwjgl3Application.java:143)
        at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.<init>(Lwjgl3Application.java:116)
        at com.talosvfx.talos.TalosLauncher.main(TalosLauncher.java:33)

application doesn't start

1.4.0
1.4.1

[LWJGL] Failed to load a library. Possible solutions:
        a) Add the directory that contains the shared library to -Djava.library.path or -Dorg.lwjgl.librarypath.
        b) Add the JAR that contains the shared library to the classpath.
[LWJGL] Enable debug mode with -Dorg.lwjgl.util.Debug=true for better diagnostics.
[LWJGL] Enable the SharedLibraryLoader debug mode with -Dorg.lwjgl.util.DebugLoader=true for better diagnostics.
Exception in thread "main" java.lang.UnsatisfiedLinkError: Failed to locate library: lwjgl.dll
        at org.lwjgl.system.Library.loadSystem(Library.java:164)
        at org.lwjgl.system.Library.loadSystem(Library.java:63)
        at org.lwjgl.system.Library.<clinit>(Library.java:51)
        at org.lwjgl.system.MemoryUtil.<clinit>(MemoryUtil.java:100)
        at org.lwjgl.system.Pointer$Default.<clinit>(Pointer.java:67)
        at org.lwjgl.system.Callback.<clinit>(Callback.java:40)
        at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.initializeGlfw(Lwjgl3Application.java:81)
        at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.<init>(Lwjgl3Application.java:91)
        at com.talosvfx.talos.TalosLauncher.main(TalosLauncher.java:33)

License

This project needs an open source license.

Rendering particles in Libgdx after export is extremely small

I followed the instructions at https://github.com/rockbite/talos/wiki/Libgdx-Runtime to import the generated particle effect into a Libgdx game. At first I thought I messed up the rendering because I couldn't see any particle effects at all, but I eventually found out that it was just extremely tiny. As a comparison, I imported the fire example into my game, and the fire effect rendered at the same size that the Talos editor would show it at Grid 30, which is basically barely visible. I have it currently rendering in its own batch.begin/end, so other rendering code shouldn't be getting involved.

The demo code at https://github.com/rockbite/talos/blob/master/runtimes/talos-libgdx/test/com/talosvfx/talos/runtime/test/TalosDemo.java uses a strange value for the Viewport. Clearly I'm missing something here, how should I properly configure SpriteBatchParticleRenderer?

Libgdx version is 1.9.14
Talos Libgdx Runtime version is 1.4.0

Dependency on com.github.jitpack:gradle-simple:1.0

Hi there,

I am using Maven and I noticed that the talos dependency itself

<dependency>
     <groupId>com.talosvfx</groupId>
      <artifactId>talos-libgdx</artifactId>
      <version>1.4.0</version>
</dependency>

has a dependency on com.github.jitpack:gradle-simple:1.0.

image

To me that seems strange as it seems to be an example gradle project.

I have not looked at the source code yet, but can someone comment on whether this dependency is in fact needed?

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.