branchsbox-scenestaging/maincancel
43 Commits over 92 Days - 0.02cph!
Sync splines with PR branch
Fix spline editor to support vector3 scale
Bring spline code in sync with engine PR
Create separate spline class
Cleanup SplineComponent
Cleanup test scene
Merge roll, up, scale & tangent mode into spline point
Update spline tests scene
Update Test Scene
https://files.facepunch.com/lolleko/2025/January/10_18-17-TornAllosaurus.mp4
Cleanup spline component & tool naming
Base SplineModelRenderer of ModelRenderer
Allows Tint, MaterialOverrides and other options to be used on spline models
Enable Global Scale for spline models
https://files.facepunch.com/lolleko/2025/January/10_11-16-TintedAfricanparadiseflycatcher.png
Some Model Deformation optimization
Still only on the CPU but it's surprisingly fast
https://files.facepunch.com/lolleko/2025/January/09_21-39-VacantIridescentshark.mp4
Add spacing parameter
https://files.facepunch.com/lolleko/2025/January/09_23-00-AngelicVipersquid.mp4 🚂
Update Spline Collider to match new SplineModel Deformation
https://files.facepunch.com/lolleko/2025/January/09_23-59-LinearAlligator.png
Delete legacy/unused deformation code
More customization for tangent frames/up vectors
This is useful for stuff like loops.
1. Default Up Vector (0,0,1) -> twisting artifacts:
https://files.facepunch.com/lolleko/2025/January/09_17-52-OrangeredCowrie.png
2. Automatic up vectors using rotation minimizing frames (RMF)
https://files.facepunch.com/lolleko/2025/January/09_17-53-DesertedClam.png
3. Manual up vectors/frames:
https://files.facepunch.com/lolleko/2025/January/09_17-52-MisguidedWryneck.png
Move spline deformation away from vertex shader to allow deformation of arbitrary models
Deform spline models on the CPU like a cavemen.
Use RMF to avoid twisting artifacts.
Will move this to a compute shader eventually.
https://files.facepunch.com/lolleko/2025/January/08_10-35-AgileHectorsdolphin.png
Play around with tangent frame calculation using Parallel Transport / RMF
https://files.facepunch.com/lolleko/2025/January/07_20-51-CriminalBlackfish.mp4
Fix some NREs in spline model renderer
Binary search for accessing splines at a distance
Remove GetNormal function from spline component for now
There are so many different ways to calculate normals for splines (Frenet-Serret-Frame, Fixed Up Vector, RMF/Parallel Transport...)
Not sure yet, which one we want to offer.
Fix spline loop (de)serialization
Cleanup spline components and test scene
Rename some vars in spline math
Bump hitbox of spline line
Align tangent mode names with exiting curve class
Fix roll and scale changes not invoking spline changed
More spline undo improvements
Improve spline editor undo
Bounding box calcualtion for spline components
Defocus input when switching spline point
Cleanup Spline Editor
Proper undo support for gizmo initiated changes
Frustum cull Gizmos as they are fairly expensive to create.
Optimize Gizmo drawing.
Spline Collision Support BoneTransforms and Rotation
Spline collider now provides accurate collision for any shape and any rotation.
Deformed/Twisted citizens with collisions:
https://files.facepunch.com/lolleko/2024/December/23_12-34-DishonestQuagga.png
https://files.facepunch.com/lolleko/2024/December/23_12-34-HorribleNightheron.png
Spline collider now supports all collision shapes
Added custom subdivision logic for each shape.
How much subdivision/collision geometry is created can be controlled by the user via property.
Performance still sucks, but optimization should be easy going forward.
Individual bone/shape transforms are currently not working.
https://files.facepunch.com/lolleko/2024/December/19_18-49-AnotherDrongo.png
https://files.facepunch.com/lolleko/2024/December/19_18-48-SecretNuthatch.mp4
Filter duplicate vertices after spline deformation and before qhull
Hull based spline collisions
Allows proper physics simulation of the spline models.
Works okay for boxes, still need to figure out why izabu quick hull struggles with more complex shapes.
https://files.facepunch.com/lolleko/1b1811b1/sbox-dev_YFlVR7whUv.mp4
PoC spline collisions
Currently just super hacky static mesh/model collision
https://files.facepunch.com/lolleko/1b1711b1/sbox-dev_03QtKgtfYW.mp4
Deform spline model bounds to ensure accurate frustum culling
https://files.facepunch.com/lolleko/1b1611b1/sbox-dev_FuFEWnL2FA.png
https://files.facepunch.com/lolleko/1b1611b1/sbox-dev_xrWVBJicsC.png
Use sceneobjects for spline model instances instead of Graphics.Draw
Fix duplicating a spline point with shift not copying roll & scale
Remove stackalloc (it's not whitelisted)
First pass on spline model deformation
https://files.facepunch.com/lolleko/1b1611b1/sbox-dev_pXP1R0vFzj.mp4
https://files.facepunch.com/lolleko/1b1611b1/sbox-dev_1SBGUutgNa.png
Nav Basic: Reduce rotation on test slope to account for floating point inaccuracies
Splines: Add working state from a couple of months ago (pre FP)
Basically a port of my C++ spline library wrapped with a component + editor tool.
Still requires some API and Editor UX cleanup.
https://files.facepunch.com/lolleko/1b0911b1/sbox-dev_0KaDTZAF7l.mp4
Add navigation obstacle scene and examples