tu, tv текстур

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

tu, tv текстур

Сообщение Vovik » 19.01.2005 (Ср) 18:09

Все не могу понять, как они рассчитываются в редакторах карт? Для прямоугольника - все класс: формула расстояния между точками в пространстве... а если сдвинуть вершину, то ерунда какая-то - текстура перекашивается, а должно взять только ровный кусок... :roll:

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 20.01.2005 (Чт) 11:05

Находишь плоскость, в которой лежит полигон. Проецируешь на нее вершины. Берешь полученные координаты на плоскости, умножаешь на любой масштаб - получаешь tu и tv.
Но учти, что затекстурить меш, содержащий непрямые углы между плоскостями так, чтобы текстура стыковалась на всех гранях, невозможно.

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 20.01.2005 (Чт) 15:17

Mikle писал(а):Находишь плоскость, в которой лежит полигон. Проецируешь на нее вершины. Берешь полученные координаты на плоскости, умножаешь на любой масштаб - получаешь tu и tv.
Но учти, что затекстурить меш, содержащий непрямые углы между плоскостями так, чтобы текстура стыковалась на всех гранях, невозможно.
А как же узнать, в какой она плоскости? А если объект повернут под небольшым углом, то поидее tu tv уже изменятся, а должно быть все-равно одинаковым.... :roll:

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 21.01.2005 (Пт) 16:52

Да как же узнать? :cry: :cry:

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 22.01.2005 (Сб) 18:26

Ты опиши задачу по-конкретнее. Если у тебя действительно редактор карт, то там главное, чтобы швов не было, особенно для ландшафтов. Тогда просто за tu и tv принимают X и Z координаты, а Y - высоту, игнорируют.
А правильно, в смысле пез перекоса текстуры, треугольник текстурится так: принимаем, что tu1 и tv1 (первая вершина) равны нулю. Находим длину стороны 1-2 с помощью D3DXVec3Length. tu2=0, tv2= эта самая длина. Проектируем 1-3 на 1-2, длина проекции - tv3, а tu3 вычисляем из треугольника, где 1-3 - гипотенуза, а tv3 - катет.
В D3DX нет проекции вектора на вектор, ее можно сделать так:
(проектируем А на В)
Нормализуем В (D3DXVec3Normalize)
Скалярно умножаем А на нормализованный В (D3DXVec3Dot)
Умножаем нормализованный В на полученную величину (D3DXVec3Scale)
Результат - проекция А на В.

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 31.01.2005 (Пн) 0:33

Чет не выходит :cry: Я уже столько намучался, а толково не получается... в редакторе столько сделано, не могу же я на этом стопаритьс.... Майкл, не мог бы ты навоять маленький пример? :roll:

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 01.02.2005 (Вт) 9:42

Ты же так толком и не объяснил пример чего, редактора (карт, моделей), или просто текстурирования произвольного треугольника?

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 01.02.2005 (Вт) 14:26

Mikle писал(а):Ты же так толком и не объяснил пример чего, редактора (карт, моделей), или просто текстурирования произвольного треугольника?
Редактор карт, типа Q3BSP... или CS BSP...

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 01.02.2005 (Вт) 17:25

Не слабо...

не мог бы ты навоять маленький пример?

Редактор карт, типа Q3BSP... или CS BSP...

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 01.02.2005 (Вт) 17:48

Что-то типа... я же не говорю, что прям так и будет.... там вообще свой формат карт.... редактор похож на ValveHammer(чем-то).... :roll: Так что скажешь? :roll:

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 02.02.2005 (Ср) 18:18

Майкл, так сможешь помочь? :oops:

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 02.02.2005 (Ср) 21:34

Vovik, я полагаю Майкл подумал что ты его просишь написать тебе пример редактора, вот и не появляется тут =) Ты ему точно скажи, что тебе надо, может он и сделает =)))
ХЎ

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 02.02.2005 (Ср) 21:47

Во блин, что вышло!!! Майкл, ты меня прости грешного! Я, наверно, когда читал твой пост был пьян и не понял смысл сказанного тобой....
Мне показалось, что ты говоришь, что я мол не объяснил что пишу и просишь узнать все-таки что это........
Я не прошу написать пример редактора(это я типа пишу редактор).. А простой и наглядный пример для рассчета tu,tv ...Можно даже на прямоугольник, а не отдельный полигон.... Должна накладываться так: 1:1... Т.е. если тестура 64Х64 и прямоугольник 64Х64 (тобишь квадрат), то она полностью натягивается, без всяких вопросов... У меня сложность вызывает натягиваение на произвольный прямоугольник.....

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 03.02.2005 (Чт) 16:12

Вот переделал демку камеры:

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 03.02.2005 (Чт) 21:57

Mikle писал(а):Вот переделал демку камеры:
Большое тебе спасибо, Майкл!!! Ты, как всегда - на высоте!!! :D

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 04.02.2005 (Пт) 20:16

Майкл.. Просчитать, то просчитал... а как теперь вертеть текстуру, допустим на 90 градусов или , если мона на произвольный угол, но не пересчитывая сами ту тв? :roll:
P.S. Все объекты состоят из четырехугольников.... других нет( ни треугольников, ничего)... поэтому у меня все работает только для четырехугольника....

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 04.02.2005 (Пт) 21:07

у... Вовик, тут же простая тригонометрия...
ХЎ

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 04.02.2005 (Пт) 21:38

d3drm писал(а):у... Вовик, тут же простая тригонометрия...

d3drm
примерчик найдётся?
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 04.02.2005 (Пт) 22:42

можно наклепать, если надо. сделать например так: виртуально представить плоскость с неким кол-вом тайлов текстуры, причем наш прямоугольник лежит на одном из этих тайлов. Именно прямоугольник на текстуре, а не так как мы привыкли. Затем поворачиваем это прямоугольник и "видим" куда ложаться его точки - то есть имеем координаты для текстуры. Вот теория, на практику перевести?
ХЎ

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 04.02.2005 (Пт) 22:50

d3drm писал(а):...Вот теория, на практику перевести?

Угу!
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 05.02.2005 (Сб) 10:39

Код: Выделить всё
Private Sub TriangleTex(nTri As Long, nVert As Long, texScale As Single)

Тут nTri - номер треугольника для текстурирования, texScale - масштаб текстуры, а nVert - число от 0 до 2, выбор первого вертекса, иначе говоря выбор ребра, вдоль которого вытягивается текстура. Если все состоит из четырехугольников - nVert достаточно, поворот на произвольный угол не нужен.


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList