You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-13 13:31:48 +00:00
Fix normals computation at the 'seam' of smoothed sphere and cylinder shapes
(cherry picked from commit 509e03c821)
This commit is contained in:
committed by
Rémi Verschelde
parent
2c88a947c1
commit
5bd75bccae
@@ -973,6 +973,10 @@ CSGBrush *CSGSphere::_build_brush() {
|
|||||||
double u0 = double(j) / radial_segments;
|
double u0 = double(j) / radial_segments;
|
||||||
|
|
||||||
double longitude1 = longitude_step * (j + 1);
|
double longitude1 = longitude_step * (j + 1);
|
||||||
|
if (j == radial_segments - 1) {
|
||||||
|
longitude1 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
double x1 = Math::sin(longitude1);
|
double x1 = Math::sin(longitude1);
|
||||||
double z1 = Math::cos(longitude1);
|
double z1 = Math::cos(longitude1);
|
||||||
double u1 = double(j + 1) / radial_segments;
|
double u1 = double(j + 1) / radial_segments;
|
||||||
@@ -1328,6 +1332,9 @@ CSGBrush *CSGCylinder::_build_brush() {
|
|||||||
for (int i = 0; i < sides; i++) {
|
for (int i = 0; i < sides; i++) {
|
||||||
float inc = float(i) / sides;
|
float inc = float(i) / sides;
|
||||||
float inc_n = float((i + 1)) / sides;
|
float inc_n = float((i + 1)) / sides;
|
||||||
|
if (i == sides - 1) {
|
||||||
|
inc_n = 0;
|
||||||
|
}
|
||||||
|
|
||||||
float ang = inc * Math_PI * 2.0;
|
float ang = inc * Math_PI * 2.0;
|
||||||
float ang_n = inc_n * Math_PI * 2.0;
|
float ang_n = inc_n * Math_PI * 2.0;
|
||||||
|
|||||||
Reference in New Issue
Block a user