Freya Holmér

Freya Holmér

@freya.bsky.social

🎮 freelance tech artist 🐱 street (cat) photographer 🔥 shader sorceress/math dork 🏗️ Shader Forge / Shapes / https://half-edge.xyz 🪡 neoluddite my kids: 🥪 @toast.acegikmo.com 🥗 @salad.acegikmo.com 🐈‍⬛ @thor.acegikmo.com 🏕️ @gumpy.acegikmo.com

39.9K followers424 following6.6K posts

or like, building a ton of custom tools on top of Unity to create something it was absolutely not designed for youtu.be/jvPPXbo87ds?...

youtu.beThe Continuity of SplinesYouTube video by Freya Holmér
Tyler Glaiel@tylerglaiel.com

As someone who still prefers to make games in a custom engine I wrote, the code is kind of an inseparable part of a game's character, decisions about engine structure and every little bit of code have ripples that can absolutely be felt in the end product, even if hard to pick out specifics

the entire video is made in unity with a custom vector graphics tool and a custom animation/timeline system. the whole video can be played in real-time!

I've been noodling around with my spline plugin again previously I had a very math type separation between all the different spline types (bezier/cat-rom/bspline etc.) but I've realized it's a lot more intuitive to just provide one canonical Spline™️ with controls for shape, constraints, and handles

View full thread

1D splines are also a bit of a special case, and I BLAME CSS AND EASING FUNCTIONS FOR THIS a lot of easing functions are defined using a *2D bezier curve* embedded in the 1D graph, which is *deeply* cursed because it means reading the value requires a cubic root solve

second, I don't have a clear design for splines with multiple interpolated values for example, if you want to animate a camera for a cutscene, you might want to animate: - position - rotation - FoV - volume of some random sound effect, idk ideally they should share the same timeline (splineline?)

I've been noodling around with my spline plugin again previously I had a very math type separation between all the different spline types (bezier/cat-rom/bspline etc.) but I've realized it's a lot more intuitive to just provide one canonical Spline™️ with controls for shape, constraints, and handles

View full thread

it also makes sense from a serialization perspective, if your path is static, you shouldn't need to store the control vertices or vice versa - you don't need to serialize the path if you've already got the control points to generate it with

there's a few edge cases that are kinda tricky though first, the spline types available don't make sense for all data types. for example, linear/smooth works for all of them, but chain/trajectory/track only makes sense in 2D and above, and doesn't make sense at all for quaternion splines

I've been noodling around with my spline plugin again previously I had a very math type separation between all the different spline types (bezier/cat-rom/bspline etc.) but I've realized it's a lot more intuitive to just provide one canonical Spline™️ with controls for shape, constraints, and handles

View full thread

from this perspective, a spline has two parts: 1. a hull of control vertices (the thing you manipulate) 2. a path formed by piecewise curves a spline is then more of a path *generator* based on a set of control vertices maybe obvious in hindsight but, this separation made my code so much cleaner

it makes sense in terms of sampling too - getting a value in a path shouldn't require knowing anything about the control points, only the path itself

I've been noodling around with my spline plugin again previously I had a very math type separation between all the different spline types (bezier/cat-rom/bspline etc.) but I've realized it's a lot more intuitive to just provide one canonical Spline™️ with controls for shape, constraints, and handles

View full thread

what's neat is that they're really on a spectrum, from least to most control: - ultrasmooth (B-spline) - autosmooth (catmull-rom) - continuous (hermite/mirror-tangent bézier) - aligned (aligned tangent bézier) - free (bézier)

but probably the biggest breakthrough (and the reason for my latest refactor) is a logical separation between the control vertices you manipulate when you edit a spline, vs the path itself that you use for interpolation

I've been noodling around with my spline plugin again previously I had a very math type separation between all the different spline types (bezier/cat-rom/bspline etc.) but I've realized it's a lot more intuitive to just provide one canonical Spline™️ with controls for shape, constraints, and handles

View full thread

"Smooth" is by far the most advanced type here, because that's where all the different classic splines will live catmull-rom/B-spline/bezier/hermite are all variants of a smooth spline, with different methods of control vs what is automatically calculated

I've been noodling around with my spline plugin again previously I had a very math type separation between all the different spline types (bezier/cat-rom/bspline etc.) but I've realized it's a lot more intuitive to just provide one canonical Spline™️ with controls for shape, constraints, and handles

