Доброго вам времени суток, вот опять я задаю ещё один вопрос.
В-общем, у меня есть плоскость и картинка. Я хочу, чтобы картинка "проецировалась" на эту плоскость так, как будто плоскость - это эдакое "окошко", через которое видно кусочек картинки. На рисунке я даже чуть поменял прозрачность шоп было понятно. Так же обозначил индексы точек. Подскажите, какая должна быть текс. развёртка в таком случае у плоскости, а ещё лучше скажите принцип по которому расставлять точки по текс. координатам. Сам уже неделю с этой проблемой м#%охаюсь, наконец решил спросить на форуме - по тому принципу, по которому я делаю вылазит только набор глюков....
Рисунок - вот:
Я думаю, что Текстурные координаты должны располагаться так же, как и по экрану, отсюда способ решения проблемы: мы находим координаты точки на экране при помощи CameraProject, потом полученное делим на ширину и высоту экрана (картинка как бы на весь экран), получая при этом U и V координаты точки, а затем тут же их и применяем. Но всё равно ничего не получается. Вот функция:
[blitz]Function Project(cam,ploskost)
For i=0 To CountVertices(GetSurface (ploskost,1)) - 1
CameraProject cam, VertexX(GetSurface(ploskost,1),i) ,VertexY(GetSurface(ploskost,1),i) ,VertexZ(GetSurface(ploskost,1),i)
; проецируем координаты точки на экран
VertexTexCoords GetSurface(ploskost,1),i, ProjectedX()/GraphicsWidth(), ProjectedY()/GraphicsHeight()
; назначаем нужные текстурные координаты.
Next
End Function[/blitz]
Если кому интересно, то вот
работающий исходнег сего, там всё прокомментировано.
Вопрос: это принцип неверный или я неправильно написал функцию?
