Генерирую процедурно UV-сферу (алгоритм: https://www.danielsieger.com/blog/2021/03/27/generating-spheres.html). Делаю ей UV по

вертексам
for (const auto Vertex : SphereVertices)
{
SphereUVs.Add(FVector2D(FMath::Atan2(Vertex.Z, Vertex.X) / PI / 2, FMath::Acos(Vertex.Y / Radius) / PI));
}

но есть такой артефакт сбоку. Помогите пожалуйста, как пофиксить🙏🙏🙏 ну или изза чего такая проблема может быть?

10 ответов

11 просмотров

Тебе нужны uv генерить с интервалом 0,1/N,(1-1/N). У тебя последняя полуокружность даёт в UV - 1, а первая - 0. Получается что где встречается первая и последняя, там используются полный координаты.

1000-7- Автор вопроса

Понял, принял. Большое спасибо) буду пробовать)

Да, а должно быть на последнем полукруге (1 - 1/N) в UV. N - количество полуокружностей. Ща подпишу картинку, что бы лучше было видно.

А кстати тут получается что либо каким-то вершинам нужно иметь одновременно UV координаты с обоих сторон текстуры (либо вершины должны быть продублированы), либо есть какой-то метод треугольник за-wrap-ить через границу текстуры? Я не сварщик вообще, но интересная проблема, интересно как такое решается (про то как смена интервала поможет тоже не понял)

1000-7- Автор вопроса

Ну мне кажнтся сделать интервалом попроще будет)

Я не понимаю как это работает (буду рад картинке про которую писали выше)

1000-7- Автор вопроса

Я тоже) Как сделаю код то кину)

Это легче всего представить на «квадратном шаре» у которого всего 4 стороны:D у него, по сути, 4 ребра. Он использует шаг 1/(N-1), где N - количество рёбер. И получается на каждом ребре UV по оси X у него равно 0, 0.333, 0.666, 1. И между 4ым и 1ым ребром у тебя есть переход 1-0 по uv. А нужно использовать шаг 1/N, тогда UV на рёбрах будет 0, 0.25, 0.5, 0.75. И получается что между четвёртым ребром будет нормальная UV 0.75-1.

1000-7- Автор вопроса

Пасеба еще раз))

Кажется дошло, спсибо

Похожие вопросы

Обсуждают сегодня

Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
Всем привет, есть небольшая проблема Есть такой скрипт document.addEventListener('DOMContentLoaded', function () { const sliderTabs = document.querySelectorAll('.s...
A da
8
@go1337 @dblackCat Привет. Все ещё дрочусь с fastpanel. Добавил второй домен который должен смотреть в рут того же сайта, но так как это просто домен, а не сайт, я не могу ему...
Ross 🦴
9
До речі, в ево нема можливості чи якого розширення щоб з адмінки з телефона зайти і терміново щось в верстці поправити?
Женя
7
Ну, так - шо, грамодяне-эрленгяне? Все - готовы подписаться под словами "гуру" на счёт трудности применения POSIX threads и про, конкретно, мьютексы, что "... недопоставишь м...
Wlad
21
кто-нибудь пользуется тайм-трекерами во время работы? так много разных нагуглил, может есть что-то популярное
Lencore
8
Пацаны. Я разрабатываю софт для инвайтинга на телетон, и столкнулся с такой проблемой, в один из чатов не могу приглашать никого, не дает добавлять, в то же время через официа...
Kernel Panic
11
Скажите, а кому нужен Currency как отдельный плагин вместо полноценного ecommerce в OctoberCMS? Кто-то использует его уже или планирует в будущем? Может я что-то не понимаю?
Igor
13
Розмовами про Рево мені нагадали часи, коли шаблони правилися прямо в адмінці. Хто в курсі, чому відійшли від цієї практики, так блейд не працює? Доволі зручно ж було (інколи)
Женя
3
привет, как сбилдить свифт прогу статически? делаю -Xswiftc -static-executable - получаю такую ошибку: /lib/aarch64-linux-gnu/libc.a(pthread_join_common.o)(.note.stapsdt+0x14...
🦊 Fox 🌸 🌸
6
Карта сайта