What Procreate did for illustrators, I aim to do for 3D artists in game dev - a lightweight, intuitive, polished tool, obsessively focused on its target audience instead of trying to appeal to everyone
What Procreate did for illustrators, I aim to do for 3D artists in game dev - a lightweight, intuitive, polished tool, obsessively focused on its target audience instead of trying to appeal to everyone
got the standalone build of &half-edge looking fancy with a custom titlebar!! i had to go to win32 hell and back as some of you might've seen in #workspace, to support all the windows features, but it finally works well :SCWblushHEART:
okay I know using unity's UI system is like, the opposite vibe of handmade, but I'm really happy with the progress setting up the UI for &half-edge :heart_cat:
I finally tried their UITK, and it's actually pretty dang nice so far! It's very web-like, for better or worse, but it made me jump into that quick iteration web dev mode where you can just refresh and immediately see changes, which, I didn't think they'd pull off! maybe I had low expectations but, so far it's been nice! The big thing that remains to be seen is how well I can capture input and add all my custom handles into this, since all of that was done with the legacy IMGUI. ~~and also figuring out how to hook into win32 APIs from C# to get borderless windowed with proper resize controls and drop shadow when not full screen and all that which I'm not looking forward to :SCWWcrying: ~~
got trackball rotation for the rotation gizmo in &half-edge working now! lots of quaternion math today, which was fun!
there are a few things that made this an interesting case to implement:
given these constraints, there were lots of space transformation with quaternions I had to do which was kind fun to brush up on and finally grok more properly, so I wrote down some quaternion notes which might be useful to others too! my solution was basically:
w
delta = frameDelta * delta
, the order here ensuring delta is applied in the extrinsic space (swapping them would apply the rotation in the frameDelta's own intrinsic axes, which is, not what we want)delta
, and apply it to a world space rotation. In other words, we want to transform the delta
rotation as an intrinsic rotation applied to the camera's rotation c
, but as an extrinsic (world space) rotation.c * delta * c.conjugate()
, which, as applied to our initial cached world space starting orientation w
, we getc * delta * c.conjugate() * w
, aaaand then it works!thanks for coming to my ted talk :henlo:
got the rotation gizmo for &half-edge functional now! it uh, was a little broken bc I forgot to normalize a vector but now it's working c:
finally been able to do more work on the transform gizmo for &half-edge (really bad timing on that apartment move :SCWWcrying:). I've now got basic handle mouseover detection going, and migrated the handles to be less coupled with the IMGUI loop! the things up next are:
I'm gonna make a transform gizmo for my 3D modeling tool (tentatively called &half-edge ) for wheel reinvention jam! as with most things in life, it always starts with working out the math for intersection testing a cone in the fragment shader of a quad