|
3D-программирование Вопросы, касающиеся программирования 3D мира |
19.03.2007, 20:38
|
#1
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Отражения в воде Что есчё за SetCubeFace?
Вот решил создать отражаюсчую воду у себя в игре. В одном хорошем месте нашёл код:
Function RenderWater(WaterMapTexture,cam,WaterCamera)
CameraProjMode cam,0
CameraProjMode WaterCamera,1
PositionEntity WaterCamera,EntityX(cam),1500,EntityZ(cam)
;Left view
SetCubeFace WaterMapTexture,0
RotateEntity WaterCamera,0,90,0
RenderWorld
CopyRect 0,0,WaterMapSize,WaterMapSize,0,0,BackBuffer(),TextureBuffer(WaterMapTexture)
;forward view
SetCubeFace WaterMapTexture,1
RotateEntity WaterCamera,0,0,0
RenderWorld
CopyRect 0,0,WaterMapSize,WaterMapSize,0,0,BackBuffer(),TextureBuffer(WaterMapTexture)
;right view
SetCubeFace WaterMapTexture,2
RotateEntity WaterCamera,0,-90,0
RenderWorld
CopyRect 0,0,WaterMapSize,WaterMapSize,0,0,BackBuffer(),TextureBuffer(WaterMapTexture)
;backward view
SetCubeFace WaterMapTexture,3
RotateEntity WaterCamera,0,180,0
RenderWorld
CopyRect 0,0,WaterMapSize,WaterMapSize,0,0,BackBuffer(),TextureBuffer(WaterMapTexture)
;up view
SetCubeFace WaterMapTexture,4
RotateEntity WaterCamera,-90,0,0
RenderWorld
CopyRect 0,0,WaterMapSize,WaterMapSize,0,0,BackBuffer(),TextureBuffer(WaterMapTexture)
RotateEntity WaterCamera,0,0,0
CameraProjMode WaterCamera,0
CameraProjMode cam,1
End Function
Смысл тут такой: каждый цикл рендерится шесть сторон куба: левая, правая, верхняя, нижняя, задняя, передняя. Потом это дело проецируется на воду в результате чего возникает отражение. Но вот фигня: отражение работает нормально токо в том случае, если: камера находится в определённой точке в пространстве и размер текстуры воды равен разрешению экрана (причем только квадратный). Если это соблюдается, то всё классно:
Но стоит мне поездить камерой как вылезают глюки:
Причём если двигать не камеру, а террайн, то глюки не лазут.
Вопрос: объясните подробно если кто знает, что это за таинственный куб, с которого всё проекцируется и как он устроен. Как заставить его перемещаться вместе с камерой (я так понял, глюки лезут из-за разницы их положений) и как растягивать текстуру? Поясню последнее. При рендере просто вырезается квадрат размера текстуры воды и нашлёпывается SetCubeFace'ом, а обрезанная часть теряется. Вопрос: как сжать (неважно, пропорционально или нет, но надо чтоб всё уместилось) текстуру до нужных размеров? И что это за таинственный куб? Жду ответов.
Чуть не забыл, код, которым создаётся вода:
WaterMapTexture=CreateTexture(watermapsize,watermapsize,128+256+48)
water=LoadTerrain("Testlevel\Matvey1w.bmp")
EntityTexture water,WaterMapTexture,0,0
EntityAlpha water,.9
Заранее спасибо если кто знает
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
19.03.2007, 21:10
|
#2
|
Разработчик
Регистрация: 09.01.2007
Сообщений: 217
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Отражения в воде Что есчё за SetCubeFace?
Юзай ScaleTexture
|
(Offline)
|
|
19.03.2007, 22:08
|
#3
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: Отражения в воде Что есчё за SetCubeFace?
Progger_Leo, спасибо. А как быть с кубом отражений? Кто-нить знает, что ето такое?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
19.03.2007, 22:22
|
#4
|
Дэвелопер
Регистрация: 19.03.2006
Сообщений: 1,241
Написано 10 полезных сообщений (для 17 пользователей)
|
Re: Отражения в воде Что есчё за SetCubeFace?
Ну ето простой способ сделать отражение(авто например)
|
(Offline)
|
|
19.03.2007, 22:35
|
#5
|
|
Re: Отражения в воде Что есчё за SetCubeFace?
|
|
|
20.03.2007, 03:20
|
#6
|
Бывалый
Регистрация: 22.09.2005
Сообщений: 634
Написано 36 полезных сообщений (для 102 пользователей)
|
Re: Отражения в воде Что есчё за SetCubeFace?
А потому, что нужно не копировать чужие исходники, а сесть и самому во всём разобраться
Нет смысла делать динамическое отражение на воду кубемапой
|
(Offline)
|
|
20.03.2007, 03:23
|
#7
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Отражения в воде Что есчё за SetCubeFace?
да, меня тоже этот вопрос беспокоил, чо они в стандартных примера сделали на воду отражение кубемапой?
SetCubeFace - задает грань для текстуры. чти Хелп.
|
(Offline)
|
|
20.03.2007, 03:54
|
#8
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
Re: Отражения в воде Что есчё за SetCubeFace?
Прошу прощения если не в тему. А не проще использовать AShadow?
|
(Offline)
|
|
20.03.2007, 10:26
|
#9
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: Отражения в воде Что есчё за SetCubeFace?
jimon, спасибо за картинку, теперь стало намного понятнее. Но как заставить этот куб двигаться вместе с камерой? Им вообще можно как-то управлять?
НУБ, вот я и пытаюсь разобраться.
JohnK, Ashadow - крайний вариант, я хотел сделать всё сам, даже если это будет смотреться хуже чем Ашэдоу. Зато своё будет
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
20.03.2007, 15:00
|
#10
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
Re: Отражения в воде Что есчё за SetCubeFace?
Могу сказать только одно: Не стоит изобретать велосипед.
|
(Offline)
|
|
20.03.2007, 15:02
|
#11
|
Оператор ЭВМ
Регистрация: 14.02.2007
Сообщений: 46
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Отражения в воде Что есчё за SetCubeFace?
Код:
WaterMapTexture=CreateTexture(watermapsize,waterma psize,128+256+4 water=LoadTerrain("Testlevel\Matv ey1w.bmp")EntityTexture water,WaterMapTexture,0,0EntityAlpha water,.9 Попробуй ещё так Voda=Createmiror()
Будет круто
|
(Offline)
|
|
20.03.2007, 16:07
|
#12
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: Отражения в воде Что есчё за SetCubeFace?
Но всё-таки можно как-нить этим кубом управлять или нет?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
22.03.2007, 16:31
|
#13
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: Отражения в воде Что есчё за SetCubeFace?
Уря! Исправил глюки с водой. Кто-нить знает как сделать колыхания волн на воде? (Так чтоб влияло на отражение)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
22.03.2007, 16:42
|
#14
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
Re: Отражения в воде Что есчё за SetCubeFace?
ABTOMAT, вот пример, попробуй под себя подстроить:
Graphics3D 640,480
SetBuffer BackBuffer()
camera=CreateCamera()
light=CreateLight()
RotateEntity light,90,0,0
cube=CreateCube()
PositionEntity cube,0,0,5
; Load anim texture
anim_tex=LoadAnimTexture( "wateranim.jpg",1,124,124,0,23 )
While Not KeyDown( 1 )
frame=MilliSecs()/30 Mod 23
EntityTexture cube,anim_tex,frame
pitch#=0
yaw#=0
roll#=0
If KeyDown( 208 )=True Then pitch#=-1
If KeyDown( 200 )=True Then pitch#=1
If KeyDown( 203 )=True Then yaw#=-1
If KeyDown( 205 )=True Then yaw#=1
If KeyDown( 45 )=True Then roll#=-1
If KeyDown( 44 )=True Then roll#=1
TurnEntity cube,pitch#,yaw#,roll#
RenderWorld
Flip
Wend
End
Картинку скинуть?
|
(Offline)
|
|
22.03.2007, 21:43
|
#15
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: Отражения в воде Что есчё за SetCubeFace?
JohnK, это будет влиять на отражения? Картинку всё равно дай (интересно чё там, может неплохо)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:13.
|