Fix T88015: Round end caps on Freestyle lines not shaped as documented
This might be an artistic choice, but round end caps are supposed to be a "half circle centered at the end point of the line" as documented here: https://docs.blender.org/manual/en/dev/render/freestyle/ parameter_editor/line_style/strokes.html#caps They are a shashed half circle instead. This patch makes this pure half circles [and also fixes the case where thickness of beginning was used for both beginning and end of the stroke] Maniphest Tasks: T88015 Differential Revision: https://developer.blender.org/D11340
This commit is contained in:
parent
7b954ba7a1
commit
7b6c77aa84
Notes:
blender-bot
2023-02-13 18:46:59 +01:00
Referenced by issue #88449, Blender LTS: Maintenance Task 2.93 Referenced by issue #88015, Round end-caps on Freestyle lines not working properly
|
@ -1153,11 +1153,9 @@ class RoundCapShader(StrokeShader):
|
|||
return
|
||||
# calculate the number of additional vertices to form caps
|
||||
thickness_beg = sum(stroke[0].attribute.thickness)
|
||||
caplen_beg = thickness_beg / 2.0
|
||||
nverts_beg = max(5, int(thickness_beg))
|
||||
|
||||
thickness_end = sum(stroke[-1].attribute.thickness)
|
||||
caplen_end = (thickness_end) / 2.0
|
||||
nverts_end = max(5, int(thickness_end))
|
||||
|
||||
# adjust the total number of stroke vertices
|
||||
|
@ -1169,7 +1167,7 @@ class RoundCapShader(StrokeShader):
|
|||
# reshape the cap at the beginning of the stroke
|
||||
q, attr = buffer[1]
|
||||
p, attr = buffer[0]
|
||||
direction = (p - q).normalized() * caplen_beg
|
||||
direction = (p - q).normalized() * thickness_beg
|
||||
n = 1.0 / nverts_beg
|
||||
R, L = attr.thickness
|
||||
for t, svert in zip(range(nverts_beg, 0, -1), stroke):
|
||||
|
@ -1180,7 +1178,7 @@ class RoundCapShader(StrokeShader):
|
|||
# reshape the cap at the end of the stroke
|
||||
q, attr = buffer[-2]
|
||||
p, attr = buffer[-1]
|
||||
direction = (p - q).normalized() * caplen_beg
|
||||
direction = (p - q).normalized() * thickness_end
|
||||
n = 1.0 / nverts_end
|
||||
R, L = attr.thickness
|
||||
for t, svert in zip(range(nverts_end, 0, -1), reversed(stroke)):
|
||||
|
|
Loading…
Reference in New Issue