How do you model bezier curves with the beam curve property

How is the beam curve property calculated and how would you use it to model a quadratic bezier curve?

1 Like

Roblox uses cubic bezier curves for beams
On the wiki page for beams it describes the curve sizes being calculated as:

P0 : The start of the beam, the position of Beam.Attachment0
P1 : Beam.CurveSize0 studs away from Beam.Attachment0 , in Beam.Attachment0 ’s positive X direction.
P2 : Beam.CurveSize1 studs away from Beam.Attachment1 , in Beam.Attachment1 ’s negative X direction.
P3 : The end of the beam, the position of Beam.Attachment1

Calculating these positions should be pretty self explanatory and would just involve multiplying the attachments CFrame by CFrame.new(curvesize0,0,0) or CFrame.new(-curvesize1,0,0)

You would then just use the bezier formula to complete the problem

function B(t,p0,p1,p2,p3)
	return (1 - t)^3*p0 + 3*(1 - t)^2*t*p1 + 3*(1 - t)*t^2*p2 + t^3*p3
end

beam.Parent.CFrame * B(t,attachment0.Position,(attachment0.CFrame*CFrame.new(curvesize0,0,0)).p,(attachment1.CFrame*CFrame.new(-curvesize1,0,0)).p,attachment1.Position)

Results in something like

10 Likes

Ah, i meant like how could you set the beam’s curve properties to a certain bezier curve not using it as a trajectory but using it as a projectile tracer.

I got it to work by just doing the inverse of that. lol.

2 Likes

Hey would you mind explaining how you got it to work Mr. Ratius Rat? Thanks.

Difficult to explain but essentially what you’re trying to do is changing the CFrame relative to the attatchment’s right vector and since it’s only quadratic i only edited the curvesize 1.

Hm Do you have a video of how your tracers came out looking? (Visually) Thanks for responding.