From 3b16d96d821e1652e8ffc6f9cbd1f3092e4037a0 Mon Sep 17 00:00:00 2001 From: BlueCube3310 <53150244+BlueCube3310@users.noreply.github.com> Date: Sun, 26 Oct 2025 11:40:30 +0100 Subject: [PATCH] Fix the material preview sphere --- editor/inspector/editor_preview_plugins.cpp | 39 ++++++++++++--------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/editor/inspector/editor_preview_plugins.cpp b/editor/inspector/editor_preview_plugins.cpp index 2a3b8e96351..779a7a7cc83 100644 --- a/editor/inspector/editor_preview_plugins.cpp +++ b/editor/inspector/editor_preview_plugins.cpp @@ -393,7 +393,7 @@ EditorMaterialPreviewPlugin::EditorMaterialPreviewPlugin() { int lats = 32; int lons = 32; - const double lat_step = Math::TAU / lats; + const double lat_step = Math::PI / lats; const double lon_step = Math::TAU / lons; real_t radius = 1.0; @@ -428,22 +428,27 @@ EditorMaterialPreviewPlugin::EditorMaterialPreviewPlugin() { Vector3(x0 * zr0, z0, y0 * zr0) }; -#define ADD_POINT(m_idx) \ - normals.push_back(v[m_idx]); \ - vertices.push_back(v[m_idx] * radius); \ - { \ - Vector2 uv(Math::atan2(v[m_idx].x, v[m_idx].z), Math::atan2(-v[m_idx].y, v[m_idx].z)); \ - uv /= Math::PI; \ - uv *= 4.0; \ - uv = uv * 0.5 + Vector2(0.5, 0.5); \ - uvs.push_back(uv); \ - } \ - { \ - Vector3 t = tt.xform(v[m_idx]); \ - tangents.push_back(t.x); \ - tangents.push_back(t.y); \ - tangents.push_back(t.z); \ - tangents.push_back(1.0); \ +#define ADD_POINT(m_idx) \ + normals.push_back(v[m_idx]); \ + vertices.push_back(v[m_idx] * radius); \ + { \ + Vector2 uv; \ + if (j >= lons / 2) { \ + uv = Vector2(Math::atan2(-v[m_idx].x, -v[m_idx].z), Math::atan2(v[m_idx].y, -v[m_idx].z)); \ + } else { \ + uv = Vector2(Math::atan2(v[m_idx].x, v[m_idx].z), Math::atan2(-v[m_idx].y, v[m_idx].z)); \ + } \ + uv /= Math::PI; \ + uv *= 4.0; \ + uv = uv * 0.5 + Vector2(0.5, 0.5); \ + uvs.push_back(uv); \ + } \ + { \ + Vector3 t = tt.xform(v[m_idx]); \ + tangents.push_back(t.x); \ + tangents.push_back(t.y); \ + tangents.push_back(t.z); \ + tangents.push_back(1.0); \ } ADD_POINT(0);