Loving your plugin a HUGE lot so far. Its much better than the standard animation editor.
Just, uhh, having some troubles.
So, I used animation:Play(true) hoping it would break the parts created for the animtaion but thats clearly not happening. I also used animation.Completed:Destroy(), hoping to achieve a similar effect, but to no success.
Can I play the animation on an already exisiting rig? That way I could skip the deletion all together.
Thanks for making such an awesome plugin tho
EDIT: Now I understand it. The :Play(true) destroys the animation, not the rig. Instead, you have to wait for the animation to end and then :Destroy(false) it. Still, I can’t figure out how to animate a rig instead of making one
Also a recomendation: Add function details to the renderer functions by adding comments right above them
Essentially, you provide the Visulie data, where you want to play it, as well as the rig you want to play it on. If your rig has multiple distinct sections, you load it as:
local Animation = Visulie.loadAnimation(data, origin, {RigPart1, RigPart2})
But I’m assuming (from the video provided) that you’re animating a hammer, which is contained under a model. In which case, something like this should work:
local Animation = Visulie.loadAnimation(data, origin, {HammerModel})
I dont really know any of the terminology but I assume that by “Constructor” you mean the comment under the function? It has to be above the function in order to be displayed in code snippets
Constructor basically means something that “creates” something. new() and loadAnimation() are constructors because they “create” an animation object that you can interact with. Instance.new() is a constructor, because it creates an instance. A function like math.min() is not a constructor, because it’s not creating anything.
The comments are there to try to explain what the function itself does, which I hope is clear enough for users to understand!
I’m just now seeing this, and the improvement on the plugin as a whole AND the ability to update old modules to the newer version makes me super happy.
There is however a single issue I’m having with Models inside the animation. Anything outside the model is correctly put in whatever CFrame position it’s scripted to do, but Models always default to 0,0,0.
Example video, it’s set origin is the green part, and 0,0,0 is the red part.
Here’s the old module and updated module if that’s necessary. BothVersions.rbxm (4.5 KB)
It seems like I forgot to mark WorldPivot as a relative value, causing it to not be updated correctly! The issue should be fixed in the new Visulie Renderer (make sure to replace the old module!). Let me know if there is still a problem.
Visulie 1.1.5
Bug Fixes
Visulie Renderer version 0.x.x now has correct version checking
Like I’ve said OFTEN before, this plugin is absolute
However there are some things that could work more uhh, smoothly? Which is why I’ll post some suggestions here. I’ll add/remove some as I discover new things or you actually add some of these :3
Suggestions
Add multi-selection: Its a pain to have to animate every single child's transparency when working with larger anounts of parts. (or just add union support >:( )
Keyframe optimisation: self explanatory. Make it so that practically un-animated properties can get their tracks removed (optimised) using the press of a singular button :) Bossman said this has already been considered (w.i.p.)
List of things that have changed / that have been considered since I made the list:
Proper window scaling (fixed/added)
Union support (technical issues, can't be added)
Replace functions with methods (suggestion wasn't a real suggestion after all)
PascalCase instead of camelCase (camelCase is the norm, I was wrong once more)
Code snippet support (somewhat added, a lot better than before)
Documentation (already present)
Animation priority (won't be added, as it is not really needed. Instead, handle the playing animations by yourself)
Thats enough yapping from me :)
I really enjoy using this plugin and using it has been really fun. Thanks for this awesome resource!
Also a personal note: As a fellow developer I know that these suggestions are just… annoying. Like I understand that this WILL take time, so just know that I don’t want to pressure you into doing all of this in like a day. They are suggestions, not commands
When adding a rig, Parts get not only their own properties, but also those of all of their descendants and siblings.
You can see that multiple parts have multiple CFrame properties as displayed in this video.
Never seen this before, maybe the latest update bugged it?
If this is a bug and not me messing up it requires immediate fixing because it makes Visulie unusable
Additional Debug info:
The 100 different properties are displayed even if not a single object is selected. Selecting objects ADDS the objects’ property until it is swapped away from again
Only happens when inserting large rigs (many parts)
Is unaffected by the part names
Has nothing to do with the present UIs
Another thing to take note of: Pressing “Select all keyframes” in the prompt menu only selects those that belong to the selected Part, implying that the plugin knows which it should show.
I’ve considered that, but, ultimately, due to the nature of the plugin, this cannot work. You can’t instantiate unions during runtime without incurring a large performance overhead, as well as the fact that we cannot know what operations a union has completed. I can “store” union data as an instance under the script, however, that defeats the purpose of being strictly data-driven.
There is documentation inside the Visulie Renderer module. Roblox simply has not yet added support for function description inside the function. However, I am working on this. I have changed this in the new version, though. Take a look at this feature request:
Requiring the Visulie Renderer returns a library. Libraries in Roblox (as well as in Lua itself) have members in “camelCase”. Take a look at the math, Instance, or string libraries. Instance.new(), Instance.fromExisting(), math.max(). It’s actually more consistent to use the dot instead of colon operator in this circumstance.
TweenService only uses a colon to define Tween objects because TweenService is actually an object, not a library. You invoke object methods with colons, and library members with dots. Same thing goes with “PascalCase”. “PascalCase” for object methods, “camelCase” for library members.
I loosely follow the Luau Style Guide, which also uses .new() and not :new().
Animation priorities were considered in the development of this plugin, however, animation priority is more or less a band-aid solution for bad code structure. You don’t need to play animations over another. Just stop playing the previous animation and start playing the new animation on the same rig. Visulie already does that for you with loadAnimation, which overrides any previously playing animation in favor of the new one.
I don’t use TweenService at all. All the easing is done using a native implementation of different easing styles.
No, don’t feel like it’s annoying! I also use this plugin myself, so anything that can boost your workflow may also boost mine.
Awesome, thanks for the explanations and everything. They actually widened my knowledge of scripting a lot.
I updated the suggestions list accordingly. (Should also prevent suggestion flooding in here in the future)
Yeah, but it doesn’t really have any real information on how to even create / load an animation.
Furthermore, the documentation goes beyond just scripting. For example, the renderer itself should be explained in a documentation. The functions it provides included.
Maybe I’ll make a nicely formatted documentation for you tomorrow. If I do I’ll dm it to you.
I don’t understand what you aim to achieve by putting descriptions inside of functions but there are already ways to add nice and responsive function descriptions.
thx :3
thx :3
Overall a huge thank you again that you actually spent your time on working on this (especially so quickly). If I were you, it would have taken atleast a month
This issue has been around since the worldpivot bug fix.
Instead of moving the parts, they get launched into orbit with an always-rising position.
The video shows how the 2 keyframes both have their CFrame-Value set to the same thing, but the actual animated model moves to uhh… valhalla or something, as can be seen in the properties.
WorldPivot now renders properly inside the editor. However, one WorldPivot keyframe must exist to function properly! This is because Roblox automatically updates WorldPivot if any descendants change. Having at least one keyframe present ensures that the pivot stays constant!
Fixed similar WorldPivot issues in the Visulie Renderer
Clearing keyframes using selections no longer cause rendering to error
Still doesnt work tho. It doesn’t move an infinite amount anymore but you still can not move it to for e.g. the origin. For me, the models just move to about 0,-253,0 so basically 0, -Y, 0.
I also feel like moving parts is easier.
Edit;
Yep just checked again. Im not experiencing any issues when using normal parts. its just models
also i updated the suggestions list (+add mutli-selection)
found another one
bug report 3
export button is grayed out for no reason at all when trying to save a project