Microblog
Archive of Twitter. Currently also live micro-blogging on Bluesky
2025/03/01
Jérôme Eippers' YouTube channel is quickly becoming a goldmine for Animation Programming. He is covering so many classic animation papers - reviving a lot of great ideas and techniques that are either under-utilized or forgotten by the industry. https://www.youtube.com/@JeromeEippers/videos
2025/03/01
I think Twitter is finally over for me. All else aside I'm just not enjoying it anymore. I'll host tweets on my website (http://theorangeduck.com/page/microblog) & be on bluesky (https://bsky.app/profile/theorangeduck.bsky.social) for now. I'll still do what is eternally fun: mathematics, animation, graphics, gamedev!
2025/02/24
Learned a new spring fact from my colleague @Mr_Rowl recently. For a critically damped spring tracking a target moving at a constant velocity, the amount of time the spring will lag behind the target is given by "halflife / ln(2)". Added to my blog post! https://theorangeduck.com/page/spring-roll-call
2025/01/24
I've uploaded a retargeted version of the 100STYLE dataset matching the other datasets: https://github.com/orangeduck/100style-retarget/
I wasn't sure if I should add it at first. The quality is lower due to the inertial capture, and it's missing finger motion, but overall I figured it's still worth it.
2024/12/29
It's been a while since I did a pure Machine Learning article on my blog, but today I have a post for you about adding noise to Neural Networks, and some fun experiments with Flow-Matching:
https://theorangeduck.com/page/noise-neural-networks-flow-matching
2024/11/23
"regularly convergence" - why do I always find typos in my tweets just after posting them, even after it seems like I've checked them 100 times
2024/11/23
My latest article is about one of my favorite techniques in graphics - Müller's method of Polar Decomposition.
It also details some variations, including one which is ~2x faster to compute with more regularly convergence.
https://theorangeduck.com/page/variations-muller
2024/10/27
Finally, I've made a very simple example raylib application which can be used to visualize animation data from these datasets on the common character mesh:
https://github.com/orangeduck/GenoView
2024/10/26
By default it works with the Geno character from the following animation datasets:
https://github.com/orangeduck/lafan1-resolved
https://github.com/orangeduck/zeroeggs-retarget
https://github.com/orangeduck/motorica-retarget
But you should be able to hack it (using some of the scripts included) to work on other characters and datasets too.
2024/10/26
I've just uploaded a simple #raylib example application for viewing animation data on a skinned mesh:
https://github.com/orangeduck/GenoView
It has (what I consider) the minimum rendering required to actually evaluate skinned animation: basic lighting, shadow maps, SSAO, and a grid shader.
2024/10/18
If you're in Zurich definitely check out the Strauhof Museum. The Maschinenpoesie exhibition is wonderfully put together, incredibly unique and very thought provoking!
2024/10/02
To prepare for the article I took the time to re-process some of the highest quality datasets in the community onto a common character. I hope that can be useful too!
https://github.com/orangeduck/lafan1-resolved
https://github.com/orangeduck/motorica-retarget
https://github.com/orangeduck/zeroeggs-retarget
2024/10/02
Animation quality is a difficult subject that I think we've not quite got to grips with yet as a community.
My latest blog post shares some of my own thoughts on the subject. My hope is it can kickstart some discussions... or at least new dance moves!
https://theorangeduck.com/page/animation-quality
2024/09/27
Today I have a short blog post on something in game development that took me far too long to realize: that DeltaTime is a frame behind.
https://theorangeduck.com/page/delta-time-frame-behind
2024/08/14
Today's blog post is on a hidden gem that I'm certain will have passed many graphics people by: a closed-form solution to Polar and Singular Value Decomposition for 3x3 matrices - from a paper by Huancheng Lin, Floyd M. Chitalu, and Taku Komura.
https://theorangeduck.com/page/closed-form-matrix-decompositions
2024/08/10
The approximate motion matching feature for this cost is just the bone velocity.
Another cost means another weight to tweak which is a shame, but it does feel to me like this combo produces the nicest results I've seen so far in terms of inertialization transition quality. (3/3)
2024/08/10
Visually these offsets produce jerky looking motion during the transition. I got better results when I combined this cost with another that measures the maximum absolute velocity of the offset. This can be computed as follows (for a cubic inertializer): (2/3)
2024/08/10
I've been experimenting a bit more with the inertialization cost I derived in this article: https://theorangeduck.com/page/inertialization-transition-cost
In general it works well, but I noticed it does not penalize enough very large velocity offsets when they go quickly towards zero without overshooting: (1/3)
2024/06/24
MotionBuilder aggressively rounds floats when it exports BVH files. Unfortunately it doesn't keep enough precision to losslessly encode euler angles close to gimbal. Here is the result of exporting and then re-importing as BVH. You can see the kind of shaking artefacts it makes.
2024/06/02
Really nice looking suite of tools for processing motion capture data and preparing it for data-driven animation systems like Motion Matching - all without leaving UE! https://x.com/RyanMuoio/status/1796977340020560305
2024/05/30
If you liked my blog post on springs you'll love Freya's talk, which beautifully explains everything related to framerate independent lerp smoothing. https://x.com/FreyaHolmer/status/1795878926805278944
2024/04/23
UE 5.4 is out and the Learning Agents plugin got a bunch of updates!
One of the coolest new features is "Structured Observations and Actions" - which provides a powerful and flexible way of describing the inputs and outputs of a Neural Network.
https://dev.epicgames.com/community/learning/courses/kRm/unreal-engine-learning-agents-5-4/MpeM/unreal-engine-what-s-new-in-learning-agents-5-4 https://x.com/AgentMulcahy/status/1782803771065544849
2024/04/21
I've also added two new stories - "Last-Lamb", about an obscure internet community and preparing for the day when you will be gone, and "Mistral", about a wind that keeps getting stronger every year. I hope you enjoy them! (3/3)
https://theorangeduck.com/page/last-lamb
https://theorangeduck.com/page/mistral
2024/04/21
I've had pretty much the same website design for the last 14 years - with most of the photos at the top taken when I was 16 on a digital camera in the days before smart-phones existed! It felt like time for a minor refresh. (1/3)
2024/04/21
My old website used Django. This one uses my own "static site generator" (i.e. a python script) and Flask to make sure the routing still works. It's orders of magnitude less complex, faster, and more flexible. (2/3)
2024/04/04
Lots of algorithms online for converting from rotation matrices to quaternions have unstable gradients when transcribed to PyTorch.
This is the best I've found and seems both smooth and stable (from this article by Mike Day https://d3cw3dd2w32x2b.cloudfront.net/wp-content/uploads/2015/01/matrix-to-quat.pdf):
https://gist.github.com/orangeduck/e1d70fdbfcdcf327850b7b39a36543c9
2024/04/04
Note: there will always be a discontinuity in the output of this function at +180/-180 degrees away from the identity so try to make your rotations relative to something meaningful and close to the identity if you can.
2024/03/30
Do your rotations need unrolling? Today's blog post explores a sometimes forgotten aspect of dealing with rotations.
https://theorangeduck.com/page/unrolling-rotations
2024/03/02
Today's blog post is on animation blend spaces, and some ideas for how to build them without using triangulation.
https://theorangeduck.com/page/animation-blend-spaces-without-triangulation
2024/02/09
My hot-take is that mandatory Code Review is like security theater. In terms of detecting issues with code it's pretty much ineffective (and for trusted adults just slows them down). But putting on the show can help people take things more seriously and sometimes up their game. https://x.com/bernhardsson/status/1755633103865831679
2024/02/08
Want to work with some top industry experts on state-of-the-art animation research? We're looking for a student for a 6 month internship to work on R&D prototypes with the UE team. If you're interested, send your CV and cover letter to rnd-intern-applications@epicgames.com
2024/02/08
Apologies in advance that we can't respond to all applications.
2024/02/03
I've just updated my article on quaternion weighted averages with an appendix clarifying exactly when taking the raw weighted average of quaternions can actually be okay (or even preferred!)
https://theorangeduck.com/page/quaternion-weighted-average#appendix
2023/12/31
How can we compute the weighted average of a set of quaternions? The answer might be a little bit more tricky than you'd expect.
https://theorangeduck.com/page/quaternion-weighted-average
2023/11/09
I made a nasty bug yesterday that essentially came down to:
uint16_t x = -1;
if (x == -1) ...
This condition is false! I'm definitely drifting towards the never-unsigned camp...
2023/11/05
Using a skinned character is still the best way to visualize the result of your animation research - but at least now there are no more excuses for lacking a checkerboard floor and shadows in your paper submissions!
2023/11/05
I got tired of the shortcomings of most of the .bvh animation file format viewers out there and decided to write my own.
BVHView is a simple, hackable .bvh viewer written in #raylib that loads files almost instantly and renders them clearly and cleanly.
https://github.com/orangeduck/BVHView
2023/10/10
Something I worked on for Unreal 5.3 is a new experimental "Dead Blending" node - it's a drop-in replacement to the Inertialization node which often produces better blends when the animations are not synced or you have frequent transitions.
https://theorangeduck.com/page/dead-blending-node-unreal-engine
2023/09/06
Unreal Engine 5.3 launches today! One of the things I worked on (with @RobotBrendan) this release was Learning Agents - an experimental plugin for doing Reinforcement Learning in UE. It's early days & lots to do but check out this tut for a sneak peak!
2023/08/06
I was really flattered that SIGGRAPH included "A deep learning framework for character motion synthesis and editing" in their list of seminal papers celebrating 50 years of SIGGRAPH (in the company of just 5 other animation papers). I am truely honored! https://dl.acm.org/doi/book/10.1145/3596711
2023/07/25
If you are computing a running average / exponential smoothing you can correct for the initial bias toward zero by dividing the result by `(1 - alpha^i)` where `i` is the number of iterations of smoothing applied.
2023/06/09
How can we make animation systems in games more robust to two of the most dreaded things: resets and teleports? In this article I propose one potential improvement: propagating velocities through animation systems.
https://theorangeduck.com/page/propagating-velocities-through-animation-systems
2023/05/29
If you have a delta/velocity in the raw 4d quaternion space you want to turn into a (linear approximation of) an actual angular velocity you can multiply it by the inverse of one of the quaternions used and take the imaginary part multiplied by two.
2023/05/02
Date: Tuesday 23rd May
Time: 7PM
Location: The Peckham Pelican
Free Tickets Here:
2023/04/26
A short blog post on doing cubic interpolation of quaternions:
https://theorangeduck.com/page/cubic-interpolation-quaternions
2023/03/27
Looks like I'm not done fixing really stupid bugs in my Motion Matching implementation... https://github.com/orangeduck/Motion-Matching/commit/a4e097a3cab2a3113e9221c18cd199e4b00dbd56
2023/03/22
I'm really excited to release this new edition of our code poetry collection. As well as ten addition poems not on the website it contains a manual page with brief discussions on all the poems, and two fun essays from me and Chris about our experiences making the collection! https://x.com/brokensleep/status/1638636498466623489
2023/02/26
Today a blog post in which our character throws some crazy shapes on an alternative method of inertialization sometimes called "dead blending".
https://theorangeduck.com/page/dead-blending
2023/02/18
Watching any modern C++ talk on "reducing complexity":
"That's a move, and then, you move out from it again, and then, inside the function, so you say, 'Oh, that's move plus move.' If I do unique pointer refref that's a single move, right?"
2023/02/16
Opps... just pushed up a fix for a bug in the computation of forward kinematics angular velocities in my Motion Matching example code. Starting to wonder how this ever worked at all...
https://github.com/orangeduck/Motion-Matching/commit/431b40e233cf24815d332c3171b678b756471b53
2023/02/08
I just added another section to my previous article on tracking springs with a derivation of a dt-invariant version https://theorangeduck.com/page/perfect-tracking-springs
Spoiler: Turns out this is equivalent to the same spring-damper we know a love, with very specific stiffness, damping, and pos/vel targets!
2022/11/24
Recording of my Keynote from SCA 2022:
https://www.youtube.com/watch?v=7ymrxIgQ0Uw
Apologies in advance to Graphics Programmers for my explanations of graphics concepts (and for getting the gamma correction equations the wrong way around after talking about the importance of attention to detail)!
2022/11/23
I like to train networks with the L1 loss over the L2 loss. Why? L1 training is invariant to the overall scale of the difference between prediction and ground truth. L2 training behaves differently depending on this scale ( often poorly when outside the 0-1 range).
2022/11/23
Scale this difference up or down by any factor and L1 will train exactly the same. Key for having training work out-of-the-box on different datasets. Warning: if made of multiple terms, a L1 loss will still take the relative weightings into account - balancing still required!
2022/11/21
Two PPO tricks, not on-by-default in many libs, which PPO rarely trains stably without:
1) Clip negative advantages. Moving the policy away from bad actions is not always good
2) Limited/Fixed action noise. Letting the entropy loss adjust the action noise freely is v. unstable
2022/09/20
My latest blog post is on how we can automatically create looping animations from motion capture data:
https://theorangeduck.com/page/creating-looping-animations-motion-capture
Web demo here:
https://theorangeduck.com/media/uploads/Looping/looping.html
2022/09/11
There are two ways to invert a quaterion:
(w, -x, -y, -z) gives you an inverse rotation "going the opposite way around": +90° becomes -90°
(-w, x, y, z) gives you an inverse rotation "going the same way around": +90° becomes +270°
2022/09/03
Staying in a hotel with a bathroom design inspired by http://buildyourownlisp.com
2022/08/21
Also a good example of how ML often still finds a way to "work" even if you make mistakes - it just "works" slightly worse!
2022/08/21
Just fixed a bug in my Learned Motion Matching example code on github where the Compressor was getting inputs in the world space instead of character space. Just goes to show that even if you wrote the paper it doesn't mean you wont make mistakes when (re)implementing it!
2022/07/17
I've done quite a few technical articles over the last year so I think I've earned myself a little bit of navel gazing with a blog post about some of my favourite things:
https://theorangeduck.com/page/favourite-things
2022/07/08
In many engines Skeleton/Pose/Animation classes are some of the worst offenders - and it isn't uncommon for them to be used in data assets, character state, and temporary storage (for blending etc.) all at the same time! (2/2)
2022/07/08
In GameDev there are three distinct purposes all memory has to serve: 1) Data/Config 2) State 3) Temporary Storage. The more a class/object tries to serve multiple of these, the worse a job it tends to do for all of them. (1/2)
2022/07/08
Great video with lots of spring-based insights and fun examples! https://x.com/t3ssel8r/status/1542119552737497088
2022/06/03
How can we measure the cost of transitioning between two different animations? In this blog post I propose a solution based on the assumption of inertialization blending - involving (as usual) some playing around with spring equations!
https://theorangeduck.com/page/inertialization-transition-cost
2022/05/05
Another short blog post, this time about velocities and object scales:
https://theorangeduck.com/page/scalar-velocity
2022/02/28
Interactive Demo:
https://theorangeduck.com/media/uploads/ranges.html
Source Code:
https://github.com/orangeduck/Ranges
2022/02/28
Today a blog post on tags, ranges, and masks - and how we can use them for organizing and querying databases of animation data:
https://theorangeduck.com/page/tags-ranges-masks
2022/02/07
A blog post that involves some more fiddling around with the spring equations, and an idea for how to automatically fit code driven displacement parameters to motion capture data:
https://theorangeduck.com/page/fitting-code-driven-displacement
2022/01/17
Today is the first day of an exciting new adventure at Epic Games. So much inspiring stuff to get involved in, but for me the mission fundamentally remains the same - to keep pushing animation technology forward and into the exciting unknown!
2021/12/29
atoi and Trillions of Whales: an essay on performant computing
https://theorangeduck.com/page/atoi-trillions-whales
2021/12/23
I've just added a basic implementation of Learned Motion Matching to my previous Motion Matching demo. Hopefully useful to anyone working on this stuff. Results aren't visually any different (as intended), but still cool to see LMM running in the browser!
https://github.com/orangeduck/Motion-Matching
2021/12/23
Direct link to web-demo in case anyone wants to try it: https://theorangeduck.com/media/uploads/CodeVsDataDriven/controller.html
2021/12/18
November was my last month at Ubisoft La Forge and I want to thank everyone again for the fantastic experience I had there. I loved working there so it's sad to say goodbye but I have something new and very exciting lined up for the new year!
2021/12/10
A reader found an error in my integration of the critical spring equation (in the Controllers section of my Spring-It-On article). If you're using the code I had there before it's probably a good idea to update it!
2021/11/26
This scales up to complex interactions such as navigation over rough terrain and interactive control. As always, the devil is in the details, so check out the paper and video for more on what was done.
Video: https://www.youtube.com/watch?v=8sMjfGkQ4bw&feature=emb_title
2021/11/26
The trick is to simultaneously train a neural network to model the dynamics of the ragdoll character, which can then be used as an approximate differentiable physics engine through which a tracking policy can be optimized directly. (3/4)
2021/11/26
Essentially, by formulating motion tracking as a supervised learning problem (rather than a reinforcement learning problem) we achieve better motion quality with a faster training time, and scale up to much larger and more complex databases of animation. (2/4)
2021/11/11
Another article - this time on joint limits, and how we can automatically compute them from data.
https://theorangeduck.com/page/joint-limits
I've also added interactive web demos for this article and my previous article on code vs data driven displacement - much more fun to play with!
2021/11/01
For me, one of the best lessons in gamedev is the story of gamma correction. Three big takeaways 1. small details can matter a lot more than big features 2. understanding the full pipeline is essential 3. artists cannot be relied on to find deep issues, they will work around them
2021/10/22
Some of you may have noticed I like to smooth things with Savitzky–Golay filters rather than Gaussian filters - why? SavGol filters preserve the peaks and troughs in a signal whereas Gaussian filters with large sigmas produce a damping effect causing trajectories to shrink:
2021/10/19
The demo from the blog post also includes a very basic motion matching implementation somewhat in the flavor of some of our previous research so it may be interesting for people who want to try implementing this technique themselves.
https://github.com/orangeduck/Motion-Matching
2021/10/19
Another blog post on animation programming fundamentals, and today it's a big one - code vs data driven displacement - or how we can move a character around a game world in a way which is both responsive and realistic.
https://theorangeduck.com/page/code-vs-data-driven-displacement
2021/10/16
IMO the two most important transformations for performant code are Array of Structs to Struct of Arrays and Loop Fusion to Loop Fission. The 1st is essential for cache perf and the 2nd breaks data dependencies and often unlocks more optimizations that were not obvious before.
2021/09/10
Take the time to get comfortable with these and you will have access to the vast majority of the academic world's problem solving power. (2/2)
2021/09/10
I'm far from the most gifted Mathematician (I failed linear algebra three times as an undergraduate), but during my PhD I realized 90% of the papers in graphics are solving problems using the same basic set of tools - Linear Algebra, Optimization, and Machine Learning. (1/2)
2021/07/25
Another article on some animation programming fundamentals - this time I take a deeper look at the exponential map, the angle-axis representation, and the angular velocity!
http://theorangeduck.com/page/exponential-map-angle-axis-angular-velocity
2021/07/19
Submissions for the SIGGRAPH Asia Technical Communications and Posters programs are still open!
I think it's one of the best ways to attend SIGGRAPH Asia and share your work without the pressure of a full technical paper.
https://sa2021.siggraph.org/en/submissions/technical-communications
https://sa2021.siggraph.org/en/submissions/posters
2021/07/09
Some of the ideas here can also be useful for matching single frame events in Motion Matching.
2021/07/09
A short article on how to encode single frame events in a way which is appropriate for neural networks: http://theorangeduck.com/page/encoding-events-neural-networks
2021/06/14
Here's a blog post I wrote showing how I visualize various different rotation spaces in my head:
http://theorangeduck.com/page/visualizing-rotation-spaces
I think it gives a nice intuition for how to work with these different representations - produces pretty pictures too!
2021/03/31
For anyone who enjoyed my recent springs article I've just uploaded the code for my little playground - you can find it here: http://theorangeduck.com/media/uploads/springs/springs.zip it uses #raylib and #raygui so you will need to install those first!
2021/03/28
Spring has sprung! And with perfect timing for my new article, a gamedev's guide to springs:
http://theorangeduck.com/page/spring-roll-call
Bit of an epic lockdown project for me; I applaud anyone who makes it all the way through! Hopefully it has some nice tricks and tidbits even for experience devs
2021/03/25
Russian doll is the best TV show about an animation programmer
2021/02/02
One of my pet peeves is people who think data annotation/ cleaning is below them. Yes, taking 8 hours to clean and annotate a dataset is boring - but it will save you hundreds of hours later on thanks to the deeper insights and understanding of the data you will gain.
2021/02/02
When a ML system isn't working and you wont look at the data, the only option feels like adding a more complex model - but that only adds complexity, making it more difficult to debug if your problem is actually in the data. Repeat this and you have a terrible feedback loop.
2021/02/02
Often when you finally look at the data the problem is trivial: errors in the data, data imbalance, incorrect assumptions, bad preprocessing - and your very first model you tried works all along!
2020/12/21
Interviewing Advice from the Other Side of the Table:
http://theorangeduck.com/page/interviewing-advice-from-other-side-table
2020/12/02
Just because a design is intuitive doesn't mean it will be simple or good. I always prefer designs which are unintuitive, difficult to learn, or unexpected, if they mean a better fit for the problem overall. (2/3)
2020/12/02
This is often amplified by the programming-by-numbers object oriented style. Just because your problem involves something called a "Foo", it doesn't mean the optimal design includes a "Foo" class. Code comprehension is not an excuse for avoiding thinking about design (3/3)
2020/12/02
Sometimes I think we take the idea of never doing anything "clever" in programming too far. I see programmers who firmly believe you should always start with the first most obvious design that comes to mind then be baffled when they end up with a complex mess at the end (1/3)
2020/11/08
It may sound cheesy but I felt really proud watching Mythic Quest and hearing that the advanced animation system of Grimm's avatar was powered by AI. Even if its just one line in the show it was the first time I really felt what I've worked on had entered the zeitgeist...
2020/10/19
Saguaro - a short story about inheritance and a cactus on the US-Mexico border http://theorangeduck.com/page/saguaro (image credit: Erin Hanson - Saguaro Dusk)
2020/10/13
Of course in an ideal world we would have both!
2020/10/13
Controversial Graphics Opinion: Given a choice between the two, I actually prefer papers which evaluate themselves primarily on the "does it look good?" method rather than quantitative measures. Reasoning: it's much easier to fudge a few numbers than it is to fudge a whole video.
2020/09/25
The Program is up and Registration is now open for this year's SCA! Looking forward to some really great content:
2020/09/23
In case you missed it, we managed to release some of the mocap data used in various La Forge projects including "Recurrent Transition Networks", "Learned Motion Matching", "Subspace Neural Physics", and "Robust Solving of Optical Motion Capture Data":
https://github.com/ubisoft/ubisoft-laforge-animation-dataset
2020/09/17
I see authors often get frustrated at this kind of feedback in generative animation papers. Yes, your method may be able to produce infinite variety but so can very simple procedural methods. The question is how does this help achieve the final goal better than existing ideas?
2020/09/17
Controversial ML opinion: Unconditioned generation is fun but largely useless: if you have a dataset of 1 million faces it's easy to produce a random face a user has never seen before - just pick one from the data. Conditioning, interpolation, etc. are where it becomes useful.
2020/08/17
Really excited to dive into all the SIGGRAPH content this year! Our talk on Learned Motion Matching can be found here (for those with access): https://siggraph2020.hubb.me/schedule-builder/sessions/707347
2020/07/31
The paper also describes our state of the art implementation of Motion Matching as used in production. For more info check out the paper and supplementary video:
Video: https://www.youtube.com/watch?v=16CHDQK4W5k&feature=youtu.be
2020/07/31
Once trained, Learned Motion Matching doesn't require keeping animation data in memory - just network weights. This means the memory usage doesn't increase as you add more data... Here we show a MM controller requiring ~600MB of memory compressed down to just ~9MB!
2020/07/31
The basic idea is to train several Neural Networks in a way that reproduces the behavior of Motion Matching. Emulating Motion Matching means you can still iterate, debug and control the system as before - simple apply Learned Motion Matching as a post-process to crunch the data!
2020/07/31
Happy to announce our new SIGGRAPH paper this year - Learned Motion Matching. We use Machine Learning to vastly reduce the memory usage of Motion Matching - allowing it to scale to huge databases of animation. Check out the blog post for more info: https://montreal.ubisoft.com/en/introducing-learned-motion-matching/
2020/07/21
Just a few days left for you to prepare your Showcases submissions - deadline is this Thursday! https://x.com/anorangeduck/status/1265330736741089280
2020/07/02
Why Can't I Reproduce Their Results? - Or - What I Wish I Knew as a Graduate Student.
http://theorangeduck.com/page/reproduce-their-results
2020/06/09
SCA 2020 paper submission deadline has passed and it's already looking like there are some great submissions this year! If you didn't make the deadline but still have something cool you'd like to show there is still the "Showcases" track, open until July 23rd https://x.com/anorangeduck/status/1265330736741089280
2020/05/26
Direct link to the submission site here: https://srmv2.eg.org/COMFy/Conference/SCA_2020sc
2020/05/26
SCA is going to be virtual this year, and registration will be free! So if you work in the industry like me this is the perfect chance to promote your work directly from your desk, without having to pay for travel or registration!
2020/05/26
All you need to prepare is a 1-2 page description plus an image, video, or demo reel highlighting your contribution. Submissions will be reviewed by a panel of industry experts and selected submissions will be presented at the conference alongside the latest in academic research!
2020/05/26
Cool new game or VFX demo?
Cutting edge technical results?
Practical solution to common industry problem?
This year SCA is doing a "Showcases" track for people in the animation community to show off their latest work in the most simple way possible.
2020/04/18
@JohnEMotionFX You can also combine "time until event" and "time since event" into one feature by having negative values mean "time since" and positive values mean "time until". Clamping trick still works too!
2020/04/18
@JohnEMotionFX As a bonus clamped "time until event" is a feature which works very well in standard motion matching too.
2020/04/18
@JohnEMotionFX For time until event you can clamp at some maximum for events very far away.
2020/04/18
@JohnEMotionFX Another option is event phase variable encoded in Cartesian space for cyclic events. There is no way around the fact that some filtering is required to theshold and avoid multiple triggers but if the network is accurate you'll be surprised how well it can work.
2020/03/24
Although GDC was cancelled you can still watch my talk!
Why Machine Learning can still sometimes be a powerful tool for things we already know how to solve:
https://www.youtube.com/watch?v=sUb0W5_waRI
2020/02/09
Has anyone implemented their own 3d geometric algebra library in C++? Theory sounds great, but it seems the only options are storing 16 elements per "thing", having custom types per "thing" (which store the bases sparsely), or some kind of template hell. Am I missing something?
2020/01/11
I hope data oriented design can piggy back off the success of ML. We now have a whole generation of programmers who learned Function Programming AND who find it natural working with arrays & batch operations. If there ever was a time for a performance oriented revolution it's now
2019/10/28
La Forge is hiring research scientists! Come join us in revolutionizing game development with some of the best minds from academia and top developers in the industry working together.
https://jobs.smartrecruiters.com/Ubisoft2/743999698323299-scientifique-r-d-la-forge
2019/09/24
Interested in what we're doing at Ubisoft La Forge? We're looking for R&D engineers to help us push the limits of what's possible in Game Development by building state of the art prototypes: https://jobs.smartrecruiters.com/Ubisoft2/743999695820645-r-d-programmer
2019/09/20
Perhaps I should have thought twice about embedding many >20 MB GIFs before sharing that article... my server is not enjoying the Hacker News hug of death... apologies in advance if the page is slow to load!
2019/09/20
Machine Learning, Kolmogorov Complexity, and Squishy Bunnies - why using Machine Learning for things we already know can sometimes make sense. http://www.theorangeduck.com/page/machine-learning-kolmogorov-complexity-squishy-bunnies
2019/07/27
Results from our new paper on data-driven physics simulation for games. Produces 300 to 4000 times speedup over standard physics simulations by combining Machine Learning, subspace simulation, and lots of training data! http://theorangeduck.com/page/subspace-neural-physics-fast-data-driven-interactive-simulation
2019/05/26
Software for Rent - http://theorangeduck.com/page/software-for-rent - or why we need new software licenses (part 2).
2019/05/08
Come to this if you want to hear @c_c_kerr reading some code poetry live! I can promise it will be a unique experience https://x.com/SidekickBooks/status/1125357310728183808
2019/04/18
An interview I gave at Ubisoft about my hopes and predictions for how Machine Learning can revolutionize game development! https://x.com/LifeatUbisoft/status/1118872133369831424
2019/03/25
A short story about an Insect collector, finding love, and a caterpillar species that doesn't seem to exist: http://theorangeduck.com/page/naraleian-caterpillars
2019/03/10
The Scientific Method is a Virus - http://theorangeduck.com/page/scientific-method-virus
2019/01/24
I hope you guy are all as excited as us for my #GDC19 talk about Machine Learning and Performance Capture this year! https://schedule.gdconf.com/session/a-new-era-of-performance-capture-with-machine-learning/860568
2018/10/04
Why being focused and moving directly toward our goals might be a better strategy than expected for complex tasks: http://www.theorangeduck.com/page/local-minima-saddle-points-plateaus
2018/07/25
Breaking Things is Easy; Fixing them is Hard - an article about my latest research at Ubisoft on automatically cleaning up motion capture data:
https://montreal.ubisoft.com/en/breaking-things-is-easy-fixing-them-is-hard-2/
2018/07/23
Fantastic talk by Laura Caccia on Code Poetry! https://x.com/lauracaccia/status/1020588437500461056
2018/07/08
C programmers - what aspects of the standard library would you redesign given the chance (except strings of course)?
2018/05/29
Just published all the details of our SIGGRAPH 2018 paper on automatically cleaning up motion capture data! http://montreal.ubisoft.com/en/robust-solving-of-optical-motion-capture-data-by-denoising/
2018/03/31
The Software Thief - http://theorangeduck.com/page/the-software-thief - why we need new software licenses.
2018/01/28
If you're at GDC this year then come and see my talk to get an insight into the kind of things I've been up to over the last few months regarding character animation! http://schedule.gdconf.com/session/character-control-with-neural-networks-and-machine-learning/855296
2017/10/22
Can anyone recommend any good books/websites/resources for learning animation programming? I always get asked, never know what to reply...
2017/10/18
When making large changes to code motivation often a bigger blocker than technical debt. Code ownership and sense of progress so important.
2017/10/14
ASCII : A Love Letter - http://theorangeduck.com/page/ascii-love-letter - an essay on ASCII, code poetry, and what programming feels like. w/ @c_c_kerr
2017/09/27
A quick talk (20 mins) I gave at Montreal AI Symposium about my research on deep learning & character animation: https://www.youtube.com/watch?v=cdcKwefTT6M&t=1h5m10s
2017/09/04
Thanks for all the awesome suggestions, article updated with the most common suggestions - hope I have explained them well - tell me if not!
2017/09/03
A list of common mistakes made by newcomers to neural networks - additional suggestions welcome! http://theorangeduck.com/page/neural-network-not-working
2017/08/12
If you didn't catch me at SIGGRAPH here's a talk I did for NVIDIA booth http://on-demand.gputechconf.com/siggraph/2017/video/sig1730-daniel-holden-phase-functioned-neural-networks.html should be accessible to non-technical peeps!
2017/07/07
Can't believe J.M.Coetzee was a code poet! @c_c_kerr https://x.com/Don_Share/status/883012655144980480
2017/06/17
Complete code and data now avaliable for Phase-Functioned Neural Networks for Character Control! http://theorangeduck.com/page/phase-functioned-neural-networks-character-control
2017/06/17
Similarly this was my first "looks promising" results for NNAO. Wish I'd saved the earlier ones that looked 10x worse!
2017/06/17
In the depths of research heartening to look back - here's PFNN Oct 16 https://youtu.be/v5jtLsUy4ro?t=4m8s then again in Dec 16 https://www.youtube.com/watch?v=TBfg4HMfHKw
2017/06/14
Code here https://goo.gl/NK1gLv breaks in very occasional cases (`copysign` returning 0?) - this was better: https://goo.gl/QwsSr2 2/2
2017/06/14
Uh Oh. Found an issue with the rotation matrix to quaternion conversion code I've been using for over 5 years! 1/2
2017/06/10
Just uploaded the runtime demo for Phase-Functioned Neural Networks paper. Data and training code coming soon... http://theorangeduck.com/page/phase-functioned-neural-networks-character-control
2017/03/14
17 Line Markov Chain http://theorangeduck.com/page/17-line-markov-chain
2017/02/08
14 Character Random Number Generator: http://theorangeduck.com/page/14-character-random-number-generator
2017/01/19
A simple intuitive method for two joint IK: http://theorangeduck.com/page/simple-two-joint
2017/01/14
Generating Icons with Pixel Sorting http://theorangeduck.com/page/generating-icons-pixel-sorting
2016/12/14
http://code-poetry.com/ - poems written in the source codes of various different programming languages #code #poetry #programming
2016/10/29
Neural Network Ambient Occlusion - faster and more accurate than HBAO w/ machine learning: http://theorangeduck.com/page/neural-network-ambient-occlusion #ssao #hbao
2016/09/03
Three new short stories http://theorangeduck.com/page/three-stories-east-coast-main-line
2016/07/02
Here is the sharp GIF version: http://i.imgur.com/FdLdbq5.gif
2016/06/27
Just found out that Cantor was also a "Bacon wrote Shakespeare" conspiracy theorist.
2016/03/12
A long rambling review of The Witness http://theorangeduck.com/page/witness
2016/02/05
I made a Crisp Omelette and it was...weird http://theorangeduck.com/page/four-seasons-crisp-omelette
2015/12/18
A story about a mysterious elevator in northern Siberia - http://theorangeduck.com/page/bottom-elevator
2015/11/19
How to extract a symbolic representation of a function in Python: http://theorangeduck.com/page/tracing-functions-python
2015/11/18
Congrats to the other winners of http://www.sourcecodepoetry.com/ some great poems this year! #CodePoetry
2015/07/30
I'm prototyping a kind of numpy for C. Anyone have any ideas/thoughts/suggestions/comments?
2015/07/22
So... I believe (somewhat unothodoxly) that mathematical infinity doesn't exist. Read this if you need persuading: http://theorangeduck.com/page/infinity-doesnt-exist
2015/07/14
Bad Kid Jokes are amazing! http://badkidsjokes.tumblr.com/
2015/06/22
Source Code Poetry is here again. Looking forward to seeing this years submissions. Last year was great! http://www.sourcecodepoetry.com/
2015/06/13
Crazy good explaination of Graham's Number: http://waitbutwhy.com/2014/11/1000000-grahams-number.html
2015/06/09
I've been quietly working on Cello 2.0 the last few months. Here is a preview of what to expect: http://theorangeduck.com/page/polyconf
2015/05/20
I'm going to be giving a talk about a new version Cello at #PolyConf (July 2nd-4th) for those who want the inside scoop!
2015/03/23
Making glitch art is fun! http://imgur.com/a/bd7YM
2014/10/30
Build Your Own Lisp http://buildyourownlisp.com/ now avaliable in print format! Free e-books to celebrate! RT, follow and I'll DM you one :)
2014/08/08
My attempt at Turing Drawings http://theorangeduck.com/page/turing-drawings/ listen to Meshuggah for full exp. http://www.youtube.com/watch?v=x1A2hebjvQk @e_lewandowski @hamishtodd1
2014/07/23
What does a game look like built around an feeling? I wrote a review of Shelter http://theorangeduck.com/page/shelter
2014/07/23
we should focus on convincing the world games are great. Not that games are art, just cos that's something the world already thinks is great
2014/07/18
@hamishtodd1 I often think it should be called quaternion addition. Although to "subtract" quaternions you do "-q0 * q1", so that is weird!
2014/07/14
The Men Who Made us Spend is a suprisingly good critique of consumerism.
2014/07/07
Ever wanted to convert JSON to C data literals? No? Well now you can anyway! https://github.com/orangeduck/json2c
2014/07/03
I tried some datat science. It didn't go so well... http://theorangeduck.com/page/data-science-how-hard
2014/05/29
Just made Build Your Own Lisp http://www.buildyourownlisp.com/ available in E-Book Format!
2014/04/23
In Defense of the Unitype http://theorangeduck.com/page/defence-unitype
2014/04/12
And thanks to everyone who submitted pull requests. I didn't know so many typos could exist in one piece of work!
2014/04/12
Many thanks to everyone for the positive response to my book! It has been so flattering.
2014/04/10
This is an awesome tutorial on Haskell lenses! http://www.haskellforall.com/2013/05/program-imperatively-using-haskell.html
2014/03/19
#TopGear Roads build by Natives w/ British Rule. Incredible! Roads build by British POWs w/ Native Rule. Terrible! Colonial apologists.
2014/03/19
Langton's Ant seems great for beautiful pseudo randomness http://en.wikipedia.org/wiki/Langton%27s_ant here used for glitch art http://imgur.com/a/rdhR4
2014/03/15
Just got out of a denki furo. Now I know what it is like to be electrocuted. What the hell Japan...
2014/03/01
When I tried to visit Sandy Denny's grave... http://theorangeduck.com/page/sandy-denny
2013/10/31
Great Article by Robert Webb Re: Russell Brand http://www.newstatesman.com/2013/10/russell-choosing-vote-most-british-kind-revolution-there
2013/10/05
Some miscellaneous thoughts on Japan! http://theorangeduck.com/page/thoughts-japan
2013/09/22
Finally packaged up my little C MicroTesting framework `ptest`! https://github.com/orangeduck/ptest
2013/09/19
I Am An Object Of Internet Ridicule, Ask Me Anything:
http://www.theawl.com/2013/09/i-was-a-hated-hipster-meme-and-then-it-got-worse
2013/08/17
In Yakitori Number One Tokyo! http://imgur.com/KkYUoOj
2013/08/15
Relaxing in hot springs with a huge thunderstorm overhead!
2013/08/07
http://www.radiotimes.com/news/2013-08-06/doctor-who-writer-neil-gaiman-a-black-actor-has-already-turned-down-the-role-of-the-doctor @chessshaw Super-hans for the next doctor!
2013/08/06
Something creepy about second hands that don't tick but just move continuously.
2013/08/05
Pasta Crisps and *Gourmet* Doritos. The dinner you wish you had. http://t.co/BG1WgiXQ3P
2013/07/31
Sprayed up the ass by a Japanese toilet. Surprisingly pleasant. Would do again.
2013/07/27
Some thoughts on if computers can _think_
http://theorangeduck.com/page/can-computers-think