What are you showing here with the villain rig screenshot @aFalcon? Is that a blender-like rig in Babylon? And editable directly in Babylon?
ON POINT @bigrig!
Itās blender. yes,
GOAL: animation~migration, anm MORE IN BABYLON, less in Blender.
We have rigs, and Widgits.
We RECORD movement into POSROTs for mesh
let POSROT = {pos:{},rot:{},meta:{}}
Converting that back into keyframeā¦ for bones, would be a NEAT TRICK!
Tried last year (or 2) - and the two are DIFFERENT SYNTAX. But probably user error.
BONE ANIMATIONS
Seems to need aTRANSLATION~LAYER.
From POSROTS to beginAnimation.
I_donāt_know_how_to_do_that. Anyone? Searching so longā¦
KeyFrameFactory() - takes a POSROT-Array of BONES.
keyFrameFactory ({bones:[pos:{},rot:{}]})
Somehow translates into key framesā¦
No doubt.
Animating in BABYLON (pose KeyFrame) feature, smooths export process!
Bet DK showed BEST~PRACTICE~BONE~ANIMATIONS, in runningBot.
Iāll look there. Scheduled: episode 2.
- Extend MESH EDIT workflow loop (widgets/posrots) to BONES (and a couple other things).
Have you done BONE ANIMATIONS in BABYLON?
Do you search for similar workflow?
Its gonna be great.
SIMPLICITY - PRINCIPLE.
We have to TRAVEL~LIGHT.
Else weāll not pass the APP~JUNGLE (to production).
The 3DPipeline is too long. Must conserve energy on every step.
Make many ANIMATION~SIMPLIFICATIONS.
: )
@Deltakosh thank you.
You can see my challenge to be BRIEF. Iām working on it! : )
UPDATE: In upcoming WEB~CINEMATIC, there will be BUGZ:
Next year, ALSO an attempt at SKELETON~SEQUENCING, with a deep~dive into shaders.
And a way to āmake it easy for folks.ā
Then, I might be out of time.
Thanks again,
Regarding rigs/bones:
My thinking has been that itās too complex for an average person to manipulate bones/rigs. So, Iāve been approaching it as a matter of sequencing together and blending pre-recorded keyframe clips. Of particular interest to me is to see if itās possible to use Webcam for rudimentary MoCap, which could be used to allow an average person to sequence animations naturally. I think thereās some good promise here. See: https://twitter.com/benrigby/status/1182768926171783169.
I thought I had a really great idea a couple of months ago, but it didnāt pan out (yet). My thought was to download the keyframe data from Mixamo animations and to save it in an animation library. eg: idle.animdata.json; jump.animdata.json. And then to apply that animation data file to any model that used a Mixamo rig (since all the rigs are the same). The effect would be that you could use Mixamo/Fuse to make 1000s of characters - and the animation could then be added with a single line of code.
It didnāt quite work out. See:
But parts of the mesh are actually animating correctly! So, maybe some promise here. More work needed.
Awesome! Respondingā¦
You are a GOOD COMMUNICATOR.
LIKE - all of those concepts.
Thanks for those LINKS!
: )
Yes that! I have done that! Really. It is possible (or something similar). Or maybe not! : )
Here is what I use:
let ANM = {pos:{},rot:{},meta:{}}
Then, run that through an animation~engine.
Kinda like COMPILING ANMS at RUNTIME.
Similar to āclipsā but different, as we use FRAMEZ and SEQZ
- in factoryPatterns() (also config pattern). Looks like this.
Pseudo-Code:
LOOP, SEQ[n], FRAME[n], ANMZ[n];
- beginAnimation()
(sorry if Iām on a tangent, here goesā¦)
PRINCIPLE - keep everything as simple as possible, and slowly scale up.
So, for BONE-ANIMATIONS, by design, CARTOONY-BONES! : )
: )
Oh you got that working!?
Thatās great.
My first effort was to loop through the animation matrix - applying position/rotation to the bones (was using matrix data exported from Blender: https://bjs-playground.s3.amazonaws.com/anim.idle.justdata.json). I think that sounds very similar to your approach above (I didnāt get it working thoughā¦ ended up with mangled characters).
Yes. Similar. Very cool.
Difference is no matrix math. Though I LIKE.
ANMS saved in JSON~SCRIPT.
BTW: I only animate MESH, not BONE (yet).
POSSIBLE-SIMPLIFICATION (in what to save):
Save ONLY two Numbers if you can INTERPOLATE.
xpos:{start:10, end:100}
Iāll dm.
: )
MAJOR~BREAKTHROUGH:
CINEMATIC - FFWD and SLOWMO - with very simple code:
nx.RUNTIME=1; //RUNTIME, FFWD-SLOMO-confederate-.
EXAMPLES:
nx.RUNTIME = 0.1 //FFWD-.
nx.RUNTIME = 2; //SLOWMO-.
How?
{ ā¦ duration:8000*nx.RUNTIME,easing:āswingā }
RunTime~DISRUPTOR pattern!
I am so impressed with what you guys are doing!
Last Spring I taught a course on Real-time CGI using the Unity game engine. The goal was to create cinematic shorts using Unity.
I would so much rather do this with Babylon!
Looking forward to your release in 2020 @aFalcon!
Thank you for your kind words @drburton!
[DR in the house]. Do you have a link to program/projects?
Sounds gr8. Good to see you again. DR.B. : )
TLDR; Here is the 1st planetoid:
At about 73% to production.
The World is a āSTAGEā.
GOAL:
every student a world of their own making, to build up any Hero Journey they IMAGINE.
Very happy to collaborate. DM is open. : )
Many concepts cataloged, will compile, and release ALL - 2020.
Please USE CONCEPTS, anyone, SHARE~BACK variations.
To build 3DCollages (or not).
[NBD~License, is CC0+MIT, no warranty]. No big deal.
Talkin to DOC.BABYLON. : )
Ok so now the good stuff!
Very SURPRISING THINGS! All over the place.
āTreasure Everywhere!ā ~ Calvin & Hobbes.
WEB CINEMATICS is endlessly~FASCINATING!!!
As you know. Check it outā¦
NOTES:
-
FFWD and SLOMO (flags), CRITICAL to change RUNTIME (speed) in DEVELOPMENT.
-
FFWD to SKIPTO, edit any FRAME, then SLOMO to really SEE a glitch, in a long SEQUENCE.
-
extremely important concept for TIME-TO-PRODUCTION metric.
-
It avoids two massive problems, either: āstate-machineā or SEQUENCE api overhead (spaghetti).
-
We need a REALLY FAST ANM PIPELINE for this to work. Often, ANM DEV too slow!
-
-
BIG UX improvement. We were Mixing TXT and SEQUENCES wrong. Totally wrong.
- Notice, it is MUCH BETTER, to pause the MOVIE, show TXT/SCROLL, then resume play.
- that came from this:
PRINCIPLE: Mix the Medias. Allāuvāem. Mix all that mixes. Why? Surprises. Exactly that. : )
-
called one concept FREEZEFRAMES. When trying to be cool, like day~time~cartoons!
-
different in ways like: mix in modern culture and emulate SMS. That.
-
plenty of room for clever things. We look at Twitter, TikTok, alluvtheabove.
-
cool new things. new verticals.
Sorry so LONG. Honestly, endless. : )
- PRECISION ~ CINEMATICS.
It is about PRECISION. Attaining it and Crafting it. Over and over. Faster and faster.
TWO PRECISIONS (of the MANY that you know):
- FIRST to BUILD or PRACTICE the ABILITY, just to get to PRECISION (attaining it).
- Then, a DEEPDIVE into creative~flow to wrestle~back a VISION of the ANM PRECISELY.
Deeply Gratifying.
Movie Cinematographers do that - and that is what makes web cinematics so fascinating.
Where the code bridges into ART - go there. : )
- Documenting all *that* ABSTRACT PATTERN and PROCESS stuff . As the pipeline plays out.
- All year, "building tools", "building movie", back and forth - doc the PROCESS.
- To help U get there 2.
Exhausting. And rewarding. It works. Will share~back. Yes. : )
GOAL: teach web cinematics!
@drburton - always happy to share code for your projects. NBD.
: )
Sounds like great progress @aFalcon. Cool re: slomo/ffwd.
My Dfilm2.0 builder is coming along also. Have got 2 of the 7 build phases complete. They are: World, Camera, Action, Characters, Dialog, Music, Send. To simplify choices for end-user, I decided to bake a lot of functionality into āWorldā like lighting, skyboxesā¦ Will post a screencapture soon. Itās really coming together!
Yeah man!
Listeningā¦
2 of 7 build phases!!!
That is gr8. : )
NICE build phases cool!
LIKE your naming~convention.
āCHARACTERSā:
[pls use, aok, nbd, idk, btw: always]. : )
My SCREENPLAY SCRIPT METHOD calls them: HERO, FOE, ACTOR.
For Design~Principle of SHORT~TOKENS.
Because laterā¦ need the DENSITY.
As you know.
āDialogā
- condensed down to TXT (SHORT~TOKEN).
- then broke that into subsets of BOTH: 2D & 3DTXT, HYBRIDUI.
Merry Xmas! Happy Hanuka! Kwanzaa! Etcetera!
Cool stuff in little boxes. : )
āMusicā, called it SONICS. For different Design~Principle:
- includes ACTOR mp3ās. And SCENE~SONICS. Sonics is a unique~token for All Sounds.
TLDR;
Custom extensible~naming~mechanisms, and why they are important for cinematics.
hardstop
āSendā??? - What, what, what? That is NEW!
SEND WHAT?
You HINT a TRICK?
āBakingā:
- I wish I could bake. Not baking. Probably need to.
Have a trick for LIGHTING. Still near 60FPS (barely). Here ā¦
Specular cyan everything.
Artificial moonlight. : )
Can that be optimized by baking? I will try someday.
In blender I put specular cyan on everything and it just makes me so happy.
What does Baking do for your FPS?
Full-Steam-Ahead!!! Lol.
Thanks for mentioning!
Yes, PLS send screenshot so gr8 2 C. : )
Happy to help. Hope it helps someone,
@aFalcon:
Different kind of baking: just removing options from user to keep simple (but not technically ābakedā in the 3d sense of the word). FPS still at 60, but having to avoid adding effects that I wish I could keep like fog/god rays / post-processing shadow effects. May add those back in someday as a desktop-only option - for screen recording from fast machines.
Send! Send is the key. Itās my #1 learning from years of building web apps. You gotta build āsendā into the fabric of the workflow. Itās how distribution works. Only way to grow fast without marketing budget.
Gotta try your specular cyan trick. That sounds neat. Getting the lighting to be consistently beautiful and yet flexible for various scenarios (dawn, day, sunset, lamp effects, etc) has been challenging.
Happy thanksgiving!
Oh COOL! Thanks. Same. I went Low-Poly, big world.
Ok, Iād like to hear more about SEND, when youād like to share it.
Is SENDā¦ JS Modules, or?
Yes. Lighting is challenging.
LIGHTING~ PRINCIPLE: not possible to see one light - when all the lights are on!
So to fix ONE light, I have to:
- TURN ALL THE LIGHTS OFF
- fix the 1 light
- then turn ALL BACK ON.
That eluded me for a year.
PRINCIPLE: good LIGHT EDITS require good LIGHT SWITCHES!
Happy Thanksgiving.
UPDATE:
Added great audio tracks from freesound.org and https://opengameart.org/
-
carefully listed all licenses, including cc0 links, and derivation descriptions for cc3.
-
remixed and added reverb (distortion, etc) with Audacity and LMMS.
-
export to BABYLON. Done.
SOLUTION: optimization for lazy-loading audio was easy.
- I was front-loading audio. do not createSound until each scene.
All is working fantastically.
Still on schedule.
F0rtn!te botches another ālive eventā.
Still no STORYLINE
IMHO
FIX: for Sound End
Did this:
let soundEndDamper=0;
nx.scene.registerBeforeRender(function soundEndLoopz() {
if(++soundEndDamper%100===0){return} //frame-damper-.
if(nx.sonics.footsteps1.isPlaying&&!nx.sonics.footsteps1.endSound){ nx.sonics.footsteps1.endSound=1; } //init
else if(!nx.sonics.footsteps1.isPlaying&&nx.sonics.footsteps1.endSound){ nx.scene.unregisterBeforeRender(soundEndLoopz); /*self-removing-.*/ } //done
});
It is a self removing animation loop, called LOOPZ, for unique search in code.
Have a bunch of those all over the place, this one tells when sound is done playing.
Kinda cool? Useful for many things. : )
Cool.
Iāve been using p5ās sound library:
https://p5js.org/reference/#/libraries/p5.sound
Bunch of neat stuff there - esp. tying events to each second of the sound (and onended is reliable).