|
3D-программирование Вопросы, касающиеся программирования 3D мира |
04.06.2007, 21:17
|
#1
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Как "спроецировать" картинку на плоскость?
Доброго вам времени суток, вот опять я задаю ещё один вопрос.
В-общем, у меня есть плоскость и картинка. Я хочу, чтобы картинка "проецировалась" на эту плоскость так, как будто плоскость - это эдакое "окошко", через которое видно кусочек картинки. На рисунке я даже чуть поменял прозрачность шоп было понятно. Так же обозначил индексы точек. Подскажите, какая должна быть текс. развёртка в таком случае у плоскости, а ещё лучше скажите принцип по которому расставлять точки по текс. координатам. Сам уже неделю с этой проблемой м#%охаюсь, наконец решил спросить на форуме - по тому принципу, по которому я делаю вылазит только набор глюков....
Рисунок - вот:
Я думаю, что Текстурные координаты должны располагаться так же, как и по экрану, отсюда способ решения проблемы: мы находим координаты точки на экране при помощи 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]
Если кому интересно, то вот работающий исходнег сего, там всё прокомментировано.
Вопрос: это принцип неверный или я неправильно написал функцию?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
05.06.2007, 14:32
|
#2
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Может, я непонятно объяснил?
Вот ещё для облегчения понимания что мне надо, пример, намалёванный мной в 3Д Студио Макс 8.0. Всё внимание на вид Front. Назначьте плоскости какую-нить картинку, неважно какую, (для тех, кто не разбирается в Максе - просто перетащите картинку из "проводника" на объект в Максе), а потом эту же картинку назначьте в фон окна проекции Фронт (Alt+B, затем жмём кнопку Files и выбираем нашу картинку) - и вы поймёте, о чём я тут говорил. В Блице делаю по тому же принципу, но ничего не выходит Может, это связано с какими-то особенностями Блитза?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
05.06.2007, 19:51
|
#3
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Разобрался
Всё, уже не надо, разобрался, работает
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
05.06.2007, 21:09
|
#4
|
Дэвелопер
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений (для 110 пользователей)
|
Re: Как "спроецировать" картинку на плоскость?
Поделись с остальными решением.
|
(Offline)
|
|
06.06.2007, 21:54
|
#5
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: Как "спроецировать" картинку на плоскость?
Не знаю, чем это вызвано, но проблема решилася разбиением плоскости на сегментики (типы как в клеточку). Глюки эти остались, но размер и заметность их намного уменьшилась. Кстати, у меня получилось то, для чего я эту проекцию делал (рябь на воде ещё усилил путём прибавления к U и V координатам рандомного числа):
Гы, всего 2 рендера за цикл (против старых 8-ми с хреновой кубомапой)
З.Ы. Интересно было бы всё-таки разобраться, чем вызваны искажения, ведь все вертексы попадают именно на то место текстуры, куда им и положено (проверял 100 раз), на этом и основано то, что при разбиении на сегменты глюки уменьшаются. Возможно, это особенности Блитза? Может, Diplomat или jimon что-то сажут?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
06.06.2007, 23:19
|
#6
|
Дэвелопер
Регистрация: 19.03.2006
Сообщений: 1,241
Написано 10 полезных сообщений (для 17 пользователей)
|
Re: Как "спроецировать" картинку на плоскость?
Гы, всего 2 рендера за цикл (против старых 8-ми с хреновой кубомапой)
|
Для воды я бы сделал не чаще чем 1 раз в секунду, ато и менше!
|
(Offline)
|
|
06.06.2007, 23:22
|
#7
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Как "спроецировать" картинку на плоскость?
Я чо то скажу
Я: CameraProjMode cam,2
|
(Offline)
|
|
07.06.2007, 00:03
|
#8
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: Как "спроецировать" картинку на плоскость?
HolyDel, при чём тут изометрия?
в строчке
CameraProjMode cam,2
cam - это камера рендера воды, как я понял?
vlad, фигзнат, у меня вроде производительность норм.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
07.06.2007, 01:07
|
#9
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Как "спроецировать" картинку на плоскость?
при том что именно изометрия вызывает то что можно наблюдать в примере кода из первого поста, и это (глюком назвать не могу) уменьшается при разбиении плоскости.
т.е. та часть тексы что ближе к нам становится больше (при изометрическом рендеринге, а не ортографическом) и поетому получается несостыковка (ето особенно заметрно на прилегающих гранях полигона).
добавь ету строчку в свой пример из первого поста ("глюков" конечно будет еще больше, но смысл станет ясен).
|
(Offline)
|
|
07.06.2007, 22:05
|
#10
|
Дэвелопер
Регистрация: 19.03.2006
Сообщений: 1,241
Написано 10 полезных сообщений (для 17 пользователей)
|
Re: Как "спроецировать" картинку на плоскость?
vlad, фигзнат, у меня вроде производительность норм.
|
Это потому что у тебя на экране ничего нет!!!
Самолет и дерево- пройдут резко, ты даже и незаметиш... а когда будет дохрена моделей что единственый рендер трещит по швам, и у тебя будет второй!!!
Суть в том что производительность уподет почти в двое!
Выход- рендер воды обновлять не сильно часто, до минимума свести дальность прорисовки 2 камеры, и по возможности во время рендера воды заменять многополегонные модели на лоу поли модельки !!!
И будет у тебя быстрая водичка
|
(Offline)
|
|
07.06.2007, 22:29
|
#11
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: Как "спроецировать" картинку на плоскость?
vlad, у меня уже есть удобная система ЛОДов, так что с этим проблем не будет
Ну, а так же уу меня есть некоторые вычисления, которые второй раз за тик происходить не будут - а значит, вдвое производительность не упадёт (максимум - в 1,3-1,5 раза)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
08.06.2007, 03:30
|
#12
|
Бывалый
Регистрация: 22.09.2005
Сообщений: 634
Написано 36 полезных сообщений (для 102 пользователей)
|
Re: Как "спроецировать" картинку на плоскость?
vlad
нельзя обновлять реже чем 1 раз за кадр, т.к. комера вертится постоянно, это же не кубмапа
во 2м рендере отражение рендерится в меньший РТ, также можно уменьшить детализацию и скрыть малозаметные объекты.
ABTOMAT
Всё это было сделано почти 2 года назад и лежит в открытом виде, причём работает быстрее
|
(Offline)
|
|
08.06.2007, 16:14
|
#13
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: Как "спроецировать" картинку на плоскость?
НУБ, я знаю, что Ashadow выглядит намного лучше того, что у меня и работает быстрее за счёт юзанья шейдеров 1.1 , но я, закончив делать свою игру (дай Бог, это всё-таки случится) хочу сказать:
"А вот я всё делал сам и не использовал ничего стороннего"
Так шо извиняй...
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
08.06.2007, 19:50
|
#14
|
Бывалый
Регистрация: 22.09.2005
Сообщений: 634
Написано 36 полезных сообщений (для 102 пользователей)
|
Re: Как "спроецировать" картинку на плоскость?
ABTOMAT
аа, ну так бы сразу и сказал
Но тогда зачем ты постоянно задаёшь вопросы на форуме, ведь тогда получается, что ты это делаешь не сам.
|
(Offline)
|
|
08.06.2007, 21:04
|
#15
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: Как "спроецировать" картинку на плоскость?
НУБ, как это не сам? По крайней мере, никто за меня ещё ничего не сделал, а вопросы я задаю чтобы понять то, чего я не знаю, иначе зачем тогда форум?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:00.
|