it effectively makes the different spline types preset configurations rather than canonical Types in and of themselves they are still split by the data type they interpolate (float vs float3 vs quaternion etc.), but getting rid of the spline types significantly reduces the number of cases

and from a non-nerd user perspective, you probably just want to start out with "smooth path through these values" instead of learning what catmull-rom means or what a closed vs open B-spline is all about

she's studying very diligently for example, I saw her process in figuring out that you can't actually enter that big hole at the front of cameras

normally I wouldn't clarify that no children were kicked in the face in the making of my projects but in a society normalizing kicking children in the face ig I'll label too

Eniko Fox@enikofox.com

tbh if you're someone making videos on YT especially making videos about things you made using coding on YT it might be worthwhile to lead with a "made by humans, no generative AI was used in the creation of this video/game/whatever" splash screen

and with that I'm starting an experimental detox week 1. heavily reduced internet use 2. no adhd meds for a bit 3. cat photography walk every day

see I've tried using AI for coding I'd like to think I'm special and immune to AI addiction, but the reality is probably just that I'm incapable of feeling any kind of attachment or pride in AI generated code I feel like it pollutes the project and displaces my own motivation, I just don't want it

View full thread

it's been useful to have AI review my code snippets and suggest stuff I might've missed, like "there's an API call called X so you don't need to manually do Y here" because in that case, I still write all my code, and the only purpose of the AI is to improve my craft, rather than substitute it

but to review AI generated code? that feels *super* dehumanizing and gross to me, it's actually so soul draining. it's literally just cleaning up after the robots instead of engaging in the craft I feel for the people being more or less forced to do this at work

see I've tried using AI for coding I'd like to think I'm special and immune to AI addiction, but the reality is probably just that I'm incapable of feeling any kind of attachment or pride in AI generated code I feel like it pollutes the project and displaces my own motivation, I just don't want it

the most useful stuff for me with AI is mostly as a search engine that understands natural language and with stuff like code and math, you can actually verify that it didn't make something up

I've had someone unironically argue that it's actually good if all these jobs are lost to AI because it's actually better when people make things as a hobby instead of "selling out"

RTGame 👑@rtgame.bsky.social

It would be lovely if the video games industry would let the people who make the games buy food

it puts me in a weird position making pro-capitalist arguments to people who are generally further to the right of me like, there's actually a lot of success stories of people making a living doing their craft, isn't that like, a good thing, that it's possible? work hard, get opportunities etc.?

everyone around me told me I was crazy for wanting a carpeted floor, especially living with three (now four) cats. (basically nobody in sweden has carpeted floors anymore) I have 0 regrets!! extremely worth it, they all play and run around so much more than they ever did on hardwood floor ❤️

detective toast@toast.acegikmo.com

people said pet stains would get stuck forever and it would trap smells, but, you can literally just, wet vac + use stain removal. it's extremely effective! the only stain so far I haven't been able to fully remove was literally my fault, spilling tea 💀

Freya Holmér reposted

Replying to @freya.bsky.social

im in my 2nd year of (gamedev) university now, and its going great. Im learning so much in terms of programming and also other niches. we have a course where we gotta make a game for the NES in assembly, and another where we make a path tracer! and none of these courses and teachers support ai!

I've been wanting to put my whole position on AI in one place so that I can link it but I'm kinda struggling to find a good structure flowcharts are too sprawling, but it's nice to have a hierarchy! text is too linear, but it's a lot more readable!

View full thread

I think framing it in the Q&A format, ie: writing out my responses to common AI questions, is probably the most useful format for others to read, because it will likely help people develop their own thoughts and bring some of those arguments with them

actually obsidian has some useful in-page linking feature, so I could even make every response short and just in-page link to the section that has my position, kinda like: Q: is thing? A: yes because [#X] and [#Y] seem inevitable and then below the Q&A: # X bla bla bla bla # Y blaaaa blaa bla

I've been wanting to put my whole position on AI in one place so that I can link it but I'm kinda struggling to find a good structure flowcharts are too sprawling, but it's nice to have a hierarchy! text is too linear, but it's a lot more readable!

I'm also not sure if it should have like, a narrative thread like an essay, or if it should be a very distilled prop logic hierarchy of my exact position and why, or if it should be a list of common pro-AI arguments along with my response to each of them it's hard to do all three at the same time

what if I write it in C# using interfaces and then maybe that will automatically show errors where there's flaws in my logic what if lean but arguments instead of math