|
11.01.2009, 12:05
|
#1
|
ПроЭктировщик
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений (для 44 пользователей)
|
Текстурные координаты в примитивах
Для создания примитивов я использую стандартные функции класса Mesh( Mesh.Box, Mesh.Sphere, ... ). Но я обнаружил, что в создаваемых примитивах отсутствует информация о текстурных координатах . Их можно както рассчитать? Я понимаю, как для куба, а вот для сферы, тора или конуса?
__________________
Я бы изменил мир, но Бог не даёт исходников...
|
(Offline)
|
|
11.01.2009, 12:27
|
#2
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Текстурные координаты в примитивах
|
(Offline)
|
|
11.01.2009, 13:52
|
#3
|
|
Ответ: Текстурные координаты в примитивах
конечно криво, но сфера и конус собсно являются цилиндром без верхних граней, цилиндр является прямоугольником замкнутым на себя, для сферы я использовал это свойство, она генерировалась перебирая сферические координаты с некоторым шагом и раставляя таким образом индексы, если поделить текущую сферическую координату на отрезок которую она проходит получим текстурную координату (тоесть края прямоугольника имели положенные им 4 координаты (0,0) (1,0) (0,1) (1,1) )
для тора возможно применения схожего метода, главное понять как действительно хочешь чтобы текстура накладывалась, а методов её наложения куча
|
|
|
11.01.2009, 18:22
|
#4
|
ПроЭктировщик
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений (для 44 пользователей)
|
Ответ: Текстурные координаты в примитивах
Сообщение от Mr_F_
это может быть полезным
|
Это немного криво.
jimon, я ничего не понял к сожалению, я не особо шарю в математике, и даже хз, что такое сферическая координата
__________________
Я бы изменил мир, но Бог не даёт исходников...
|
(Offline)
|
|
11.01.2009, 18:29
|
#5
|
|
Ответ: Текстурные координаты в примитивах
http://ru.wikipedia.org/wiki/Сфериче...тема_координат
я сферу создавал так :
case PMT_SPHERE:
{
s32 Detail = 50;
f32 R = 1;
s32 VtSize = Detail * Detail;
video::jeVertex_T2F_C4F_N3F_V3F * Vt = NULL;
JENEW_A(Vt,video::jeVertex_T2F_C4F_N3F_V3F,VtSize)
for(s32 V = 0; V < Detail; V++)
{
for(s32 U = 0; U < Detail; U++)
{
f32 Th = ((f32)V / (f32)(Detail-1)) * jePi;
f32 Ph = ((f32)U / (f32)(Detail-1)) * jePi * 2;
f32 STh,CTh,SPh,CPh;
jeSinCos(Th,STh,CTh);
jeSinCos(Ph,SPh,CPh);
s32 i = V*Detail + U;
Vt[i].Position.SetXYZ(R*STh*CPh,R*CTh,R*STh*SPh);
Vt[i].Color.SetColor(1,1,1,1);
Vt[i].u = ((f32)V / (f32)(Detail-1));
Vt[i].v = ((f32)U / (f32)(Detail-1));
}
}
s32 ItSize = (Detail-1)*(Detail-1)*6;
u32 * It;
JENEW_A(It,u32,ItSize)
s32 i = 0;
for(s32 V = 0; V < Detail-1; V++)
{
for(s32 U = 0; U < Detail-1; U++)
{
It[i++] = V*Detail + (U+1);
It[i++] = (V+1)*Detail + (U+1);
It[i++] = V*Detail + U;
It[i++] = (V+1)*Detail + (U+1);
It[i++] = (V+1)*Detail + U;
It[i++] = V*Detail + U;
}
}
video::jeMaterial * Material;
JENEW(Material,video::jeMaterial)
CSurface * Surface;
JENEW(Surface,CSurface)
Surface->SetSurface(CurrentRender,Material,EnableRenderOptimization);
Surface->CreateRenderOperations(video::VT_T2F_C4F_N3F_V3F,VtSize,Vt,video::IT_U32,ItSize,It);
JEDELETE_A(Vt)
JEDELETE_A(It)
CMesh * Mesh;
JENEW(Mesh,CMesh(CurrentRender))
Mesh->AddSurface(Surface);
Surface->Drop();
return Mesh;
}
|
|
|
Сообщение было полезно следующим пользователям:
|
|
12.01.2009, 23:44
|
#6
|
ПроЭктировщик
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений (для 44 пользователей)
|
Ответ: Текстурные координаты в примитивах
спс, попробую разобратся.
__________________
Я бы изменил мир, но Бог не даёт исходников...
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:37.
|