|
3D-программирование Вопросы, касающиеся программирования 3D мира |
28.03.2007, 00:44
|
#1
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
RotateTexture
Вращает текстуру за угол, а я хочу чтоб она вращалась по центру.
это можно как нибудь сделать для меша с UV координатами вертекса
00
01
10
11
Э, квада?
|
(Offline)
|
|
28.03.2007, 09:07
|
#2
|
Знающий
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений (для 70 пользователей)
|
Re: RotateTexture
Можно так
Function RotateTexture2(Texture, Angle#)
RotateTexture(Texture, Angle)
Local Dx# = Cos(Angle) / 2
Local Dy# = Sin(Angle) / 2
PositionTexture(Texture, (Dx - 0.5) - Dy, (Dy - 0.5) + Dx)
End Function
А через текстурные координаты - вращение 4x4 матрицы ищи.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.09.2011, 18:00
|
#3
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: RotateTexture
блин, я несколько часов выводил эту формулу для спрайта, у которого размеры были 2 на 2 (вывел). Потом 20 минут пытался адаптировать для текстуры с вариацией координат 1 на 1 и обратным углом вращения.
Как удобно упал вчера сервер - простор для творчества никогда ещё не был так широк
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.09.2011, 18:31
|
#4
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: RotateTexture
так может сразу DROP DATABASE; и дело с концом? у всех сразу появится много времени на свои проекты
|
(Offline)
|
|
Эти 5 пользователя(ей) сказали Спасибо ffinder за это полезное сообщение:
|
|
22.10.2011, 20:38
|
#5
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: RotateTexture
Function RotateTexture3(Tex%,x#,y#,ang#)
RotateTexture Tex,ang
Local u#=x-x*Cos(ang)+y*Sin(ang)
Local v#=y-x*Sin(ang)-y*Cos(ang)
PositionTexture Tex,-u,-v
End Function
демо
Graphics3D 800,600,32
SetBuffer BackBuffer()
Global Cube=CreateCube()
Global Camera=CreateCamera()
PositionEntity Camera,0,0,-4
Global light=CreateLight()
Global Texture%=0
Global XRt#,YRt#
While Not KeyHit(1)
If KeyHit(57)
If Texture
FreeTexture Texture
EndIf
XRt=Rnd(0,1)
YRt=Rnd(0,1)
Texture=GenTex(XRt,YRt)
EntityTexture Cube,Texture
EndIf
If Texture
RotateTexture3(Texture,XRt,YRt,MilliSecs()*0.001*5)
EndIf
RenderWorld()
Flip
Wend
End
Function RotateTexture3(Tex%,x#,y#,ang#)
RotateTexture Tex,ang
Local u#=x-x*Cos(ang)+y*Sin(ang)
Local v#=y-x*Sin(ang)-y*Cos(ang)
PositionTexture Tex,-u,-v
End Function
Function GenTex%(xp#,yp#)
Local Tex=CreateTexture(128,128)
Local CurBuf%=GraphicsBuffer()
Local xpd%=xp*128
Local ypd%=yp*128
SetBuffer TextureBuffer(Tex)
Color 255,255,255
Rect 0,0,TextureWidth(Tex),TextureHeight(Tex)
Color 0,0,0
Line xpd,0,xpd,TextureHeight(Tex)-1
Line 0,ypd,TextureWidth(Tex)-1,ypd
Color 255,0,0
Oval xpd-5,ypd-5,11,11
SetBuffer CurBuf
Return Tex
End Function
Управление - пробел.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:50.
|